实现一个简单的linux字符设备驱动

实现一个简单的linux字符设备驱动

ID:25467700

大小:66.50 KB

页数:5页

时间:2018-11-20

实现一个简单的linux字符设备驱动_第1页
实现一个简单的linux字符设备驱动_第2页
实现一个简单的linux字符设备驱动_第3页
实现一个简单的linux字符设备驱动_第4页
实现一个简单的linux字符设备驱动_第5页
资源描述:

《实现一个简单的linux字符设备驱动》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实现一个简单的linux字符设备驱动步骤1: 编写驱动程序viewplaincopytoclipboardprint?1.#include   2.#include   3.#include   4.#include   5.#include   6.#include   7.#include   8.#include   9.#define 

2、DEVICE_NAME "cdev_zhangwei"  10.int number_of_devices = 1;    11.struct cdev mydev;  12.dev_t dev = 0;  13.char data[128] = "/0"; // the data of my device  14.struct class *myclass;  15.static int mydev_open(struct inode *inode, struct file *file)  16.{  17.    pr_info("mydev driver open!/n"

3、);  18.    return 0;  19.}  20.static int mydev_release(struct inode *inode, struct file *file)  21.{  22.    pr_info("mydev driver released!/n");  23.    return 0;  24.}  25.ssize_t mydev_write(struct file *file, const char __user *buf, size_t count, loff_t *f_pos)  26.{  27.    ssize_t ret

4、 = 0;  28.    pr_info("mydev_write!/n");  29.    pr_info("writing %d bytes/n", count);  1.    if (count > 127)   2.        return -ENOMEM;  3.    if (count < 0)   4.        return -EINVAL;  5.    if (copy_from_user(data, buf, count)) {  6.        ret = -EFAULT;  7.    }  8.    else {  9.    

5、    data[127] = ''/0'';  10.        pr_info("kernel received: %s/n", data);  11.        ret = count;  12.    }  13.    return ret;  14.}  15.static ssize_t mydev_read(struct file* filp, char* buf, size_t len,loff_t* off)  16.{  17.    if( copy_to_user(buf,data,len) )  18.    {  19.        re

6、turn -EFAULT;  20.    }  21.      22.    return len;  23.}  24.struct file_operations mydev_fops = {   25.    .owner = THIS_MODULE,  26.    .open = mydev_open,  27.    .read = mydev_read,  28.    .write = mydev_write,  29.    .release = mydev_release  30.      31.};  32.static int __init myd

7、ev_init(void)  33.{  34.    int result, error;  35.    result = register_chrdev(0, DEVICE_NAME, &mydev_fops);  1.        pr_info("udev_cdev: get major number: %d/n", result);  2.    dev = MKDEV(result, 0);  3.    myclass = class_create(THIS_MODULE,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。