分类: 嵌入式
2016-07-25 15:36:35
linux-uk-proxy.ko 字符设备,加载模块时生成设备节点/dev/linux-uk-proxy
linux-uk-proxy.ko 模块中创建一个链表_service_list,与bcm shell交互的数据全保存在该链表中,比如linux-uk-proxy.接收bcm shell下发过来的数据会保存在该链表中,反之linux-uk-proxy.应答bcm shell也是从该链表中拷贝数据,然后发送给bcm shell。
那么该_service_list是如何和驱动交互的呢?
Bcm shell是应用程序,首先open dev/linux-uk-proxy,然后通过ioctl与linux-uk-proxy.ko交互。包括发送用户输入给linux-uk-proxy及接收驱动执行用户输入后的应答结果。
linux-bcm-diag.ko模块在初始化过程中会创建一个线程bcm_shell,该线程,bcm shell主体如下:
while (1) { sh_process(-1, "BCM", TRUE); } |
在 sh_process中获取用户的输入,然后调用对应的处理函数。