diff --git a/hievent/src/hievent_driver.c b/hievent/src/hievent_driver.c index f62d408c035f0e7d65321bf16b00795731dc5a9f..e4c274e1839c3bdf7b0f9e1675e7a92f7a4d1efa 100644 --- a/hievent/src/hievent_driver.c +++ b/hievent/src/hievent_driver.c @@ -354,23 +354,31 @@ static struct file_operations_vfs g_hieventFops = { .poll = HieventPoll, /* poll */ }; -static void HieventDeviceInit(void) +static int HieventDeviceInit(void) { g_hieventDev.buffer = LOS_MemAlloc((VOID *)OS_SYS_MEM_ADDR, HIEVENT_LOG_BUFFER); + if (g_hieventDev.buffer == NULL) { + return -ENOMEM; + } init_waitqueue_head(&g_hieventDev.wq); - LOS_MuxInit(&g_hieventDev.mtx, NULL); + (void)LOS_MuxInit(&g_hieventDev.mtx, NULL); g_hieventDev.writeOffset = 0; g_hieventDev.headOffset = 0; g_hieventDev.size = 0; g_hieventDev.count = 0; + return 0; } int HieventInit() { - HieventDeviceInit(); + int ret = HieventDeviceInit(); + if (ret != 0) { + return ret; + } + register_driver("/dev/hwlog_exception", &g_hieventFops, DRIVER_MODE, &g_hieventDev); return 0;