云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 华科操作系统实验报告(DOC)

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

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 3:04:23

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

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) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

华 中 科 技 大 学 课 程 设 计 报 告 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_nu

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com