/driver/char/ipmi/ipmi_msghander.c
源码分析:
(1)module_init
ipmi_init_msghandler_mod() // 驱动加载时,调用该接口
ipmi_register_driver(&ipmidriver.driver) // 标记
rv = driver_register();
return rv;
ipmi_init_msghandler // 其他模块调用该接口,确认设备已经注册
ipmi_register_driver
if (未注册)
init_srcu_struct // 初始化rcu
timer_setup(ipmi_timeout) // 初始化定时器
mod_timer // 配置定时器
atomic_notifier_chain_register // 注册通知链
ipmi_timeout:
ipmi_request_event //
intf->handlers->request_events // 回调
ipmi_timeout_handler //
(2)对外接口 ipmi_ioctl
IPMICTL_SEND_COMMAND:
handle_send_req
ipmi_validate_addr // 地址校验
ipmi_request_settime //
acquire_ipmi_user // 申请user的作用?
srcu_dereference
check_addr // 地址校验
i_ipmi_request // 待详细分析
release_ipmi_user