设备驱动程序可执行以下任务来记录事件:
使用 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);