设备驱动程序可执行以下任务来记录事件:
使用 nvlist_alloc(9F) 为特性列表分配内存
向特性列表添加名称-值对
使用 ddi_log_sysevent(9F) 函数在 sysevent 队列中记录事件
不再需要特性列表时调用 nvlist_free(9F)
以下示例说明如何使用 ddi_log_sysevent()。
char *vendor_name = "DDI_VENDOR_JGJG" char *my_class = "JGJG_event"; char *my_subclass = "JGJG_alert"; nvlist_t *nvl; /* ... */ nvlist_alloc(&nvl, nvflag, kmflag); /* ... */ (void) nvlist_add_byte_array(nvl, propname, (uchar_t *)propval, proplen + 1); /* ... */ if (ddi_log_sysevent(dip, vendor_name, my_class, my_subclass, nvl, NULL, DDI_SLEEP)!= DDI_SUCCESS) cmn_err(CE_WARN, "error logging system event"); nvlist_free(nvl);