在模块/驱动程序中打开内核驱动程序

时间:2012-08-25 09:59:20

标签: c linux linux-kernel kernel

您好我写了一个将数据传递给/dev/ttyS0的用户应用程序..我使用php将数据发送到用户应用程序然后在用户应用程序中有一个if else然后将新数据传递给{{1} } ..

E.g。

/dev/ttyS0

php通过“go up”到用户应用程序然后用户应用程序然后它执行if else进行字符串比较,当它为真时将新数据(例如.xxff)传递给驱动程序(dev / ttyS0);

我还写了第一个读取和写入的char驱动程序..这是我跟随PHP -> user app - > driver(/dev/ttyS0); 的网站

现在的问题是..是否有可能在驱动程序中打开一个驱动程序?..我知道这样做是非常错误的..但我想制作我自己的驱动程序,它在内部进行if else比较所以没有需要用户应用程序,所以传递数据就像这样:

http://lwn.net/Kernel/LDD3/

以下是我的用户应用代码示例..

PHP - > mydriver(which translates the data like my user app does)..

我如何修改我的代码,以便我可以放入我的char驱动程序?...例如。修改int main(int argc,char *argv[]) { unsigned char pCom[2][7]={{0xFF,0x01,0x00,0x08,0x00,0x3F,0x48}, {0xFF,0x01,0x00,0x10,0x00,0x3F,0x50}}; int fd; int p; fd=open("/dev/ttyS0",O_RDWR | O_NOCTTY | O_NDELAY); if(fd<0) exit(1); set_port(fd); if(strcmp(argv[1], "go up")==0){ for(p=0; p<8; p++){ write(fd,pCom[0],8); } ssize_t (*read)?或者我可以直接在ssize_t (*write)内写这个 你能告诉我如何做的样品吗?..

提前谢谢..

1 个答案:

答案 0 :(得分:1)

不要那样做。正如你自己指出的那样,这不是它应该完成的方式,我也看不到真正的好处:

<强>优点:

  1. 无需安装用户模式应用程序。
  2. <强>缺点:

    1. 需要安装内核模式驱动程序。
    2. 更新内核时需要更新驱动程序。
    3. 如果驱动程序代码出错,整个系统崩溃。
    4. 另一方面,您可能想要创建例如一个fifo或tcp套接字,以便PHP应用程序可以轻松地与您的用户应用程序通信。其他选择是直接在PHP中编写if-else代码,或者作为可以从PHP调用的库。