Merge remote-tracking branch 'origin/develop' into enhancement-ltem

This commit is contained in:
Raymond Knopp
2019-01-19 12:14:23 +01:00
90 changed files with 785 additions and 6321 deletions
-67
View File
@@ -1,67 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "defs.h"
#include "linux/module.h"
#ifdef BIGPHYSAREA
#ifdef ARCH_64
char *bigphys_ptr,*bigphys_current;
#else //ARCH_64
unsigned int bigphys_ptr,bigphys_current;
#endif //ARCH_64
// return pointer to memory in big physical area aligned to 16 bytes
void* bigphys_malloc(int n)
{
int n2 = n + ((16-(n%16))%16);
#ifdef ARCH_64
char *bigphys_old;
#else
unsigned int bigphys_old;
#endif
printk("[BIGPHYSAREA] Calling bigphys_malloc for %d (%d) bytes\n",n,n2);
#ifdef ARCH_64
printk("[BIGPHYSAREA] Allocated Memory @ %p\n",bigphys_current);
#endif
bigphys_old = bigphys_current;
bigphys_current += n2;
#ifdef ARCH_64
printk("[BIGPHYSAREA] Allocated Memory top now @ %p\n",bigphys_current);
return ((void *)(bigphys_old));
#else //ARCH_64
//printk("[BIGPHYSAREA] Allocated Memory %d\n",bigphys_current-bigphys_ptr);
return ((void *)(bigphys_old));
#endif //ARCH_64
}
EXPORT_SYMBOL(bigphys_malloc);
#endif
-22
View File
@@ -1,22 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
void* bigphys_malloc(int);
-108
View File
@@ -1,108 +0,0 @@
MEM_DIR = $(OPENAIR2_TOP)/UTIL/MEM
LIST_DIR = $(OPENAIR2_TOP)/UTIL/LISTS
FIFO_DIR = $(OPENAIR2_TOP)/UTIL/FIFO
MATH_DIR = $(OPENAIR2_TOP)/UTIL/MATH
TIMER_DIR = $(OPENAIR2_TOP)/UTIL/TIMER
LOG_DIR=$(OPENAIR2_TOP)/UTIL/LOG
OCG_DIR=$(OPENAIR2_TOP)/UTIL/OCG
OPT_DIR=$(OPENAIR2_TOP)/UTIL/OPT
OMG_DIR=$(OPENAIR2_TOP)/UTIL/OMG
OTG_DIR=$(OPENAIR2_TOP)/UTIL/OTG
CLI_DIR=$(OPENAIR2_TOP)/UTIL/CLI
OMV_DIR=$(OPENAIR2_TOP)/UTIL/OMV
LFDS_DIR=$(OPENAIR2_TOP)/UTIL/LFDS/liblfds6.1.1/liblfds611
OSA_DIR=$(OPENAIR2_TOP)/UTIL/OSA
LIST_OBJ = $(LIST_DIR)/list.o
FIFO_OBJ = $(FIFO_DIR)/pad_list.o
LIST_OBJ += $(LIST_DIR)/list2.o
TIMER_OBJ += $(TIMER_DIR)/umts_timer.o
MEM_OBJ += $(MEM_DIR)/mem_block.o
LOG_OBJS = $(LOG_DIR)/log.o
LOG_OBJS += $(LOG_DIR)/vcd_signal_dumper.o
OCG_OBJS = $(OCG_DIR)/OCG.o
OCG_OBJS += $(OCG_DIR)/OCG_create_dir.o
OCG_OBJS += $(OCG_DIR)/OCG_detect_file.o
OCG_OBJS += $(OCG_DIR)/OCG_generate_report.o
OCG_OBJS += $(OCG_DIR)/OCG_parse_filename.o
OCG_OBJS += $(OCG_DIR)/OCG_parse_XML.o
OCG_OBJS += $(OCG_DIR)/OCG_save_XML.o
ifdef SECU
OSA_OBJS = $(OSA_DIR)/osa_key_deriver.o
OSA_OBJS += $(OSA_DIR)/osa_stream_eia.o
OSA_OBJS += $(OSA_DIR)/osa_stream_eea.o
OSA_OBJS += $(OSA_DIR)/osa_snow3g.o
OSA_OBJS += $(OSA_DIR)/osa_rijndael.o
endif
OPT_OBJS = $(OPT_DIR)/probe.o
OMG_OBJS = $(OMG_DIR)/omg.o
OMG_OBJS += $(OMG_DIR)/common.o
OMG_OBJS += $(OMG_DIR)/job.o
OMG_OBJS += $(OMG_DIR)/static.o
OMG_OBJS += $(OMG_DIR)/rwp.o
OMG_OBJS += $(OMG_DIR)/rwalk.o
#OMG_OBJS += $(OMG_DIR)/omg_hashtable.o
OMG_OBJS += $(OMG_DIR)/mobility_parser.o
OMG_OBJS += $(OMG_DIR)/trace.o
OMG_OBJS += $(OMG_DIR)/sumo.o
OMG_OBJS += $(OMG_DIR)/id_manager.o
OMG_OBJS += $(OMG_DIR)/client_traci_OMG.o
OMG_OBJS += $(OMG_DIR)/storage_traci_OMG.o
OMG_OBJS += $(OMG_DIR)/socket_traci_OMG.o
OMG_OBJS += $(OMG_DIR)/steadystaterwp.o
OMG_OBJS += $(OMG_DIR)/grid.o
OMG_OBJS += $(OMG_DIR)/trace_hashtable.o
OTG_OBJS = $(OTG_DIR)/otg_tx.o
OTG_OBJS += $(OTG_DIR)/otg.o
OTG_OBJS += $(OTG_DIR)/otg_rx.o
OTG_OBJS += $(OTG_DIR)/otg_kpi.o
OTG_OBJS += $(OTG_DIR)/otg_form.o
OTG_OBJS += $(OTG_DIR)/otg_models.o
MATH_OBJS = $(MATH_DIR)/oml.o
CLI_OBJ = $(CLI_DIR)/cli_server.o
CLI_OBJ += $(CLI_DIR)/cli.o
CLI_OBJ += $(CLI_DIR)/cli_cmd.o
UTIL_OBJ = \
$(OSA_OBJS) \
$(FIFO_OBJ) \
$(LIST_OBJ) \
$(TIMER_OBJ) \
$(MEM_OBJ) \
$(LOG_OBJS) \
$(OCG_OBJS) \
$(MATH_OBJS) \
$(OTG_OBJS) \
$(CLI_OBJ) \
$(OMG_OBJS) \
$(OPT_OBJS)
UTIL_incl = \
-I$(OPENAIR2_TOP)/UTIL \
-I$(OSA_DIR) \
-I$(LFDS_DIR)/inc \
-I$(MEM_DIR) \
-I$(LIST_DIR) \
-I$(FIFO_DIR) \
-I$(OCG_DIR) \
-I$(LOG_DIR) \
-I$(MATH_DIR) \
-I$(TIMER_DIR) \
-I$(OMG_DIR) \
-I$(OTG_DIR) \
-I$(CLI_DIR) \
-I$(OPT_DIR) \
-I$(OMV_DIR)
-175
View File
@@ -1,175 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/***************************************************************************
umts_timer.c - description
-------------------
AUTHOR : Lionel GAUTHIER
COMPANY : EURECOM
EMAIL : Lionel.Gauthier@eurecom.fr
***************************************************************************/
//#include "rtos_header.h"
#include "platform_types.h"
#include "list.h"
#include "umts_timer_struct.h"
#include "mem_block.h"
#include "openair_defs.h"
//-----------------------------------------------------------------------------
void
umts_timer_check_time_out (list2_t * atimer_listP, uint32_t current_frame_tick_millisecondsP)
{
//-----------------------------------------------------------------------------
struct timer_unit *timer;
mem_block_t *mem_unit;
uint8_t time_out = 255;
mem_unit = atimer_listP->head;
// do it simple now.
while ((mem_unit) && (time_out)) {
timer = (struct timer_unit *) (mem_unit->data);
if ((current_frame_tick_millisecondsP - timer->frame_tick_start) >= timer->frame_time_out) {
mem_unit = list2_remove_head (atimer_listP);
(*(timer->proc)) (timer->protocol, timer->timer_id);
free_mem_block (mem_unit, __func__);
mem_unit = atimer_listP->head;
} else {
time_out = 0;
}
}
}
//-----------------------------------------------------------------------------
void
umts_timer_delete_timer (list2_t * atimer_listP, void *timer_idP)
{
//-----------------------------------------------------------------------------
mem_block_t *mem_unit;
mem_unit = atimer_listP->head;
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, __func__);
return;
}
mem_unit = mem_unit->next;
}
}
//-----------------------------------------------------------------------------
mem_block_t *
umts_add_timer_list_up (list2_t * atimer_listP, void (*procP) (void *, void *), void *protocolP, void *timer_idP, uint32_t frame_time_outP, uint32_t current_frame_tick_millisecondsP)
{
//-----------------------------------------------------------------------------
struct mem_block_t *mb;
struct timer_unit *timer;
mem_block_t *mem_unit;
int32_t remaining_time;
uint8_t inserted = 0;
mb = get_free_mem_block (sizeof (struct timer_unit), __func__);
if(mb==NULL) return NULL;
((struct timer_unit *) (mb->data))->proc = procP;
((struct timer_unit *) (mb->data))->protocol = protocolP;
((struct timer_unit *) (mb->data))->timer_id = timer_idP;
((struct timer_unit *) (mb->data))->frame_time_out = frame_time_outP;
((struct timer_unit *) (mb->data))->frame_tick_start = current_frame_tick_millisecondsP;
// insert the timer in list in ascending order
mem_unit = atimer_listP->head;
while ((mem_unit) && (!inserted)) {
timer = (struct timer_unit *) (mem_unit->data);
remaining_time = timer->frame_time_out - current_frame_tick_millisecondsP + timer->frame_tick_start;
// not timed out
if ((remaining_time > 0) && (frame_time_outP < remaining_time)) {
inserted = 255;
if (mem_unit == atimer_listP->head) {
#ifdef DEBUG_TIMER
msg ("[TIMER][CREATION] added timer_id %p at head time out %d current time %d proc %p \n", timer_idP, frame_time_outP, current_frame_tick_millisecondsP, *procP);
#endif
list2_add_head (mb, atimer_listP);
} else {
#ifdef DEBUG_TIMER
msg ("[TIMER][CREATION] inserted timer_id %p time out %d current time %d proc %p \n", timer_idP, frame_time_outP, current_frame_tick_millisecondsP, *procP);
#endif
mb->previous = mem_unit->previous;
mb->next = mem_unit;
mem_unit->previous->next = mb;
mem_unit->previous = mb;
}
} else {
mem_unit = mem_unit->next;
}
}
if (!inserted) {
#ifdef DEBUG_TIMER
msg ("[TIMER][CREATION] added timer_id %p at tail time out %d current time %d proc %p \n", timer_idP, frame_time_outP, current_frame_tick_millisecondsP, *procP);
#endif
list2_add_tail (mb, atimer_listP);
}
return mb;
}
//-----------------------------------------------------------------------------
void
umts_stop_all_timers (list2_t * atimer_listP)
{
//-----------------------------------------------------------------------------
list2_free (atimer_listP);
}
//-----------------------------------------------------------------------------
void
umts_stop_all_timers_except (list2_t * atimer_listP, void (*procP) (void *, void *))
{
//-----------------------------------------------------------------------------
struct timer_unit *timer;
mem_block_t *mem_unit;
mem_block_t *mem_unit_to_delete;
mem_unit = atimer_listP->head;
while ((mem_unit)) {
timer = (struct timer_unit *) (mem_unit->data);
if (timer->proc != procP) {
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, __func__);
} else {
mem_unit = mem_unit->next;
}
}
}
-56
View File
@@ -1,56 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/***************************************************************************
umts_timer.h - description
-------------------
AUTHOR : Lionel GAUTHIER
COMPANY : EURECOM
EMAIL : Lionel.Gauthier@eurecom.fr
***************************************************************************/
#ifndef __UMTS_TIMER_H__
# define __UMTS_TIMER_H__
# include "platform_types.h"
# include "lists_proto_extern.h"
# include "mem_mngt_proto_extern.h"
# define UMTS_TIMER_NOT_STARTED 0x00
# define UMTS_TIMER_STARTED 0x01
# define UMTS_TIMER_TIMED_OUT 0x02
void umts_timer_check_time_out (list2_t * atimer_listP, uint32_t current_frame_tick_millisecondsP);
mem_block *umts_add_timer_list_up (list2_t * atimer_listP, void (*procP) (void *, void *), void *protocolP, void *timer_idP, uint32_t frame_time_outP, uint32_t current_frame_tick_millisecondsP);
struct timer_unit {
void (*proc) (void *, void *); // proc executed when time_out
void *protocol; // arg should be a pointer on a allocated protocol entity private struct including its variables
void *timer_id; // arg should be a value or a pointer identifying the timer
// Example: rlc_am_sdu_discard_time_out(rlc_am, sdu)
uint32_t frame_time_out;
uint32_t frame_tick_start;
};
#endif
@@ -1,44 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/***************************************************************************
umts_timer_proto_extern.h - description
-------------------
AUTHOR : Lionel GAUTHIER
COMPANY : EURECOM
EMAIL : Lionel.Gauthier@eurecom.fr
***************************************************************************/
#ifndef __UMTS_TIMER_PROTO_EXTERN_H__
# define __UMTS_TIMER_PROTO_EXTERN_H__
# include "platform_types.h"
# include "list.h"
# include "mem_block.h"
extern void umts_timer_check_time_out (list2_t * atimer_listP, uint32_t current_frame_tick_millisecondsP);
extern void umts_timer_delete_timer (list2_t * atimer_listP, void *timer_idP);
extern mem_block_t *umts_add_timer_list_up (list2_t * atimer_listP, void (*procP) (void *, void *), void *protocolP, void *timer_idP, uint32_t frame_time_outP,
uint32_t current_frame_tick_millisecondsP);
extern void umts_stop_all_timers (list2_t * atimer_listP);
extern void umts_stop_all_timers_except (list2_t * atimer_listP, void (*procP) (void *, void *));
#endif
-46
View File
@@ -1,46 +0,0 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/***************************************************************************
umts_timer_struct.h - description
-------------------
AUTHOR : Lionel GAUTHIER
COMPANY : EURECOM
EMAIL : Lionel.Gauthier@eurecom.fr
***************************************************************************/
#ifndef __UMTS_TIMER_STRUCT_H__
# define __UMTS_TIMER_STRUCT_H__
# include "platform_types.h"
struct timer_unit {
void (*proc) (void *, void *); // proc executed when time_out
void *protocol; // arg should be a pointer on a allocated protocol entity private struct including its variables
void *timer_id; // arg should be a value or a pointer identifying the timer
// Example: rlc_am_sdu_discard_time_out(rlc_am, sdu)
uint32_t frame_time_out;
uint32_t frame_tick_start;
};
#endif