/* Allocate Command IPC */ struct esif_ipc *esif_ipc_alloc_command( struct esif_ipc_command **command_ptr_ptr, u32 data_len ) { struct esif_ipc *ipc_ptr = NULL; ESIF_ASSERT(command_ptr_ptr != NULL); ipc_ptr = esif_ipc_alloc(ESIF_IPC_TYPE_COMMAND, data_len + sizeof(**command_ptr_ptr)); if (NULL == ipc_ptr) { *command_ptr_ptr = NULL; } else { struct esif_ipc_command *command_ptr = NULL; command_ptr = (struct esif_ipc_command *)(ipc_ptr + 1); command_ptr->version = ESIF_COMMAND_VERSION; command_ptr->priority = ESIF_COMMAND_PRIORITY_NORMAL; command_ptr->payload_len = data_len; *command_ptr_ptr = command_ptr; } return ipc_ptr; }
/* Allocate Event IPC */ struct esif_ipc *esif_ipc_alloc_event( struct esif_ipc_event **event_ptr_ptr, u32 data_len ) { struct esif_ipc *ipc_ptr = NULL; ESIF_ASSERT(event_ptr_ptr != NULL); ipc_ptr = esif_ipc_alloc(ESIF_IPC_TYPE_EVENT, data_len + sizeof(**event_ptr_ptr)); if (NULL == ipc_ptr) { *event_ptr_ptr = NULL; } else { esif_ccb_time_t timestamp = {0}; struct esif_ipc_event *event_ptr = NULL; event_ptr = (struct esif_ipc_event *)(ipc_ptr + 1); event_ptr->version = ESIF_EVENT_VERSION; event_ptr->priority = ESIF_EVENT_PRIORITY_NORMAL; event_ptr->data_len = data_len; esif_ccb_system_time(×tamp); event_ptr->timestamp = (u64)timestamp; *event_ptr_ptr = event_ptr; } return ipc_ptr; }
/* Allocate Primitive IPC */ struct esif_ipc *esif_ipc_alloc_primitive( struct esif_ipc_primitive **primitive_ptr_ptr, u32 data_len ) { struct esif_ipc *ipc_ptr = NULL; ipc_ptr = esif_ipc_alloc(ESIF_IPC_TYPE_PRIMITIVE, data_len + sizeof(struct esif_ipc_primitive)); if (NULL == ipc_ptr) { *primitive_ptr_ptr = NULL; } else { struct esif_ipc_primitive *primitive_ptr = NULL; primitive_ptr = (struct esif_ipc_primitive *)(ipc_ptr + 1); primitive_ptr->version = ESIF_PRIMITIVE_VERSION; primitive_ptr->payload_len = data_len; *primitive_ptr_ptr = primitive_ptr; } return ipc_ptr; }