From dabdf7933b68fcc8ead0e7e569e9a7fa95480db1 Mon Sep 17 00:00:00 2001 From: "Wilson W.K. Thong" <wilsonthong@astri.org> Date: Wed, 21 Dec 2016 15:01:23 +0800 Subject: [PATCH] add more logs to debug memory leak problem --- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 24 ++++++++--------- .../PDCP_v10.1.0/pdcp_control_primitive.c | 2 +- openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c | 6 ++--- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c | 2 +- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c | 4 +-- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c | 6 ++--- .../LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c | 6 ++--- .../LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c | 6 ++--- .../LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c | 8 +++--- .../LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c | 6 ++--- .../RLC/AM_v9.3.0/rlc_am_status_report.c | 4 +-- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c | 10 +++---- openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c | 10 +++---- openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c | 8 +++--- .../RLC/UM_v9.3.0/rlc_um_control_primitives.c | 4 +-- openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c | 10 +++---- .../LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c | 2 +- .../LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c | 16 +++++------ openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c | 20 +++++++------- .../RLC/UM_v9.3.0/rlc_um_very_simple_test.c | 6 ++--- openair2/LAYER2/RLC/rlc.c | 26 +++++++++--------- openair2/LAYER2/RLC/rlc_mac.c | 4 +-- openair2/LAYER2/RLC/rlc_rrc.c | 2 +- openair2/UTIL/LISTS/list.c | 2 +- openair2/UTIL/LISTS/list2.c | 2 +- openair2/UTIL/MEM/mem_block.c | 27 ++++++++++++++++--- openair2/UTIL/MEM/mem_block.h | 4 +-- openair2/UTIL/MEM/mem_mngt.c | 12 ++++----- openair2/UTIL/TIMER/umts_timer.c | 8 +++--- targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c | 4 +-- 30 files changed, 136 insertions(+), 115 deletions(-) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 2ff2d90de9..8e3cc20d87 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -160,7 +160,7 @@ boolean_t pdcp_data_req( if (modeP == PDCP_TRANSMISSION_MODE_TRANSPARENT) { LOG_D(PDCP, " [TM] Asking for a new mem_block of size %d\n",sdu_buffer_sizeP); - pdcp_pdu_p = get_free_mem_block(sdu_buffer_sizeP); + pdcp_pdu_p = get_free_mem_block(sdu_buffer_sizeP, __func__); if (pdcp_pdu_p != NULL) { memcpy(&pdcp_pdu_p->data[0], sdu_buffer_pP, sdu_buffer_sizeP); @@ -201,7 +201,7 @@ boolean_t pdcp_data_req( /* * Allocate a new block for the new PDU (i.e. PDU header and SDU payload) */ - pdcp_pdu_p = get_free_mem_block(pdcp_pdu_size); + pdcp_pdu_p = get_free_mem_block(pdcp_pdu_size, __func__); if (pdcp_pdu_p != NULL) { /* @@ -260,7 +260,7 @@ boolean_t pdcp_data_req( PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP,pdcp_p), current_sn); - free_mem_block(pdcp_pdu_p); + free_mem_block(pdcp_pdu_p, __func__); if (ctxt_pP->enb_flag == ENB_FLAG_NO) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_req); @@ -510,7 +510,7 @@ pdcp_data_ind( PROTOCOL_CTXT_FMT"Could not get PDCP instance key 0x%"PRIx64"\n", PROTOCOL_CTXT_ARGS(ctxt_pP), key); - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_IND,VCD_FUNCTION_OUT); return FALSE; } @@ -567,7 +567,7 @@ pdcp_data_ind( PROTOCOL_PDCP_CTXT_FMT"Incoming (from RLC) SDU is short of size (size:%d)! Ignoring...\n", PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP, pdcp_p), sdu_buffer_sizeP); - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); if (ctxt_pP->enb_flag) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind); @@ -598,7 +598,7 @@ pdcp_data_ind( */ #if 0 LOG_D(PDCP, "Ignoring PDU...\n"); - free_mem_block(sdu_buffer); + free_mem_block(sdu_buffer, __func__); return FALSE; #else //LOG_W(PDCP, "Delivering out-of-order SDU to upper layer...\n"); @@ -645,9 +645,9 @@ pdcp_data_ind( rb_id, sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len, (uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]); - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); - // free_mem_block(new_sdu); + // free_mem_block(new_sdu, __func__); if (ctxt_pP->enb_flag) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind); } else { @@ -722,7 +722,7 @@ pdcp_data_ind( ctime, (const char*)(&sdu_buffer_pP->data[payload_offset]), sdu_buffer_sizeP - payload_offset ) == 0 ) { - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); if (ctxt_pP->enb_flag) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind); @@ -739,7 +739,7 @@ pdcp_data_ind( if (otg_enabled==1) { LOG_D(OTG,"Discarding received packed\n"); - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); if (ctxt_pP->enb_flag) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind); @@ -794,7 +794,7 @@ pdcp_data_ind( #endif if (FALSE == packet_forwarded) { - new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t)); + new_sdu_p = get_free_mem_block(sdu_buffer_sizeP - payload_offset + sizeof (pdcp_data_ind_header_t), __func__); if (new_sdu_p) { if (pdcp_p->rlc_mode == RLC_MODE_AM ) { @@ -856,7 +856,7 @@ pdcp_data_ind( #endif - free_mem_block(sdu_buffer_pP); + free_mem_block(sdu_buffer_pP, __func__); if (ctxt_pP->enb_flag) { stop_meas(&eNB_pdcp_stats[ctxt_pP->module_id].data_ind); diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c index d584cb1e64..795cb2e80a 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_control_primitive.c @@ -44,7 +44,7 @@ configure_pdcp_req (struct pdcp_entity *pdcpP, void *rlcP, uint8_t rlc_sap_typeP //----------------------------------------------------------------------------- mem_block *mb; - mb = get_free_mem_block (sizeof (struct cpdcp_primitive)); + mb = get_free_mem_block (sizeof (struct cpdcp_primitive), __func__); ((struct cpdcp_primitive *) mb->data)->type = CPDCP_CONFIG_REQ; ((struct cpdcp_primitive *) mb->data)->primitive.config_req.rlc_sap = rlcP; ((struct cpdcp_primitive *) mb->data)->primitive.config_req.rlc_type_sap = rlc_sap_typeP; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c index ac64e7352a..8eb6131230 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c @@ -128,7 +128,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const ctxt_pP) ((pdcp_data_ind_header_t *)(sdu_p->data))->data_size); list_remove_head (&pdcp_sdu_list); - free_mem_block (sdu_p); + free_mem_block (sdu_p, __func__); cont = 1; pdcp_nb_sdu_sent += 1; sdu_p = list_get_head (&pdcp_sdu_list); @@ -244,7 +244,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const ctxt_pP) ((pdcp_data_ind_header_t *)(sdu_p->data))->rb_id); list_remove_head (&pdcp_sdu_list); - free_mem_block (sdu_p); + free_mem_block (sdu_p, __func__); cont = 1; pdcp_nb_sdu_sent += 1; sdu_p = list_get_head (&pdcp_sdu_list); @@ -272,7 +272,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const ctxt_pP) if (!pdcp_output_sdu_bytes_to_write) { // OK finish with this SDU //PRINT_RB_SEND_OUTPUT_SDU ("[PDCP] RADIO->IP SEND SDU\n"); list_remove_head (&pdcp_sdu_list); - free_mem_block (sdu_p); + free_mem_block (sdu_p, __func__); cont = 1; pdcp_nb_sdu_sent += 1; sdu_p = list_get_head (&pdcp_sdu_list); diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c index ded7dc0783..1dea4ced9f 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c @@ -1280,7 +1280,7 @@ rlc_am_data_req ( l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mem_block, l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].flags.segmented); l_rlc_p->stat_tx_pdcp_sdu_discarded += 1; l_rlc_p->stat_tx_pdcp_bytes_discarded += ((struct rlc_am_data_req *) (sdu_pP->data))->data_size; - free_mem_block (sdu_pP); + free_mem_block (sdu_pP, __func__); #if STOP_ON_IP_TRAFFIC_OVERLOAD AssertFatal(0, PROTOCOL_RLC_AM_CTXT_FMT" RLC_AM_DATA_REQ size %d Bytes, SDU DROPPED, INPUT BUFFER OVERFLOW NB SDU %d current_sdu_index=%d next_sdu_index=%d \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p), diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c index a767e94dc7..0f0b0e75e1 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_in_sdu.c @@ -42,7 +42,7 @@ void rlc_am_free_in_sdu( { if (index_in_bufferP <= RLC_AM_SDU_CONTROL_BUFFER_SIZE) { if (rlcP->input_sdus[index_in_bufferP].mem_block != NULL) { - free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block); + free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block, __func__); rlcP->input_sdus[index_in_bufferP].mem_block = NULL; rlcP->nb_sdu_no_segmented -= 1; rlcP->input_sdus[index_in_bufferP].sdu_remaining_size = 0; @@ -81,7 +81,7 @@ rlc_am_free_in_sdu_data( { if (index_in_bufferP <= RLC_AM_SDU_CONTROL_BUFFER_SIZE) { if (rlcP->input_sdus[index_in_bufferP].mem_block != NULL) { - free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block); + free_mem_block(rlcP->input_sdus[index_in_bufferP].mem_block, __func__); rlcP->input_sdus[index_in_bufferP].mem_block = NULL; rlcP->input_sdus[index_in_bufferP].sdu_remaining_size = 0; rlcP->nb_sdu_no_segmented -= 1; diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c index a7cf302d06..74a1cd5390 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_init.c @@ -152,7 +152,7 @@ rlc_am_cleanup( if (rlc_pP->output_sdu_in_construction != NULL) { - free_mem_block(rlc_pP->output_sdu_in_construction); + free_mem_block(rlc_pP->output_sdu_in_construction, __func__); rlc_pP->output_sdu_in_construction = NULL; } @@ -161,7 +161,7 @@ rlc_am_cleanup( if (rlc_pP->input_sdus != NULL) { for (i=0; i < RLC_AM_SDU_CONTROL_BUFFER_SIZE; i++) { if (rlc_pP->input_sdus[i].mem_block != NULL) { - free_mem_block(rlc_pP->input_sdus[i].mem_block); + free_mem_block(rlc_pP->input_sdus[i].mem_block, __func__); rlc_pP->input_sdus[i].mem_block = NULL; } } @@ -175,7 +175,7 @@ rlc_am_cleanup( 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) { - free_mem_block(rlc_pP->pdu_retrans_buffer[i].mem_block); + free_mem_block(rlc_pP->pdu_retrans_buffer[i].mem_block, __func__); rlc_pP->pdu_retrans_buffer[i].mem_block = NULL; } } diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c index d13b89f1dc..873e51fbfe 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c @@ -55,7 +55,7 @@ rlc_am_reassembly ( lengthP); if (rlc_pP->output_sdu_in_construction == NULL) { - rlc_pP->output_sdu_in_construction = get_free_mem_block (RLC_SDU_MAX_SIZE); + rlc_pP->output_sdu_in_construction = get_free_mem_block (RLC_SDU_MAX_SIZE, __func__); rlc_pP->output_sdu_size_to_write = 0; assert(rlc_pP->output_sdu_in_construction != NULL); } @@ -197,7 +197,7 @@ rlc_am_send_sdu ( LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND_SDU] ERROR SIZE <= 0 ... DO NOTHING, SET SDU SIZE TO 0\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP)); //msg("[RLC_AM][MOD %d] Freeing mem_block ...\n", rlc_pP->module_id); - //free_mem_block (rlc_pP->output_sdu_in_construction); + //free_mem_block (rlc_pP->output_sdu_in_construction, __func__); AssertFatal(3==4, PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), @@ -397,5 +397,5 @@ rlc_am_reassemble_pdu( } } - free_mem_block(tb_pP); + free_mem_block(tb_pP, __func__); } diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c index d0b023833a..d783684893 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_receiver.c @@ -346,7 +346,7 @@ rlc_am_receive_process_data_pdu ( if (rlc_am_rx_list_insert_pdu(ctxt_pP, rlc_pP,tb_pP) < 0) { rlc_pP->stat_rx_data_pdu_dropped += 1; rlc_pP->stat_rx_data_bytes_dropped += tb_size_in_bytesP; - free_mem_block (tb_pP); + free_mem_block (tb_pP, __func__); LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[PROCESS RX PDU] PDU DISCARDED, STATUS REQUESTED:\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP)); rlc_pP->status_requested = 1; @@ -437,12 +437,12 @@ rlc_am_receive_process_data_pdu ( } else { rlc_pP->stat_rx_data_pdu_out_of_window += 1; rlc_pP->stat_rx_data_bytes_out_of_window += tb_size_in_bytesP; - free_mem_block (tb_pP); + free_mem_block (tb_pP, __func__); LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[PROCESS RX PDU] PDU OUT OF RX WINDOW, DISCARDED, STATUS REQUESTED:\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP)); rlc_pP->status_requested = 1; } } else { - free_mem_block (tb_pP); + free_mem_block (tb_pP, __func__); } } diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c index 445014c62c..f7f900fa65 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c @@ -143,7 +143,7 @@ void rlc_am_ack_pdu ( if ((rlc_pP->pdu_retrans_buffer[snP].flags.ack == 0) && (mb_p != NULL)) { //if (mb_pP != NULL) { - free_mem_block(mb_p); + free_mem_block(mb_p, __func__); rlc_pP->pdu_retrans_buffer[snP].mem_block = NULL; LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[ACK-PDU] ACK PDU SN %05d previous retx_count %d \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), @@ -235,7 +235,7 @@ void rlc_am_ack_pdu ( snP); if (mb_p != NULL) { - free_mem_block(mb_p); + free_mem_block(mb_p, __func__); rlc_pP->pdu_retrans_buffer[snP].mem_block = NULL; } @@ -275,7 +275,7 @@ mem_block_t* rlc_am_retransmit_get_copy ( rlc_am_tx_data_pdu_management_t *pdu_mngt = &rlc_pP->pdu_retrans_buffer[snP % RLC_AM_PDU_RETRANSMISSION_BUFFER_SIZE]; int size = pdu_mngt->header_and_payload_size + sizeof(struct mac_tb_req); - mem_block_t* mb_copy = get_free_mem_block(size); + mem_block_t* mb_copy = get_free_mem_block(size, __func__); memcpy(mb_copy->data, mb_original_p->data, size); rlc_am_pdu_sn_10_t *pdu_p = (rlc_am_pdu_sn_10_t*) (&mb_copy->data[sizeof(struct mac_tb_req)]); @@ -343,7 +343,7 @@ mem_block_t* rlc_am_retransmit_get_subsegment( mem_block_t* mb_original_p = rlc_pP->pdu_retrans_buffer[snP].mem_block; if (mb_original_p != NULL) { - mem_block_t* mb_sub_segment_p = get_free_mem_block(*sizeP + sizeof(struct mac_tb_req)); + mem_block_t* mb_sub_segment_p = get_free_mem_block(*sizeP + sizeof(struct mac_tb_req), __func__); rlc_am_pdu_sn_10_t* pdu_original_p = (rlc_am_pdu_sn_10_t*) (&mb_original_p->data[sizeof(struct mac_tb_req)]); rlc_am_pdu_sn_10_t* pdu_sub_segment_p = (rlc_am_pdu_sn_10_t*) (&mb_sub_segment_p->data[sizeof(struct mac_tb_req)]); rlc_am_pdu_info_t pdu_info; diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c index f2a12112c4..893588d65e 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c @@ -197,7 +197,7 @@ void rlc_am_segment_10 ( data_pdu_size); } - if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) { + if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) { LOG_C(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEGMENT] ERROR COULD NOT GET NEW PDU, EXIT\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP)); RLC_AM_MUTEX_UNLOCK(&rlc_pP->lock_input_sdus); @@ -366,7 +366,7 @@ void rlc_am_segment_10 ( // free SDU rlc_pP->sdu_buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; rlc_am_free_in_sdu_data(ctxt_pP, rlc_pP, rlc_pP->current_sdu_index); - //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]); + //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__); //rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL; //rlc_pP->nb_sdu -= 1; rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE; @@ -445,7 +445,7 @@ void rlc_am_segment_10 ( sdu_mngt_p->sdu_remaining_size = 0; rlc_am_free_in_sdu_data(ctxt_pP, rlc_pP, rlc_pP->current_sdu_index); - //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]); + //free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__); //rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL; //rlc_pP->nb_sdu -= 1; rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE; diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c index efbd29350c..d687bf8606 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c @@ -370,7 +370,7 @@ rlc_am_receive_process_control_pdu( *first_byte_ppP = (uint8_t*)((uint64_t)*first_byte_ppP + initial_pdu_size - *tb_size_in_bytes_pP); - free_mem_block(tb_pP); + free_mem_block(tb_pP, __func__); rlc_am_tx_buffer_display(ctxt_pP, rlc_pP, NULL); } //----------------------------------------------------------------------------- @@ -730,7 +730,7 @@ end_push_nack: __LINE__, pdu_size); #endif - tb_p = get_free_mem_block(sizeof(struct mac_tb_req) + pdu_size); + tb_p = get_free_mem_block(sizeof(struct mac_tb_req) + pdu_size, __func__); memset(tb_p->data, 0, sizeof(struct mac_tb_req) + pdu_size); //estimation only ((struct mac_tb_req*)(tb_p->data))->tb_size = pdu_size; ((struct mac_tb_req*)(tb_p->data))->data_ptr = (uint8_t*)&(tb_p->data[sizeof(struct mac_tb_req)]); diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c index e03741707e..8e201a949b 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_test.c @@ -516,7 +516,7 @@ void rlc_am_v9_3_0_test_send_sdu(rlc_am_entity_t *am_txP, int sdu_indexP) //----------------------------------------------------------------------------- { mem_block_t *sdu; - sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_am_data_req_alloc)); + sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_am_data_req_alloc), __func__); if (sdu != NULL) { // PROCESS OF COMPRESSION HERE: @@ -561,7 +561,7 @@ void rlc_am_v9_3_0_test_mac_rlc_loop (struct mac_data_ind *data_indP, struct ma *tx_packetsP = *tx_packetsP + 1; if (*drop_countP == 0) { - tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size); + tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__); if (tb_dst != NULL) { ((struct mac_tb_ind *) (tb_dst->data))->first_bit = 0; @@ -585,7 +585,7 @@ void rlc_am_v9_3_0_test_mac_rlc_loop (struct mac_data_ind *data_indP, struct ma *dropped_tx_packetsP = *dropped_tx_packetsP + 1; } - free_mem_block(tb_src); + free_mem_block(tb_src, __func__); if (data_indP->no_tb > 0) { printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb); @@ -673,13 +673,13 @@ void rlc_am_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si assert(g_send_sdu_ids[g_send_id_read_index[rb_idP]][rb_idP^1] == i); g_send_id_read_index[rb_idP] += 1; - free_mem_block(sduP); + free_mem_block(sduP, __func__); return; } } printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP, sizeP); - free_mem_block(sduP); + free_mem_block(sduP, __func__); assert(1==2); } //----------------------------------------------------------------------------- diff --git a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c index d854e435e1..6e495bceff 100644 --- a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c +++ b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm.c @@ -51,7 +51,7 @@ rlc_tm_send_sdu ( length_in_bytes = (length_in_bitsP + 7) >> 3; if (rlc_pP->output_sdu_in_construction == NULL) { - rlc_pP->output_sdu_in_construction = get_free_mem_block (length_in_bytes); + rlc_pP->output_sdu_in_construction = get_free_mem_block (length_in_bytes, __func__); } if ((rlc_pP->output_sdu_in_construction)) { @@ -97,7 +97,7 @@ rlc_tm_no_segment ( sdu_mngt_p = ((struct rlc_tm_tx_sdu_management *) (rlc_pP->input_sdus[rlc_pP->current_sdu_index]->data)); - if (!(pdu_p = get_free_mem_block (((rlc_pP->rlc_pdu_size + 7) >> 3) + sizeof (struct rlc_tm_tx_data_pdu_struct) + GUARD_CRC_LIH_SIZE))) { + if (!(pdu_p = get_free_mem_block (((rlc_pP->rlc_pdu_size + 7) >> 3) + sizeof (struct rlc_tm_tx_data_pdu_struct) + GUARD_CRC_LIH_SIZE, __func__))) { LOG_D(RLC, PROTOCOL_RLC_TM_CTXT_FMT"[SEGMENT] ERROR COULD NOT GET NEW PDU, EXIT\n", PROTOCOL_RLC_TM_CTXT_ARGS(ctxt_pP, rlc_pP)); return; @@ -116,7 +116,7 @@ rlc_tm_no_segment ( list_add_tail_eurecom (pdu_p, &rlc_pP->pdus_to_mac_layer); rlc_pP->buffer_occupancy -= (sdu_mngt_p->sdu_size >> 3); - free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index]); + free_mem_block (rlc_pP->input_sdus[rlc_pP->current_sdu_index], __func__); rlc_pP->input_sdus[rlc_pP->current_sdu_index] = NULL; rlc_pP->current_sdu_index = (rlc_pP->current_sdu_index + 1) % rlc_pP->size_input_sdus_buffer; rlc_pP->nb_sdu -= 1; @@ -142,7 +142,7 @@ rlc_tm_rx ( ((struct rlc_tm_rx_pdu_management *) (tb_p->data))->first_byte = first_byte_p; rlc_tm_send_sdu (ctxt_pP, rlc_p, (((struct mac_tb_ind *) (tb_p->data))->error_indication), first_byte_p, data_indP.tb_size); - free_mem_block (tb_p); + free_mem_block (tb_p, __func__); } } @@ -235,6 +235,6 @@ rlc_tm_data_req ( rlc_p->input_sdus[rlc_p->next_sdu_index] = sdu_pP; rlc_p->next_sdu_index = (rlc_p->next_sdu_index + 1) % rlc_p->size_input_sdus_buffer; } else { - free_mem_block (sdu_pP); + free_mem_block (sdu_pP, __func__); } } diff --git a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c index 4d75f3ee30..8ddea705cd 100644 --- a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c +++ b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.c @@ -82,7 +82,7 @@ void rlc_tm_init ( rlcP->size_input_sdus_buffer = 16; if ((rlcP->input_sdus_alloc == NULL) && (rlcP->size_input_sdus_buffer > 0)) { - rlcP->input_sdus_alloc = get_free_mem_block (rlcP->size_input_sdus_buffer * sizeof (void *)); + rlcP->input_sdus_alloc = get_free_mem_block (rlcP->size_input_sdus_buffer * sizeof (void *), __func__); rlcP->input_sdus = (mem_block_t **) (rlcP->input_sdus_alloc->data); memset (rlcP->input_sdus, 0, rlcP->size_input_sdus_buffer * sizeof (void *)); } @@ -114,17 +114,17 @@ rlc_tm_cleanup ( if (rlcP->input_sdus_alloc) { for (index = 0; index < rlcP->size_input_sdus_buffer; index++) { if (rlcP->input_sdus[index]) { - free_mem_block (rlcP->input_sdus[index]); + free_mem_block (rlcP->input_sdus[index], __func__); } } - free_mem_block (rlcP->input_sdus_alloc); + free_mem_block (rlcP->input_sdus_alloc, __func__); rlcP->input_sdus_alloc = NULL; } // RX SIDE if ((rlcP->output_sdu_in_construction)) { - free_mem_block (rlcP->output_sdu_in_construction); + free_mem_block (rlcP->output_sdu_in_construction, __func__); } memset(rlcP, 0, sizeof(rlc_tm_entity_t)); diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c index 057be0000d..d0e9e28ef0 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c @@ -334,13 +334,13 @@ rlc_um_cleanup ( list_free (&rlc_pP->pdus_from_mac_layer); if ((rlc_pP->output_sdu_in_construction)) { - free_mem_block (rlc_pP->output_sdu_in_construction); + free_mem_block (rlc_pP->output_sdu_in_construction, __func__); } if (rlc_pP->dar_buffer) { for (index = 0; index < 1024; index++) { if (rlc_pP->dar_buffer[index]) { - free_mem_block (rlc_pP->dar_buffer[index]); + free_mem_block (rlc_pP->dar_buffer[index], __func__); } } diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c index fb83446e63..5c9f1fa0fe 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c @@ -544,7 +544,7 @@ rlc_um_try_reassembly( __FILE__, __LINE__); #endif - free_mem_block(rlc_pP->dar_buffer[sn]); + free_mem_block(rlc_pP->dar_buffer[sn], __func__); rlc_pP->dar_buffer[sn] = NULL; } else { rlc_pP->last_reassemblied_missing_sn = sn; @@ -957,7 +957,7 @@ rlc_um_receive_process_dar ( } else if (rlc_pP->rx_sn_length == 5) { sn = pdu_pP->b1 & 0x1F; } else { - free_mem_block(pdu_mem_pP); + free_mem_block(pdu_mem_pP, __func__); } RLC_UM_MUTEX_LOCK(&rlc_pP->lock_dar_buffer, ctxt_pP, rlc_pP); @@ -982,7 +982,7 @@ rlc_um_receive_process_dar ( #endif rlc_pP->stat_rx_data_pdu_out_of_window += 1; rlc_pP->stat_rx_data_bytes_out_of_window += tb_sizeP; - free_mem_block(pdu_mem_pP); + free_mem_block(pdu_mem_pP, __func__); pdu_mem_pP = NULL; RLC_UM_MUTEX_UNLOCK(&rlc_pP->lock_dar_buffer); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT); @@ -1001,7 +1001,7 @@ rlc_um_receive_process_dar ( //discard the PDU rlc_pP->stat_rx_data_pdus_duplicate += 1; rlc_pP->stat_rx_data_bytes_duplicate += tb_sizeP; - free_mem_block(pdu_mem_pP); + free_mem_block(pdu_mem_pP, __func__); pdu_mem_pP = NULL; RLC_UM_MUTEX_UNLOCK(&rlc_pP->lock_dar_buffer); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_UM_RECEIVE_PROCESS_DAR, VCD_FUNCTION_OUT); @@ -1017,7 +1017,7 @@ rlc_um_receive_process_dar ( sn); #endif mem_block_t *pdu = rlc_um_remove_pdu_from_dar_buffer(ctxt_pP, rlc_pP, sn); - free_mem_block(pdu); + free_mem_block(pdu, __func__); } rlc_um_store_pdu_in_dar_buffer(ctxt_pP, rlc_pP, pdu_mem_pP, sn); diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c index f8c6fdeabe..0805d708ca 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_reassembly.c @@ -69,7 +69,7 @@ rlc_um_reassembly (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP if (rlc_pP->output_sdu_in_construction == NULL) { // msg("[RLC_UM_LITE] Getting mem_block ...\n"); - rlc_pP->output_sdu_in_construction = get_free_mem_block (sdu_max_size); + rlc_pP->output_sdu_in_construction = get_free_mem_block (sdu_max_size, __func__); rlc_pP->output_sdu_size_to_write = 0; } diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c index 5ce681723e..bae9bd8d80 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_segment.c @@ -115,7 +115,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP #endif } - if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) { + if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) { #if TRACE_RLC_UM_SEGMENT LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR COULD NOT GET NEW PDU, EXIT\n", PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP)); @@ -291,7 +291,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; @@ -356,7 +356,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; @@ -380,7 +380,7 @@ rlc_um_segment_10 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; @@ -503,7 +503,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP) #endif } - if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req)))) { + if (!(pdu_mem_p = get_free_mem_block (data_pdu_size + sizeof(struct mac_tb_req), __func__))) { #if TRACE_RLC_UM_SEGMENT LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR COULD NOT GET NEW PDU, EXIT\n", PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP)); @@ -679,7 +679,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP) // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; @@ -743,7 +743,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP) // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; @@ -765,7 +765,7 @@ rlc_um_segment_5 (const protocol_ctxt_t* const ctxt_pP, rlc_um_entity_t *rlc_pP) // free SDU rlc_pP->buffer_occupancy -= sdu_mngt_p->sdu_remaining_size; sdu_in_buffer = list_remove_head(&rlc_pP->input_sdus); - free_mem_block (sdu_in_buffer); + free_mem_block (sdu_in_buffer, __func__); sdu_in_buffer = list_get_head(&rlc_pP->input_sdus); sdu_mngt_p = NULL; } diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c index 92f18e72d7..fced6efbf9 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_test.c @@ -301,7 +301,7 @@ void rlc_um_v9_3_0_test_send_sdu(rlc_um_entity_t *um_txP, int sdu_indexP) //----------------------------------------------------------------------------- { mem_block_t *sdu; - sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_um_data_req_alloc)); + sdu = get_free_mem_block (strlen(g_sdus[sdu_indexP]) + 1 + sizeof (struct rlc_um_data_req_alloc), __func__); if (sdu != NULL) { // PROCESS OF COMPRESSION HERE: @@ -405,12 +405,12 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP, struct ma *tx_packetsP = *tx_packetsP + 1; if (*drop_countP == 0) { - tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size); + tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__); memset(tb_dst->data, 0, sizeof (mac_rlc_max_rx_header_size_t) + tb_size); if (tb_dst != NULL) { //printf("[RLC-LOOP] Testing tb_dst (1)\n"); - check_free_mem_block(tb_dst); + check_free_mem_block(tb_dst, __func__); tb_dst->next = NULL; ((struct mac_tb_ind *) (tb_dst->data))->first_bit = 0; ((struct mac_tb_ind *) (tb_dst->data))->data_ptr = &tb_dst->data[sizeof (mac_rlc_max_rx_header_size_t)]; @@ -424,7 +424,7 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP, struct ma list_add_tail_eurecom(tb_dst, &data_indP->data); data_indP->no_tb += 1; //printf("[RLC-LOOP] Testing tb_dst (2)\n"); - check_free_mem_block(tb_dst); + check_free_mem_block(tb_dst, __func__); } else { printf("Out of memory error\n"); exit(-1); @@ -437,9 +437,9 @@ void rlc_um_v9_3_0_test_mac_rlc_loop (struct mac_data_ind* data_indP, struct ma //printf("[RLC-LOOP] Testing tb_src\n"); - check_free_mem_block(tb_src); + check_free_mem_block(tb_src, __func__); - free_mem_block(tb_src); + free_mem_block(tb_src, __func__); if (data_indP->no_tb > 0) { printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb); @@ -578,13 +578,13 @@ void rlc_um_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si assert(g_send_sdu_ids[g_send_id_read_index[rb_idP]][rb_idP^1] == i); g_send_id_read_index[rb_idP] += 1; - free_mem_block(sduP); + free_mem_block(sduP, __func__); return; } } printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP, sizeP); - free_mem_block(sduP); + free_mem_block(sduP, __func__); assert(1==2); } else { for (i = 0; i < 37; i++) { @@ -592,13 +592,13 @@ void rlc_um_v9_3_0_test_data_ind (module_id_t module_idP, rb_id_t rb_idP, sdu_si printf("[FRAME %05d][RLC][MOD %02d][RB %02d] RX SDU %d %04d bytes\n",g_frame,module_idP, rb_idP, i, sizeP); assert(TEST_MAX_SEND_SDU > g_send_id_read_index[rb_idP]); g_send_id_read_index[rb_idP] += 1; - free_mem_block(sduP); + free_mem_block(sduP, __func__); return; } } printf("[FRAME %05d][RLC][MOD %d][RB %d] RX UNKNOWN SDU %04d bytes\n",g_frame,module_idP, rb_idP, sizeP); - free_mem_block(sduP); + free_mem_block(sduP, __func__); return; } } diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c index ef6ca75be9..9934fd3a58 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.c @@ -44,7 +44,7 @@ rlc_um_test_send_sdu (rlc_um_entity_t* rlcP, uint32_t frame, unsigned int s switch (sdu_typeP) { case RLC_UM_TEST_SDU_TYPE_TCPIP: - sdu_mem = get_free_mem_block (strlen(tcip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc)); + sdu_mem = get_free_mem_block (strlen(tcip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__); if (sdu_mem != NULL) { memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc)); @@ -59,7 +59,7 @@ rlc_um_test_send_sdu (rlc_um_entity_t* rlcP, uint32_t frame, unsigned int s break; case RLC_UM_TEST_SDU_TYPE_VOIP: - sdu_mem = get_free_mem_block (strlen(voip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc)); + sdu_mem = get_free_mem_block (strlen(voip_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__); if (sdu_mem != NULL) { memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc)); @@ -74,7 +74,7 @@ rlc_um_test_send_sdu (rlc_um_entity_t* rlcP, uint32_t frame, unsigned int s break; case RLC_UM_TEST_SDU_TYPE_SMALL: - sdu_mem = get_free_mem_block (strlen(very_small_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc)); + sdu_mem = get_free_mem_block (strlen(very_small_sdu)+ 1 + sizeof (struct rlc_um_data_req_alloc), __func__); if (sdu_mem != NULL) { memset (sdu_mem->data, 0, sizeof (struct rlc_um_data_req_alloc)); diff --git a/openair2/LAYER2/RLC/rlc.c b/openair2/LAYER2/RLC/rlc.c index 3fe5c6cb41..1073d3ded3 100644 --- a/openair2/LAYER2/RLC/rlc.c +++ b/openair2/LAYER2/RLC/rlc.c @@ -413,7 +413,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, switch (rlc_mode) { case RLC_MODE_NONE: - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); LOG_E(RLC, PROTOCOL_CTXT_FMT" Received RLC_MODE_NONE as rlc_type for rb_id %u\n", PROTOCOL_CTXT_ARGS(ctxt_pP), rb_idP); @@ -424,7 +424,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, #ifdef DEBUG_RLC_DATA_REQ msg("RLC_MODE_AM\n"); #endif - new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc)); + new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc), __func__); if (new_sdu_p != NULL) { // PROCESS OF COMPRESSION HERE: @@ -435,7 +435,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, ((struct rlc_am_data_req *) (new_sdu_p->data))->conf = confirmP; ((struct rlc_am_data_req *) (new_sdu_p->data))->mui = muiP; ((struct rlc_am_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_am_data_req_alloc); - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); rlc_am_data_req(ctxt_pP, &rlc_union_p->rlc.am, new_sdu_p); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); return RLC_OP_STATUS_OK; @@ -447,7 +447,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, break; case RLC_MODE_UM: - new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc)); + new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__); if (new_sdu_p != NULL) { // PROCESS OF COMPRESSION HERE: @@ -456,11 +456,11 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP; ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc); - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p); - //free_mem_block(new_sdu); + //free_mem_block(new_sdu, __func__); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); return RLC_OP_STATUS_OK; } else { @@ -471,7 +471,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, break; case RLC_MODE_TM: - new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc)); + new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc), __func__); if (new_sdu_p != NULL) { // PROCESS OF COMPRESSION HERE: @@ -480,7 +480,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP; ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_tm_data_req_alloc); - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); rlc_tm_data_req(ctxt_pP, &rlc_union_p->rlc.tm, new_sdu_p); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); return RLC_OP_STATUS_OK; @@ -493,7 +493,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, break; default: - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); return RLC_OP_STATUS_INTERNAL_ERROR; @@ -505,7 +505,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, if (sdu_pP != NULL) { if (sdu_sizeP > 0) { LOG_I(RLC,"received a packet with size %d for MBMS \n", sdu_sizeP); - new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc)); + new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__); if (new_sdu_p != NULL) { // PROCESS OF COMPRESSION HERE: @@ -513,10 +513,10 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, memcpy (&new_sdu_p->data[sizeof (struct rlc_um_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP); ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP; ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc); - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p); - //free_mem_block(new_sdu); + //free_mem_block(new_sdu, __func__); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); return RLC_OP_STATUS_OK; } else { @@ -537,7 +537,7 @@ rlc_op_status_t rlc_data_req (const protocol_ctxt_t* const ctxt_pP, } else /* MBMS_flag != 0 */ { - free_mem_block(sdu_pP); + free_mem_block(sdu_pP, __func__); LOG_E(RLC, "MBMS_flag != 0 while Rel10 is not defined...\n"); //handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : parameter module_id out of bounds :%d\n", __FILE__, __LINE__, module_idP); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT); diff --git a/openair2/LAYER2/RLC/rlc_mac.c b/openair2/LAYER2/RLC/rlc_mac.c index d59b187dc7..d43a90ed6a 100644 --- a/openair2/LAYER2/RLC/rlc_mac.c +++ b/openair2/LAYER2/RLC/rlc_mac.c @@ -57,7 +57,7 @@ struct mac_data_ind mac_rlc_deserialize_tb ( list_init(&data_ind.data, NULL); while (num_tbP > 0) { - tb_p = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_sizeP); + tb_p = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_sizeP, __func__); if (tb_p != NULL) { ((struct mac_tb_ind *) (tb_p->data))->first_bit = 0; @@ -110,7 +110,7 @@ tbs_size_t mac_rlc_serialize_tb (char* buffer_pP, list_t transport_blocksP) #endif memcpy(&buffer_pP[tbs_size], &((struct mac_tb_req *) (tb_p->data))->data_ptr[0], tb_size); tbs_size = tbs_size + tb_size; - free_mem_block(tb_p); + free_mem_block(tb_p, __func__); } } diff --git a/openair2/LAYER2/RLC/rlc_rrc.c b/openair2/LAYER2/RLC/rlc_rrc.c index 9ef8bd8700..0b0073d807 100644 --- a/openair2/LAYER2/RLC/rlc_rrc.c +++ b/openair2/LAYER2/RLC/rlc_rrc.c @@ -786,7 +786,7 @@ rlc_op_status_t rrc_rlc_data_req ( //----------------------------------------------------------------------------- mem_block_t* sdu; - sdu = get_free_mem_block(sdu_sizeP); + sdu = get_free_mem_block(sdu_sizeP, __func__); if (sdu != NULL) { memcpy (sdu->data, sduP, sdu_sizeP); diff --git a/openair2/UTIL/LISTS/list.c b/openair2/UTIL/LISTS/list.c index 33b880d297..7040aeeef7 100644 --- a/openair2/UTIL/LISTS/list.c +++ b/openair2/UTIL/LISTS/list.c @@ -59,7 +59,7 @@ list_free (list_t * listP) mem_block_t *le; while ((le = list_remove_head (listP))) { - free_mem_block (le); + free_mem_block (le, __func__); } } //----------------------------------------------------------------------------- diff --git a/openair2/UTIL/LISTS/list2.c b/openair2/UTIL/LISTS/list2.c index 4a8de24b51..abd9d2aacc 100644 --- a/openair2/UTIL/LISTS/list2.c +++ b/openair2/UTIL/LISTS/list2.c @@ -75,7 +75,7 @@ list2_free (list2_t * listP) mem_block_t *le; while ((le = list2_remove_head (listP))) { - free_mem_block (le); + free_mem_block (le, __func__); } } diff --git a/openair2/UTIL/MEM/mem_block.c b/openair2/UTIL/MEM/mem_block.c index 8a5f5fd223..150f19b71c 100644 --- a/openair2/UTIL/MEM/mem_block.c +++ b/openair2/UTIL/MEM/mem_block.c @@ -55,7 +55,7 @@ static pthread_mutex_t mtex = PTHREAD_MUTEX_INITIALIZER; //#define DEBUG_MEM_MNGT_ALLOC //----------------------------------------------------------------------------- #if defined(USER_MODE) && defined(DEBUG_MEM_MNGT_ALLOC) -uint32_t counters[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +uint32_t counters[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #endif //----------------------------------------------------------------------------- /* @@ -173,7 +173,7 @@ pool_buffer_clean (void *arg) } //----------------------------------------------------------------------------- void -free_mem_block (mem_block_t * leP) +free_mem_block (mem_block_t * leP, const char* caller) { //----------------------------------------------------------------------------- @@ -197,6 +197,11 @@ free_mem_block (mem_block_t * leP) list_add_tail_eurecom (leP, &mem_block_var.mem_lists[leP->pool_id]); #ifdef DEBUG_MEM_MNGT_ALLOC counters[leP->pool_id] -= 1; + msg ("[%s][MEM_MNGT][INFO] after pool[%2d] freed: counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n", + caller, leP->pool_id, + counters[0],counters[1],counters[2],counters[3],counters[4], + counters[5],counters[6],counters[7],counters[8],counters[9], + counters[10],counters[11]); #endif leP = NULL; // this prevent from freeing the block twice } else { @@ -210,7 +215,7 @@ free_mem_block (mem_block_t * leP) //----------------------------------------------------------------------------- mem_block_t * -get_free_mem_block (uint32_t sizeP) +get_free_mem_block (uint32_t sizeP, const char* caller) { //----------------------------------------------------------------------------- mem_block_t *le = NULL; @@ -242,11 +247,19 @@ get_free_mem_block (uint32_t sizeP) if ((le = list_remove_head (&mem_block_var.mem_lists[pool_selected]))) { #ifdef DEBUG_MEM_MNGT_ALLOC counters[pool_selected] += 1; + msg ("[%s][MEM_MNGT][INFO] after pool[%2d] allocated: counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n", + caller, + pool_selected, + counters[0],counters[1],counters[2],counters[3],counters[4], + counters[5],counters[6],counters[7],counters[8],counters[9], + counters[10],counters[11]); #endif #ifdef DEBUG_MEM_MNGT_ALLOC_SIZE msg ("[MEM_MNGT][INFO] ALLOC MEM_BLOCK SIZE %d bytes pool %d (%p)\n", sizeP, pool_selected,le); #endif + AssertFatal(le->pool_id == pool_selected, "Unexpected pool ID!"); + #ifdef MEMBLOCK_BIG_LOCK if (pthread_mutex_unlock(&mtex)) abort(); #endif @@ -263,6 +276,7 @@ get_free_mem_block (uint32_t sizeP) #endif } while (pool_selected++ < 12); + LOG_E(PHY, "[MEM_MNGT][ERROR][FATAL] failed allocating MEM_BLOCK size %d byes (pool_selected=%d size=%d)\n", sizeP, pool_selected, size); display_mem_load(); mac_xface->macphy_exit("[MEM_MNGT][ERROR][FATAL] get_free_mem_block failed"); @@ -287,6 +301,13 @@ get_free_copy_mem_block (void) if ((le = list_remove_head (&mem_block_var.mem_lists[MEM_MNGT_POOL_ID_COPY]))) { #ifdef DEBUG_MEM_MNGT_ALLOC_SIZE msg ("[MEM_MNGT][INFO] ALLOC COPY MEM BLOCK (%p)\n",le); +#endif +#ifdef DEBUG_MEM_MNGT_ALLOC + counters[MEM_MNGT_POOL_ID_COPY] += 1; + msg ("[MEM_MNGT][INFO] pool counters = {%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d %2d}\n", + counters[0],counters[1],counters[2],counters[3],counters[4], + counters[5],counters[6],counters[7],counters[8],counters[9], + counters[10],counters[11]); #endif return le; } else { diff --git a/openair2/UTIL/MEM/mem_block.h b/openair2/UTIL/MEM/mem_block.h index 8164dcf51c..c3a2f5dff2 100644 --- a/openair2/UTIL/MEM/mem_block.h +++ b/openair2/UTIL/MEM/mem_block.h @@ -55,8 +55,8 @@ typedef struct mem_block_t { public_mem_block(void *pool_buffer_init (void);) public_mem_block(void *pool_buffer_clean (void *arg);) -public_mem_block(void free_mem_block (mem_block_t * leP);) -public_mem_block(mem_block_t* get_free_mem_block (uint32_t sizeP);) +public_mem_block(void free_mem_block (mem_block_t * leP, const char* caller);) +public_mem_block(mem_block_t* get_free_mem_block (uint32_t sizeP, const char* caller);) public_mem_block(mem_block_t *get_free_copy_mem_block (void);) public_mem_block(mem_block_t *get_free_copy_mem_block_up (void);) public_mem_block(mem_block_t *copy_mem_block (mem_block_t * leP, mem_block_t * destP);) diff --git a/openair2/UTIL/MEM/mem_mngt.c b/openair2/UTIL/MEM/mem_mngt.c index 64503d8cb7..9f4f57cdd2 100644 --- a/openair2/UTIL/MEM/mem_mngt.c +++ b/openair2/UTIL/MEM/mem_mngt.c @@ -161,7 +161,7 @@ pool_buffer_clean (void *arg) } //----------------------------------------------------------------------------- void -free_mem_block (mem_block_t * leP) +free_mem_block (mem_block_t * leP, __func__) { //----------------------------------------------------------------------------- @@ -171,10 +171,10 @@ free_mem_block (mem_block_t * leP) } #ifdef DEBUG_MEM_MNGT_FREE - msg ("[MEM_MNGT][FREE] free_mem_block() %p pool: %d\n", leP, leP->pool_id); + msg ("[MEM_MNGT][FREE] free_mem_block() %p pool: %d\n", leP, leP->pool_id, __func__); #endif #ifdef DEBUG_MEM_MNGT_ALLOC - check_free_mem_block (leP); + check_free_mem_block (leP, __func__); #endif if (leP->pool_id <= MEM_MNGT_POOL_ID_COPY) { @@ -184,14 +184,14 @@ free_mem_block (mem_block_t * leP) #endif leP = NULL; // this prevent from freeing the block twice } else { - msg ("[MEM_MNGT][FREE] ERROR free_mem_block() unknown pool_id : %d\n", leP->pool_id); + msg ("[MEM_MNGT][FREE] ERROR free_mem_block() unknown pool_id : %d\n", leP->pool_id, __func__); } } //----------------------------------------------------------------------------- mem_block_t * -get_free_mem_block (uint16_t sizeP) +get_free_mem_block (uint16_t sizeP, __func__) { //----------------------------------------------------------------------------- mem_block_t *le = NULL; @@ -414,7 +414,7 @@ check_mem_area (void *arg) //----------------------------------------------------------------------------- void -check_free_mem_block (mem_block_t * leP) +check_free_mem_block (mem_block_t * leP, __func__) { //----------------------------------------------------------------------------- int block_index; diff --git a/openair2/UTIL/TIMER/umts_timer.c b/openair2/UTIL/TIMER/umts_timer.c index ff21ce8e84..9978419fb8 100644 --- a/openair2/UTIL/TIMER/umts_timer.c +++ b/openair2/UTIL/TIMER/umts_timer.c @@ -54,7 +54,7 @@ umts_timer_check_time_out (list2_t * atimer_listP, uint32_t current_frame_tick_m mem_unit = list2_remove_head (atimer_listP); (*(timer->proc)) (timer->protocol, timer->timer_id); - free_mem_block (mem_unit); + free_mem_block (mem_unit, __func__); mem_unit = atimer_listP->head; } else { @@ -74,7 +74,7 @@ umts_timer_delete_timer (list2_t * atimer_listP, void *timer_idP) while ((mem_unit)) { if (((struct timer_unit *) (mem_unit->data))->timer_id == timer_idP) { list2_remove_element (mem_unit, atimer_listP); - free_mem_block (mem_unit); + free_mem_block (mem_unit, __func__); return; } @@ -93,7 +93,7 @@ umts_add_timer_list_up (list2_t * atimer_listP, void (*procP) (void *, void *), int32_t remaining_time; uint8_t inserted = 0; - mb = get_free_mem_block (sizeof (struct timer_unit)); + mb = get_free_mem_block (sizeof (struct timer_unit), __func__); ((struct timer_unit *) (mb->data))->proc = procP; ((struct timer_unit *) (mb->data))->protocol = protocolP; ((struct timer_unit *) (mb->data))->timer_id = timer_idP; @@ -166,7 +166,7 @@ umts_stop_all_timers_except (list2_t * atimer_listP, void (*procP) (void *, void mem_unit_to_delete = mem_unit; mem_unit = mem_unit->next; list2_remove_element (mem_unit_to_delete, atimer_listP); - free_mem_block (mem_unit_to_delete); + free_mem_block (mem_unit_to_delete, __func__); } else { mem_unit = mem_unit->next; } diff --git a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c index dc395281dc..d64315fc25 100644 --- a/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c +++ b/targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c @@ -132,7 +132,7 @@ void pdcp_rlc_test_mac_rlc_loop (struct mac_data_ind *data_indP, struct mac_dat *tx_packetsP = *tx_packetsP + 1; if (*drop_countP == 0) { - tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size); + tb_dst = get_free_mem_block(sizeof (mac_rlc_max_rx_header_size_t) + tb_size, __func__); if (tb_dst != NULL) { ((struct mac_tb_ind *) (tb_dst->data))->first_bit = 0; @@ -156,7 +156,7 @@ void pdcp_rlc_test_mac_rlc_loop (struct mac_data_ind *data_indP, struct mac_dat *dropped_tx_packetsP = *dropped_tx_packetsP + 1; } - free_mem_block(tb_src); + free_mem_block(tb_src, __func__); if (data_indP->no_tb > 0) { printf("[RLC-LOOP] Exchange %d TBs\n",data_indP->no_tb); -- GitLab