fix itti issue in memory management
This commit is contained in:
@@ -91,8 +91,16 @@ task_list_t tasks[TASK_MAX];
|
||||
return (EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
// in the two following functions, the +32 in malloc is there to deal with gcc memory alignment
|
||||
// because a struct size can be larger than sum(sizeof(struct components))
|
||||
// We should remove the itti principle of a huge union for all types of messages in paramter "msg_t ittiMsg"
|
||||
// to use a more C classical pointer casting "void * ittiMsg", later casted in the right struct
|
||||
// but we would have to change all legacy macros, as per this example
|
||||
// #define S1AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_req
|
||||
// would become
|
||||
// #define S1AP_REGISTER_ENB_REQ(mSGpTR) (s1ap_register_enb_req) mSGpTR)->ittiMsg
|
||||
MessageDef *itti_alloc_new_message_sized(task_id_t origin_task_id, MessagesIds message_id, MessageHeaderSize size) {
|
||||
MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, sizeof(MessageHeader) + size);
|
||||
MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, sizeof(MessageHeader) +32 + size);
|
||||
temp->ittiMsgHeader.messageId = message_id;
|
||||
temp->ittiMsgHeader.originTaskId = origin_task_id;
|
||||
temp->ittiMsgHeader.ittiMsgSize = size;
|
||||
@@ -100,7 +108,7 @@ task_list_t tasks[TASK_MAX];
|
||||
}
|
||||
|
||||
MessageDef *itti_alloc_new_message(task_id_t origin_task_id, MessagesIds message_id) {
|
||||
int size=sizeof(MessageHeader) + messages_info[message_id].size;
|
||||
int size=sizeof(MessageHeader) + 32 + messages_info[message_id].size;
|
||||
MessageDef *temp = (MessageDef *)itti_malloc (origin_task_id, TASK_UNKNOWN, size);
|
||||
temp->ittiMsgHeader.messageId = message_id;
|
||||
temp->ittiMsgHeader.originTaskId = origin_task_id;
|
||||
|
||||
Reference in New Issue
Block a user