Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
openairinterface5G
Commits
6c4ffcff
Commit
6c4ffcff
authored
Nov 26, 2014
by
gauthier
Browse files
mutex inside
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@6108
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
32e7249c
Changes
4
Hide whitespace changes
Inline
Side-by-side
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
6c4ffcff
...
...
@@ -950,6 +950,7 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP)
int
octet_index
,
index
;
#endif
pthread_mutex_lock
(
&
l_rlc_p
->
lock_input_sdus
);
if
((
l_rlc_p
->
input_sdus
[
l_rlc_p
->
next_sdu_index
].
mem_block
==
NULL
)
&&
(
l_rlc_p
->
input_sdus
[
l_rlc_p
->
next_sdu_index
].
flags
.
segmented
==
0
)
&&
(((
l_rlc_p
->
next_sdu_index
+
1
)
%
RLC_AM_SDU_CONTROL_BUFFER_SIZE
)
!=
l_rlc_p
->
current_sdu_index
))
{
...
...
@@ -1076,4 +1077,5 @@ rlc_am_data_req (void *rlc_pP, frame_t frameP, mem_block_t * sdu_pP)
l_rlc_p
->
next_sdu_index
);
#endif
}
pthread_mutex_unlock
(
&
l_rlc_p
->
lock_input_sdus
);
}
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_entity.h
View file @
6c4ffcff
...
...
@@ -43,6 +43,7 @@
# ifndef __RLC_AM_ENTITY_H__
# define __RLC_AM_ENTITY_H__
//-----------------------------------------------------------------------------
# include <pthread.h>
# include "platform_types.h"
# include "platform_constants.h"
# include "list.h"
...
...
@@ -70,6 +71,8 @@ typedef struct rlc_am_entity_s {
//---------------------------------------------------------------------
// TX BUFFERS
//---------------------------------------------------------------------
//pthread_spinlock_t lock_input_sdus;
pthread_mutex_t
lock_input_sdus
;
rlc_am_tx_sdu_management_t
*
input_sdus
;
/*!< \brief Input SDU buffer (for SDUs coming from upper layers). */
signed
int
nb_sdu
;
/*!< \brief Total number of valid rlc_am_tx_sdu_management_t in input_sdus[]. */
signed
int
nb_sdu_no_segmented
;
/*!< \brief Total number of SDUs not segmented and partially segmented. */
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c
View file @
6c4ffcff
...
...
@@ -51,6 +51,7 @@ void rlc_am_init(rlc_am_entity_t *rlc_pP, frame_t frameP)
list_init
(
&
rlc_pP
->
segmentation_pdu_list
,
"SEGMENTATION PDU LIST"
);
//LOG_D(RLC,"RLC_AM_SDU_CONTROL_BUFFER_SIZE %d sizeof(rlc_am_tx_sdu_management_t) %d \n", RLC_AM_SDU_CONTROL_BUFFER_SIZE, sizeof(rlc_am_tx_sdu_management_t));
pthread_mutex_init
(
&
rlc_pP
->
lock_input_sdus
,
NULL
);
rlc_pP
->
input_sdus
=
calloc
(
1
,
RLC_AM_SDU_CONTROL_BUFFER_SIZE
*
sizeof
(
rlc_am_tx_sdu_management_t
));
#warning "cast the rlc retrans buffer to uint32"
// rlc_pP->pdu_retrans_buffer = calloc(1, (uint16_t)((unsigned int)RLC_AM_PDU_RETRANSMISSION_BUFFER_SIZE*(unsigned int)sizeof(rlc_am_tx_data_pdu_management_t)));
...
...
@@ -162,6 +163,7 @@ void rlc_am_cleanup(rlc_am_entity_t *rlc_pP)
free
(
rlc_pP
->
input_sdus
);
rlc_pP
->
input_sdus
=
NULL
;
}
pthread_mutex_destroy
(
&
rlc_pP
->
lock_input_sdus
);
if
(
rlc_pP
->
pdu_retrans_buffer
!=
NULL
)
{
for
(
i
=
0
;
i
<
RLC_AM_PDU_RETRANSMISSION_BUFFER_SIZE
;
i
++
)
{
if
(
rlc_pP
->
pdu_retrans_buffer
[
i
].
mem_block
!=
NULL
)
{
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
View file @
6c4ffcff
...
...
@@ -189,6 +189,7 @@ void rlc_am_segment_10 (
pdu_mem_p
=
NULL
;
pthread_mutex_lock
(
&
rlc_pP
->
lock_input_sdus
);
while
((
rlc_pP
->
input_sdus
[
rlc_pP
->
current_sdu_index
].
mem_block
)
&&
(
nb_bytes_to_transmit
>
0
)
)
{
LOG_T
(
RLC
,
"[FRAME %05d][%s][RLC_AM][MOD %u/%u][RB %u][SEGMENT] nb_bytes_to_transmit %d BO %d
\n
"
,
frameP
,
...
...
@@ -238,6 +239,7 @@ void rlc_am_segment_10 (
rlc_pP
->
enb_module_id
,
rlc_pP
->
ue_module_id
,
rlc_pP
->
rb_id
);
pthread_mutex_unlock
(
&
rlc_pP
->
lock_input_sdus
);
return
;
}
LOG_T
(
RLC
,
"[FRAME %05d][%s][RLC_AM][MOD %u/%u][RB %u][SEGMENT] get new PDU %d bytes
\n
"
,
...
...
@@ -611,4 +613,5 @@ void rlc_am_segment_10 (
list_add_tail_eurecom
(
copy
,
&
rlc_pP
->
segmentation_pdu_list
);
}
pthread_mutex_unlock
(
&
rlc_pP
->
lock_input_sdus
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment