色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 字符設備驅動框架搭建流程

字符設備驅動框架搭建流程 時間:2014-11-05      來源:未知

字符設備驅動框架編寫流程如下:

(1)創建并注冊設備號

1—創建設備號dev_t
        static int hello_major = 250; //主設備號
        static int hello_minor = 0; //次設備號
        dev_t devno = MKDEV(hello_major, hello_minor);

2—申請設備號
        ret = register_chrdev_region(devno, number_of_device, "hello");
        if (ret < 0) {
        printk("failed from register_chrdev_region\n");
        return ret;
        }

3—釋放設備號
        unregister_chrdev_region(devno, 1);

(2)設置操作集合ops
        定義file_operations 
        struct file_operations hello_ops = {
        .owner = THIS_MODULE,
        };

(3)注冊字符設備結構體cdev
        1、定義 
        a、struct cdev cdev; ----推薦
        b、struct cdev *cdev;
        cdev = cdev_alloc();
        2、初始化
        cdev_init(&cdev, &hello_ops);
        cdev.owner = THIS_MODULES;
        3、字符設備注冊
        cdev_add(&cdev, devno, 1);
        4、字符設備的注銷
        cdev_del(&cdev);

程序如下:

#include < linux/module.h>
  #include < linux/kernel.h>
  #include < linux/init.h>
  #include < linux/fs.h>
  #include < linux/cdev.h>
  MODULE_LICENSE ("GPL");
  int hello_major = 250;
  int hello_minor = 0;
  int number_of_devices = 1;
  struct cdev cdev;
  dev_t dev = 0;
  struct file_operations hello_fops = {
   .owner = THIS_MODULE
  };
  static void char_reg_setup_cdev (void)
  {
  int error, devno = MKDEV (hello_major, hello_minor);
  cdev_init (&cdev, &hello_fops);
  cdev.owner = THIS_MODULE;
  cdev.ops = &hello_fops;
  error = cdev_add (&cdev, devno , 1);
  if (error)
  printk (KERN_NOTICE "Error %d adding char_reg_setup_cdev", error);
  }
  static int __init hello_2_init (void)
  {
  int result;
  dev = MKDEV (hello_major, hello_minor);
  result = register_chrdev_region (dev, number_of_devices, "hello");
  if (result< 0) {
  printk (KERN_WARNING "hello: can't get major number %d\n", hello_major);
  return result;
  }
  char_reg_setup_cdev ();
  printk (KERN_INFO "Registered character driver\n");
  return 0;
  }
  static void __exit hello_2_exit (void)
  {
  dev_t devno = MKDEV (hello_major, hello_minor);
  cdev_del (&cdev);
  unregister_chrdev_region (devno, number_of_devices);
  printk (KERN_INFO "char driver cleaned up\n");
  }
  module_init (hello_2_init);
  module_exit (hello_2_exit);

上一篇:WindowsPhone自定義控件詳解(一) - 控件類庫分析

下一篇:final關鍵字的一點研究

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 亚洲国产精品无码久久久不卡 | 亚洲综合精品香蕉久久网 | 樱花视频在线观看进击的巨人第三季 | 欧美性xxxx狂欢老少配 | 疯狂做受XXXX高潮吃奶 | 玩弄放荡人妇系列AV在线网站 | 夜夜操狠狠操 | GOGOGO日本免费观看电视 | 大地资源在线观看免费中文版 | 人妻系列无码专区AV在线 | 漂亮人妻被中出中文字幕久久 | 秋霞无码一区二区 | 四虎成人www成人影视网址 | 制服肉丝袜亚洲中文字幕 | 国产三级农村妇女在线 | 奇米色播 | 亚洲高清专区日韩精品 | 日日噜噜夜夜狠狠久久丁香五月 | 国产GAYSEXCHINA男 | 成人午夜精品亚洲日韩 | 日日躁你夜夜躁你av蜜 | 91caoporn视频| 特级淫片日本高清视频免费 | 中文字幕国产精品一区二区 | A毛片终身免费观看网站 | 无码一区二区三区免费视频 | 乌克兰少妇videos高潮 | 欧洲肥臀内射网站 | 成人H动漫精品一区二区无码 | 成人片段大有上在线观看 | 九月婷婷人人澡人人添人人爽 | 好男人香蕉影院 | 国产亚洲精品AA片在线观看 | 国产国拍亚洲精品MV在线观看 | 久久精品国产亚洲AV网站 | 精品日产卡一卡二卡国色天香 | 亚洲av本道一区二区三区四区 | 国产成人毛片无码视频软件 | 六十路の高齢熟女が | 亚洲乱码无人区卡1卡2卡3 | 中文字幕无码乱码人妻系列蜜桃 |