第一范文网 - 专业文章范例文档资料分享平台

华科操作系统实验报告(DOC)

来源:用户分享 时间:2025/7/23 20:12:36 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

华 中 科 技 大 学 课 程 设 计 报 告

static ssize_t my_read(struct file *file, char __user *user, size_t t, loff_t *f); static ssize_t my_write(struct file *file, const char __user *user, size_t t, loff_t *f);

char message[MAX_SIZE] = \static int device_num = 0;//设备号 static int counter = 0;//计数用 static int mutex = 0;//互斥用

static char* devName = \设备名 //added by wuyao int mes_num=0; char tmp; //////////////////

struct file_operations pStruct =

{ open:my_open, release:my_release, read:my_read, write:my_write, };

/* 注册模块 */ int init_module() {

int ret;

/* 函数中第一个参数是告诉系统,新注册的设备的主设备号由系统分配, * 第二个参数是新设备注册时的设备名字, * 第三个参数是指向file_operations的指针,

* 当用设备号为0创建时,系统一个可以用的设备号创建模块 */ ret = register_chrdev(0, devName, &pStruct); if (ret < 0) {

printk(\return -1;

华 中 科 技 大 学 课 程 设 计 报 告

}

/* 注销模块,函数名很特殊 */ void cleanup_module() { }

static int my_open(struct inode *inode, struct file *file) {

if(mutex)

return -EBUSY; mutex = 1;//上锁

printk(\ device : %d\\n\printk(\

} else {

printk(\device_num = ret;

printk(\printk(\printk(\

printk(\

printk(\printk(\

}

return 0;

unregister_chrdev(device_num, devName); printk(\

华 中 科 技 大 学 课 程 设 计 报 告

}

/* 每次使用完后会release */

static int my_release(struct inode *inode, struct file *file) {

printk(\module_put(THIS_MODULE);

printk(\try_module_get(THIS_MODULE); return 0;

mutex = 0;//开锁 }

static ssize_t my_read(struct file *file, char __user *user, size_t t, loff_t *f) { }

return 0;

for(mes_num=0;mes_num

if(copy_to_user(user,message,sizeof(message))) { }

return sizeof(message);

return -EFAULT; tmp=message[mes_num];

message[mes_num]=message[strlen(message)-mes_num-1]; message[strlen(message)-mes_num-1]=tmp;

华 中 科 技 大 学 课 程 设 计 报 告

static ssize_t my_write(struct file *file, const char __user *user, size_t t, loff_t *f) { }

③ 实验过程 sudo su

在控制台下进入文件所在目录

1.编译驱动程序 make

2.装载模块

装载前,我们可以先看看系统中的模块:lsmod 装载,输入命令: insmod mydev.ko 可以用命令 cat /proc/devices

copy_from_user(message,user,sizeof(message)); /*while(mes_num

/*if(copy_from_user(message,user,sizeof(message))) { }*/

return sizeof(message);

return -EFAULT; tmp=message[mes_num];

message[mes_num]=message[MAX_SIZE-mes_num]; message[MAX_SIZE-mes_num]=tmp; mes_num++;

搜索更多关于: 华科操作系统实验报告(DOC) 的文档
华科操作系统实验报告(DOC).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5r83e97h8q4qfr01784a35m4y31ezc0158k_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top