<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何通過udev和sys文件系統(tǒng)動(dòng)態(tài)創(chuàng)建設(shè)備結(jié)點(diǎn)

          如何通過udev和sys文件系統(tǒng)動(dòng)態(tài)創(chuàng)建設(shè)備結(jié)點(diǎn)

          作者: 時(shí)間:2011-05-10 來源:網(wǎng)絡(luò) 收藏

          在Linux2.6內(nèi)核中,devfs被認(rèn)為是過時(shí)的方法,并最終被拋棄,取代了它。Devfs的一個(gè)很重要的特點(diǎn)就是可以。那我們現(xiàn)在呢?

          本文引用地址:http://www.ex-cimer.com/article/150776.htm

          下面一個(gè)實(shí)例,說明、的方法。注意代碼中紅色的部分是為了實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建設(shè)備結(jié)點(diǎn)添加的。
          #include linux/module.h>
          #include linux/kernel.h>
          #include linux/init.h>
          #include linux/fs.h>
          #include linux/cdev.h>
          #include asm/uaccess.h>
          #include linux/device.h>
          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]='看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();