- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Creating a Linu Device Driver Welcome to Utah State University创建一个Linu设备驱动程序 欢迎来到犹他州立大学
Creating a Linux Device Driver
Much of the following was taken from “The Linux Kernel Module Programming Guide” by Peter Salzman (/LDP/lkmpg/)
1. Define the hardware device.
This requires specifying the name of the device and major and minor device numbers. Normally, device numbers are assigned to a manufacturer and are unique for each device. Fortunately, Linux has reserved some device numbers for demonstrations and experiments: Major 60-63 and minor 0-255.
Devices are normally defined by special files in /dev. A program reads or writes to a device by treating it as a ‘file’. Devices are specified to be character- or block- oriented depending upon whether they need a buffering. To define a simple device, use mknod as superuser. The following example defines /dev/my_device as character oriented with major and minor numbers of 60 and 128.
$ mknod /dev/my_device c 60 128
2. Write a device driver
A device driver program is an example of a Linux module. A module is different from a user-program in that a) there is no main(), b) each module must include members init_module() and cleanup_module(), and c) a module may not call library functions – only functions available in the kernel as listed in /proc/ksyms.
The init_module() function is invoked when the module is installed. The cleanup_module() is invoked when the driver is removed. The primary responsibility of the init_module() function is to register the module as the device driver for the hardware device you defined in step #1 above. For a character device, this is done with the register_chrdev(). The arguments to this function are the major device number, the name of the device (used in the mknod command), and a struct file_operations structure that Linux will add to the master device table.
The minor number isn’t really used by Linux – it is available to the device driver to differentiate between a family of similar devices. As such, family of devices sharing the same major number may be serviced by a s
文档评论(0)