色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 利用udev、sys動態(tài)創(chuàng)建linux設備結(jié)點

          利用udev、sys動態(tài)創(chuàng)建linux設備結(jié)點

          作者: 時間:2012-08-27 來源:網(wǎng)絡 收藏

          在Linux2.6內(nèi)核中,devfs被認為是過時的方法,并最終被拋棄,取代了它。Devfs的一個很重要的特點就是可以。那我們現(xiàn)在如何通過文件系統(tǒng)呢?

          本文引用地址:http://cafeforensic.com/article/148527.htm

          下面通過一個實例,說明的方法。注意代碼中紅色的部分是為了實現(xiàn)動態(tài)創(chuàng)建設備結(jié)點添加的。

          #include

          #include

          #include

          #include

          #include

          #include

          #include

          MODULE_LICENSE (GPL);

          int hello_major = 252;

          int hello_minor = 0;

          int number_of_devices = 1;

          char data[50]=foobar not equal to barfoo;

          STruct cdev cdev;

          dev_t dev = 0;

          staTIc int hello_open (struct inode *inode, struct file *file)

          {

          printk (KERN_INFO Hey! device openedn);

          return 0;

          }

          static int hello_release (struct inode *inode, struct file *file)

          {

          printk (KERN_INFO Hmmm... device closedn);

          return 0;

          }

          ssize_t hello_read (struct file *filp, char *buff, size_t count, loff_t *offp)

          {

          ssize_t result = 0;

          if (copy_to_user (buff, data, sizeof(data)-1))

          result = -EFAULT;

          else

          printk (KERN_INFO wrote %d bytesn, count);

          return result;

          }

          ssize_t hello_write (struct file *filp, cONst char *buf, size_t count, loff_t *f_pos)

          {

          ssize_t ret = 0;

          printk (KERN_INFO Writing %d bytesn, count);

          if (count>127) return -ENOMEM;

          if (count0) return -EINVAL;

          if (copy_from_user (data, buf, count)) {

          ret = -EFAULT;

          }

          else {

          data[127]='