驱动里面有如下代码: static struct platformm_driver smb5_drriver={ .driver={ .name = "qcom,qpnp-smb5", .of_match_table = mtch_tablee, } .probe = smb5_probe, .remove = smb5_remove, .shutdown = smb5_shutdown, }; module_platform__driver(smb5_driiver); 其中,外部或者说binder是如何调用shutdown 方法的?
时间: 2024-03-29 09:37:51 浏览: 68
在Linux内核中,`struct platform_driver`结构体中的`.shutdown`函数是在系统关闭时被调用的。当用户请求关机或重启操作时,内核会向所有注册了`.shutdown`函数的驱动程序发送信号,通知它们关闭硬件设备或释放资源等操作。
在你提供的驱动程序中,`smb5_shutdown`函数被指定为`.shutdown`函数,因此当系统关闭时,内核会自动调用`smb5_shutdown`函数。该函数用于释放`smb5`驱动程序占用的资源,例如释放已经分配的内存、关闭硬件设备等。
至于外部或者说binder是如何调用`smb5_shutdown`函数的,实际上并没有外部或者binder直接调用`smb5_shutdown`函数的过程。`smb5_shutdown`函数是在Linux内核中被调用的,而binder是用户空间与内核空间之间的通信接口,不会直接调用内核中的函数。当用户空间应用程序向内核空间发起请求时,内核会根据请求的类型调用相应的函数,其中就包括了驱动程序中的`.probe`、`.remove`和`.shutdown`等函数。
阅读全文