diff --git a/hievent/src/hievent_driver.c b/hievent/src/hievent_driver.c index 9d0550be85127fcc9819128c96b47e66ce4ec240..a069dac9cd2c1167b7938e2a6f179f47b4bb0213 100644 --- a/hievent/src/hievent_driver.c +++ b/hievent/src/hievent_driver.c @@ -359,23 +359,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(void) { - HieventDeviceInit(); + int ret = HieventDeviceInit(); + if (ret != 0) { + return ret; + } + register_driver("/dev/hwlog_exception", &g_hieventFops, DRIVER_MODE, &g_hieventDev); return 0;