Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenXG
OpenXG UE
Commits
0e331159
Commit
0e331159
authored
Jan 10, 2021
by
Laurent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix memory allocation error
parent
45ffbf90
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
41 additions
and
35 deletions
+41
-35
common/utils/ocp_itti/intertask_interface.cpp
common/utils/ocp_itti/intertask_interface.cpp
+28
-27
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+2
-3
openair2/NETWORK_DRIVER/MESH/device.c
openair2/NETWORK_DRIVER/MESH/device.c
+4
-0
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+1
-1
openair3/SCTP/sctp_eNB_task.c
openair3/SCTP/sctp_eNB_task.c
+1
-1
targets/ARCH/rfsimulator/apply_channelmod.c
targets/ARCH/rfsimulator/apply_channelmod.c
+3
-2
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+2
-1
No files found.
common/utils/ocp_itti/intertask_interface.cpp
View file @
0e331159
...
@@ -45,7 +45,7 @@ extern "C" {
...
@@ -45,7 +45,7 @@ extern "C" {
std
::
vector
<
MessageDef
*>
message_queue
;
std
::
vector
<
MessageDef
*>
message_queue
;
std
::
map
<
long
,
timer_elm_t
>
timer_map
;
std
::
map
<
long
,
timer_elm_t
>
timer_map
;
uint64_t
next_timer
=
UINT64_MAX
;
uint64_t
next_timer
=
UINT64_MAX
;
struct
epoll_event
*
events
=
NULL
;
struct
epoll_event
*
events
=
NULL
;
int
nb_fd_epoll
=
0
;
int
nb_fd_epoll
=
0
;
int
nb_events
=
0
;
int
nb_events
=
0
;
int
epoll_fd
=-
1
;
int
epoll_fd
=-
1
;
...
@@ -53,7 +53,7 @@ extern "C" {
...
@@ -53,7 +53,7 @@ extern "C" {
}
task_list_t
;
}
task_list_t
;
int
timer_expired
(
int
fd
);
int
timer_expired
(
int
fd
);
task_list_t
*
tasks
;
static
task_list_t
**
tasks
=
NULL
;
static
int
nb_queues
=
0
;
static
int
nb_queues
=
0
;
static
pthread_mutex_t
lock_nb_queues
;
static
pthread_mutex_t
lock_nb_queues
;
...
@@ -124,7 +124,7 @@ extern "C" {
...
@@ -124,7 +124,7 @@ extern "C" {
}
}
static
inline
int
itti_send_msg_to_task_locked
(
task_id_t
destination_task_id
,
instance_t
destinationInstance
,
MessageDef
*
message
)
{
static
inline
int
itti_send_msg_to_task_locked
(
task_id_t
destination_task_id
,
instance_t
destinationInstance
,
MessageDef
*
message
)
{
task_list_t
*
t
=
tasks
+
destination_task_id
;
task_list_t
*
t
=
tasks
[
destination_task_id
]
;
message
->
ittiMsgHeader
.
destinationTaskId
=
destination_task_id
;
message
->
ittiMsgHeader
.
destinationTaskId
=
destination_task_id
;
message
->
ittiMsgHeader
.
destinationInstance
=
destinationInstance
;
message
->
ittiMsgHeader
.
destinationInstance
=
destinationInstance
;
message
->
ittiMsgHeader
.
lte_time
.
frame
=
0
;
message
->
ittiMsgHeader
.
lte_time
.
frame
=
0
;
...
@@ -146,7 +146,7 @@ extern "C" {
...
@@ -146,7 +146,7 @@ extern "C" {
}
}
int
itti_send_msg_to_task
(
task_id_t
destination_task_id
,
instance_t
destinationInstance
,
MessageDef
*
message
)
{
int
itti_send_msg_to_task
(
task_id_t
destination_task_id
,
instance_t
destinationInstance
,
MessageDef
*
message
)
{
task_list_t
*
t
=
&
tasks
[
destination_task_id
];
task_list_t
*
t
=
tasks
[
destination_task_id
];
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
int
ret
=
itti_send_msg_to_task_locked
(
destination_task_id
,
destinationInstance
,
message
);
int
ret
=
itti_send_msg_to_task_locked
(
destination_task_id
,
destinationInstance
,
message
);
...
@@ -165,7 +165,7 @@ extern "C" {
...
@@ -165,7 +165,7 @@ extern "C" {
void
itti_subscribe_event_fd
(
task_id_t
task_id
,
int
fd
)
{
void
itti_subscribe_event_fd
(
task_id_t
task_id
,
int
fd
)
{
struct
epoll_event
event
;
struct
epoll_event
event
;
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
t
->
nb_fd_epoll
++
;
t
->
nb_fd_epoll
++
;
t
->
events
=
(
struct
epoll_event
*
)
realloc
((
void
*
)
t
->
events
,
t
->
events
=
(
struct
epoll_event
*
)
realloc
((
void
*
)
t
->
events
,
t
->
nb_fd_epoll
*
sizeof
(
struct
epoll_event
));
t
->
nb_fd_epoll
*
sizeof
(
struct
epoll_event
));
...
@@ -178,7 +178,7 @@ extern "C" {
...
@@ -178,7 +178,7 @@ extern "C" {
}
}
void
itti_unsubscribe_event_fd
(
task_id_t
task_id
,
int
fd
)
{
void
itti_unsubscribe_event_fd
(
task_id_t
task_id
,
int
fd
)
{
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
AssertFatal
(
epoll_ctl
(
t
->
epoll_fd
,
EPOLL_CTL_DEL
,
fd
,
NULL
)
==
0
,
AssertFatal
(
epoll_ctl
(
t
->
epoll_fd
,
EPOLL_CTL_DEL
,
fd
,
NULL
)
==
0
,
"epoll_ctl (EPOLL_CTL_DEL) failed for task %s, fd %d: %s!
\n
"
,
"epoll_ctl (EPOLL_CTL_DEL) failed for task %s, fd %d: %s!
\n
"
,
itti_get_task_name
(
task_id
),
fd
,
strerror
(
errno
));
itti_get_task_name
(
task_id
),
fd
,
strerror
(
errno
));
...
@@ -186,7 +186,7 @@ extern "C" {
...
@@ -186,7 +186,7 @@ extern "C" {
}
}
static
inline
int
itti_get_events_locked
(
task_id_t
task_id
,
struct
epoll_event
**
events
)
{
static
inline
int
itti_get_events_locked
(
task_id_t
task_id
,
struct
epoll_event
**
events
)
{
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
uint64_t
current_time
=
0
;
uint64_t
current_time
=
0
;
do
{
do
{
...
@@ -266,13 +266,13 @@ extern "C" {
...
@@ -266,13 +266,13 @@ extern "C" {
}
}
int
itti_get_events
(
task_id_t
task_id
,
struct
epoll_event
**
events
)
{
int
itti_get_events
(
task_id_t
task_id
,
struct
epoll_event
**
events
)
{
pthread_mutex_lock
(
&
tasks
[
task_id
]
.
queue_cond_lock
);
pthread_mutex_lock
(
&
tasks
[
task_id
]
->
queue_cond_lock
);
return
itti_get_events_locked
(
task_id
,
events
);
return
itti_get_events_locked
(
task_id
,
events
);
}
}
void
itti_receive_msg
(
task_id_t
task_id
,
MessageDef
**
received_msg
)
{
void
itti_receive_msg
(
task_id_t
task_id
,
MessageDef
**
received_msg
)
{
// Reception of one message, blocking caller
// Reception of one message, blocking caller
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
// Weird condition to deal with crap legacy itti interface
// Weird condition to deal with crap legacy itti interface
...
@@ -304,7 +304,7 @@ extern "C" {
...
@@ -304,7 +304,7 @@ extern "C" {
void
itti_poll_msg
(
task_id_t
task_id
,
MessageDef
**
received_msg
)
{
void
itti_poll_msg
(
task_id_t
task_id
,
MessageDef
**
received_msg
)
{
//reception of one message, non-blocking
//reception of one message, non-blocking
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
pthread_mutex_lock
(
&
t
->
queue_cond_lock
);
if
(
!
t
->
message_queue
.
empty
())
{
if
(
!
t
->
message_queue
.
empty
())
{
...
@@ -320,7 +320,7 @@ extern "C" {
...
@@ -320,7 +320,7 @@ extern "C" {
int
itti_create_task
(
task_id_t
task_id
,
int
itti_create_task
(
task_id_t
task_id
,
void
*
(
*
start_routine
)(
void
*
),
void
*
(
*
start_routine
)(
void
*
),
void
*
args_p
)
{
void
*
args_p
)
{
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
threadCreate
(
&
t
->
thread
,
start_routine
,
args_p
,
(
char
*
)
itti_get_task_name
(
task_id
),
-
1
,
OAI_PRIORITY_RT
);
threadCreate
(
&
t
->
thread
,
start_routine
,
args_p
,
(
char
*
)
itti_get_task_name
(
task_id
),
-
1
,
OAI_PRIORITY_RT
);
LOG_I
(
TMR
,
"Created Posix thread %s
\n
"
,
itti_get_task_name
(
task_id
)
);
LOG_I
(
TMR
,
"Created Posix thread %s
\n
"
,
itti_get_task_name
(
task_id
)
);
return
0
;
return
0
;
...
@@ -338,19 +338,20 @@ extern "C" {
...
@@ -338,19 +338,20 @@ extern "C" {
int
itti_create_queue
(
const
task_info_t
*
task_info
)
{
int
itti_create_queue
(
const
task_info_t
*
task_info
)
{
pthread_mutex_lock
(
&
lock_nb_queues
);
pthread_mutex_lock
(
&
lock_nb_queues
);
int
newQueue
=
nb_queues
;
int
newQueue
=
nb_queues
++
;
nb_queues
++
;
AssertFatal
(
tasks
=
(
task_list_t
**
)
realloc
(
tasks
,
nb_queues
*
sizeof
(
*
tasks
)),
""
)
;
AssertFatal
(
realloc
(
tasks
,
nb_queues
*
sizeof
(
*
tasks
)),
"no memory"
)
;
tasks
[
newQueue
]
=
new
task_list_t
;
pthread_mutex_unlock
(
&
lock_nb_queues
);
pthread_mutex_unlock
(
&
lock_nb_queues
);
LOG_I
(
TMR
,
"Starting itti queue: %s as task %d
\n
"
,
tasks_info
->
name
,
newQueue
);
LOG_I
(
TMR
,
"Starting itti queue: %s as task %d
\n
"
,
tasks_info
->
name
,
newQueue
);
pthread_mutex_init
(
&
tasks
[
newQueue
].
queue_cond_lock
,
NULL
);
pthread_mutex_init
(
&
tasks
[
newQueue
]
->
queue_cond_lock
,
NULL
);
memcpy
(
&
tasks
[
newQueue
].
admin
,
tasks_info
,
sizeof
(
task_info_t
));
memcpy
(
&
tasks
[
newQueue
]
->
admin
,
tasks_info
,
sizeof
(
task_info_t
));
AssertFatal
(
(
tasks
[
newQueue
].
epoll_fd
=
epoll_create1
(
0
)
)
>=
0
,
""
);
AssertFatal
(
(
tasks
[
newQueue
]
->
epoll_fd
=
epoll_create1
(
0
)
)
>=
0
,
""
);
AssertFatal
(
(
tasks
[
newQueue
].
sem_fd
=
eventfd
(
0
,
EFD_SEMAPHORE
)
)
>=
0
,
""
);
AssertFatal
(
(
tasks
[
newQueue
]
->
sem_fd
=
eventfd
(
0
,
EFD_SEMAPHORE
)
)
>=
0
,
""
);
itti_subscribe_event_fd
((
task_id_t
)
newQueue
,
tasks
[
newQueue
].
sem_fd
);
itti_subscribe_event_fd
((
task_id_t
)
newQueue
,
tasks
[
newQueue
]
->
sem_fd
);
if
(
tasks
[
newQueue
].
admin
.
threadFunc
!=
NULL
)
if
(
tasks
[
newQueue
]
->
admin
.
threadFunc
!=
NULL
)
itti_create_task
((
task_id_t
)
newQueue
,
tasks
[
newQueue
].
admin
.
threadFunc
,
NULL
);
itti_create_task
((
task_id_t
)
newQueue
,
tasks
[
newQueue
]
->
admin
.
threadFunc
,
NULL
);
return
newQueue
;
return
newQueue
;
}
}
...
@@ -376,7 +377,7 @@ extern "C" {
...
@@ -376,7 +377,7 @@ extern "C" {
timer_type_t
type
,
timer_type_t
type
,
void
*
timer_arg
,
void
*
timer_arg
,
long
*
timer_id
)
{
long
*
timer_id
)
{
task_list_t
*
t
=
&
tasks
[
task_id
];
task_list_t
*
t
=
tasks
[
task_id
];
do
{
do
{
// set the taskid in the timer id to keep compatible with the legacy API
// set the taskid in the timer id to keep compatible with the legacy API
...
@@ -412,9 +413,9 @@ extern "C" {
...
@@ -412,9 +413,9 @@ extern "C" {
int
timer_remove
(
long
timer_id
)
{
int
timer_remove
(
long
timer_id
)
{
task_id_t
task_id
=
(
task_id_t
)(
timer_id
&
0xffff
);
task_id_t
task_id
=
(
task_id_t
)(
timer_id
&
0xffff
);
int
ret
;
int
ret
;
pthread_mutex_lock
(
&
tasks
[
task_id
]
.
queue_cond_lock
);
pthread_mutex_lock
(
&
tasks
[
task_id
]
->
queue_cond_lock
);
ret
=
tasks
[
task_id
]
.
timer_map
.
erase
(
timer_id
);
ret
=
tasks
[
task_id
]
->
timer_map
.
erase
(
timer_id
);
pthread_mutex_unlock
(
&
tasks
[
task_id
]
.
queue_cond_lock
);
pthread_mutex_unlock
(
&
tasks
[
task_id
]
->
queue_cond_lock
);
if
(
ret
==
1
)
if
(
ret
==
1
)
return
0
;
return
0
;
...
@@ -429,7 +430,7 @@ extern "C" {
...
@@ -429,7 +430,7 @@ extern "C" {
}
}
const
char
*
itti_get_task_name
(
task_id_t
task_id
)
{
const
char
*
itti_get_task_name
(
task_id_t
task_id
)
{
return
tasks
[
task_id
]
.
admin
.
name
;
return
tasks
[
task_id
]
->
admin
.
name
;
}
}
// void for compatibility
// void for compatibility
...
...
openair2/ENB_APP/enb_config.c
View file @
0e331159
...
@@ -121,15 +121,14 @@ void RCconfig_L1(void) {
...
@@ -121,15 +121,14 @@ void RCconfig_L1(void) {
RC
.
nb_L1_CC
[
j
]
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_CC_IDX
].
uptr
);
RC
.
nb_L1_CC
[
j
]
=
*
(
L1_ParamList
.
paramarray
[
j
][
L1_CC_IDX
].
uptr
);
if
(
RC
.
eNB
[
j
]
==
NULL
)
{
if
(
RC
.
eNB
[
j
]
==
NULL
)
{
RC
.
eNB
[
j
]
=
(
PHY_VARS_eNB
**
)
malloc
((
1
+
MAX_NUM_CCs
)
*
sizeof
(
PHY_VARS_eNB
*
));
RC
.
eNB
[
j
]
=
(
PHY_VARS_eNB
**
)
malloc
((
1
+
MAX_NUM_CCs
)
*
sizeof
(
PHY_VARS_eNB
*
));
LOG_I
(
PHY
,
"RC.eNB[%d] = %p
\n
"
,
j
,
RC
.
eNB
[
j
]);
LOG_I
(
PHY
,
"RC.eNB[%d] = %p
\n
"
,
j
,
RC
.
eNB
[
j
]);
memset
(
RC
.
eNB
[
j
],
0
,(
1
+
MAX_NUM_CCs
)
*
sizeof
(
PHY_VARS_eNB
*
));
memset
(
RC
.
eNB
[
j
],
0
,(
1
+
MAX_NUM_CCs
)
*
sizeof
(
PHY_VARS_eNB
*
));
}
}
for
(
i
=
0
;
i
<
RC
.
nb_L1_CC
[
j
];
i
++
)
{
for
(
i
=
0
;
i
<
RC
.
nb_L1_CC
[
j
];
i
++
)
{
if
(
RC
.
eNB
[
j
][
i
]
==
NULL
)
{
if
(
RC
.
eNB
[
j
][
i
]
==
NULL
)
{
RC
.
eNB
[
j
][
i
]
=
(
PHY_VARS_eNB
*
)
malloc
(
sizeof
(
PHY_VARS_eNB
));
RC
.
eNB
[
j
][
i
]
=
(
PHY_VARS_eNB
*
)
calloc
(
1
,
sizeof
(
PHY_VARS_eNB
));
memset
((
void
*
)
RC
.
eNB
[
j
][
i
],
0
,
sizeof
(
PHY_VARS_eNB
));
LOG_I
(
PHY
,
"RC.eNB[%d][%d] = %p
\n
"
,
j
,
i
,
RC
.
eNB
[
j
][
i
]);
LOG_I
(
PHY
,
"RC.eNB[%d][%d] = %p
\n
"
,
j
,
i
,
RC
.
eNB
[
j
][
i
]);
RC
.
eNB
[
j
][
i
]
->
Mod_id
=
j
;
RC
.
eNB
[
j
][
i
]
->
Mod_id
=
j
;
RC
.
eNB
[
j
][
i
]
->
CC_id
=
i
;
RC
.
eNB
[
j
][
i
]
->
CC_id
=
i
;
...
...
openair2/NETWORK_DRIVER/MESH/device.c
View file @
0e331159
...
@@ -297,7 +297,11 @@ int nas_change_mtu(struct net_device *dev, int mtu)
...
@@ -297,7 +297,11 @@ int nas_change_mtu(struct net_device *dev, int mtu)
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,7,0)
void
nas_tx_timeout
(
struct
net_device
*
dev
)
void
nas_tx_timeout
(
struct
net_device
*
dev
)
#else
void
nas_tx_timeout
(
struct
net_device
*
dev
,
unsigned
int
x
)
#endif
{
{
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Transmitter timeout, serious problems.
// Transmitter timeout, serious problems.
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
0e331159
...
@@ -151,7 +151,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
...
@@ -151,7 +151,7 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
msg
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
0
,
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
);
msg
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
0
,
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
);
gtpv1u_enb_create_tunnel_req_t
create_tunnel_req
;
gtpv1u_enb_create_tunnel_req_t
create_tunnel_req
;
gtpv1u_enb_create_tunnel_resp_t
create_tunnel_resp
;
gtpv1u_enb_create_tunnel_resp_t
create_tunnel_resp
;
protocol_ctxt_t
ctxt
;
protocol_ctxt_t
ctxt
=
{
0
}
;
// NR RRCReconfiguration
// NR RRCReconfiguration
AssertFatal
(
rrc
->
Nb_ue
<
MAX_NR_RRC_UE_CONTEXTS
,
"cannot add another UE
\n
"
);
AssertFatal
(
rrc
->
Nb_ue
<
MAX_NR_RRC_UE_CONTEXTS
,
"cannot add another UE
\n
"
);
ue_context_p
->
ue_context
.
reconfig
=
calloc
(
1
,
sizeof
(
NR_RRCReconfiguration_t
));
ue_context_p
->
ue_context
.
reconfig
=
calloc
(
1
,
sizeof
(
NR_RRCReconfiguration_t
));
...
...
openair3/SCTP/sctp_eNB_task.c
View file @
0e331159
...
@@ -364,7 +364,7 @@ sctp_handle_new_association_req(
...
@@ -364,7 +364,7 @@ sctp_handle_new_association_req(
int
sd
=
0
;
int
sd
=
0
;
int32_t
assoc_id
=
0
;
int32_t
assoc_id
=
0
;
struct
sctp_event_subscribe
events
;
struct
sctp_event_subscribe
events
=
{
0
}
;
struct
sctp_cnx_list_elm_s
*
sctp_cnx
=
NULL
;
struct
sctp_cnx_list_elm_s
*
sctp_cnx
=
NULL
;
enum
sctp_connection_type_e
connection_type
=
SCTP_TYPE_CLIENT
;
enum
sctp_connection_type_e
connection_type
=
SCTP_TYPE_CLIENT
;
...
...
targets/ARCH/rfsimulator/apply_channelmod.c
View file @
0e331159
...
@@ -102,8 +102,9 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si
...
@@ -102,8 +102,9 @@ void rxAddInput( struct complex16 *input_sig, struct complex16 *after_channel_si
}
//l
}
//l
}
}
out_ptr
->
r
+=
round
(
rx_tmp
.
x
*
pathLossLinear
+
noise_per_sample
*
gaussZiggurat
(
0
.
0
,
1
.
0
));
// Fixme: lround(), rount(), ... is detected by valgrind as error, not found why
out_ptr
->
i
+=
round
(
rx_tmp
.
y
*
pathLossLinear
+
noise_per_sample
*
gaussZiggurat
(
0
.
0
,
1
.
0
));
out_ptr
->
r
+=
lround
(
rx_tmp
.
x
*
pathLossLinear
+
noise_per_sample
*
gaussZiggurat
(
0
.
0
,
1
.
0
));
out_ptr
->
i
+=
lround
(
rx_tmp
.
y
*
pathLossLinear
+
noise_per_sample
*
gaussZiggurat
(
0
.
0
,
1
.
0
));
out_ptr
++
;
out_ptr
++
;
}
}
...
...
targets/RT/USER/lte-enb.c
View file @
0e331159
...
@@ -1239,7 +1239,8 @@ void init_eNB(int single_thread_flag,
...
@@ -1239,7 +1239,8 @@ void init_eNB(int single_thread_flag,
if
(
RC
.
eNB
[
inst
]
==
NULL
)
RC
.
eNB
[
inst
]
=
(
PHY_VARS_eNB
**
)
malloc
(
RC
.
nb_CC
[
inst
]
*
sizeof
(
PHY_VARS_eNB
*
));
if
(
RC
.
eNB
[
inst
]
==
NULL
)
RC
.
eNB
[
inst
]
=
(
PHY_VARS_eNB
**
)
malloc
(
RC
.
nb_CC
[
inst
]
*
sizeof
(
PHY_VARS_eNB
*
));
for
(
CC_id
=
0
;
CC_id
<
RC
.
nb_L1_CC
[
inst
];
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
RC
.
nb_L1_CC
[
inst
];
CC_id
++
)
{
if
(
RC
.
eNB
[
inst
][
CC_id
]
==
NULL
)
RC
.
eNB
[
inst
][
CC_id
]
=
(
PHY_VARS_eNB
*
)
malloc
(
sizeof
(
PHY_VARS_eNB
));
if
(
RC
.
eNB
[
inst
][
CC_id
]
==
NULL
)
RC
.
eNB
[
inst
][
CC_id
]
=
(
PHY_VARS_eNB
*
)
calloc
(
1
,
sizeof
(
PHY_VARS_eNB
));
eNB
=
RC
.
eNB
[
inst
][
CC_id
];
eNB
=
RC
.
eNB
[
inst
][
CC_id
];
eNB
->
abstraction_flag
=
0
;
eNB
->
abstraction_flag
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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