【设计分享】Vmware虚拟机下,linux驱动及应用层实例
来源:互联网 发布:电脑软件有什么 编辑:程序博客网 时间:2024/05/18 02:44
实现功能:通过在虚拟机中建立设备文件/dev/mydev,进行字符设备的读写操作,并利用应用层显示出来。
1、新建驱动文件 driver.c
#include <linux/init.h>#include <linux/fs.h>#include <asm/uaccess.h>MODULE_LICENSE("GPL");#define MAJOR_NUM 100#define EFALUT 1static ssize_t my_read(struct file * filp,char * buf, ssize_t size,loff_t * off);static ssize_t my_write(struct file * flip,const char * buf,ssize_t size,loff_t *off);struct file_operations my_ops = { read: my_read, write:my_write,};static int global_var=0;static int __init my_init(void){ int ret; ret=register_chrdev(MAJOR_NUM,"mydev",&my_ops); if(ret) printk("my dev register failer!\n"); else printk("my dev register success!\n"); return ret;}static void __exit my_exit(void){ unregister_chrdev(MAJOR_NUM,"mydev");}
{ if(copy_to_user(buf,&global_var,sizeof(int))) { return -EFALUT; } return sizeof(int);}static ssize_t my_write(struct file * flip,const char * buf,ssize_t size,loff_t *off){ if(copy_from_user(&global_var,buf,sizeof(int))) { return -EFALUT; } return sizeof(int);}module_init(my_init);module_exit(my_exit);
obj-m := driver.oPWD = $(shell pwd)KDIR=/lib/modules/2.6.32-71.el6.i686/build/all: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: rm -f *.o
#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <fcntl.h>void main(){ int fd,num; fd=open("/dev/mydev",O_RDWR,S_IRUSR|S_IWUSR); if(fd!=-1) { read(fd,&num,sizeof(int)); printf("my read num is %d\n",num); printf("please input a num:"); scanf("%d",&num); write(fd,&num,sizeof(int)); read(fd,&num,sizeof(int)); printf("my read num is %d\n",num); close(fd); } else printf("open device failed!\n");}
1、运行make,编译模块,并insmod加载到内核
2、编译应用层逻辑,运行。
3、得到结果:
0 0
- 【设计分享】Vmware虚拟机下,linux驱动及应用层实例
- 【设计分享】linux硬件驱动实例及编译模块加载
- VMware Workstation 虚拟机的安装及Windows下Linux虚拟机
- VMware虚拟机及Linux安装
- 【设计分享】Altera FPGA及Quartues应用小实例
- VMware虚拟机:Linux下安装VMware tools
- 应用vmware-vdiskmanager增加虚拟机Linux硬盘空间
- Linux下I2C驱动层次的分析及一个实例
- VMware Linux虚拟机创建及Tools安装
- 6410 背光驱动及应用层接口
- 虚拟机VMWare下安装winXP操作系统及安装VMWare Tools
- LINUX下的迷你虚拟机 VMware player
- windowsXP虚拟机vmware下安装Linux过程
- Linux虚拟机下安装VMWare Tools
- 增加VMware下LINUX的虚拟机磁盘空间
- Linux系统下安装VMware虚拟机
- 增加VMware下LINUX的虚拟机磁盘空间
- VMWare虚拟机下修改Linux 操作系统分辨率
- centos6.4安装配置proftpd
- 兼容FF/IE阻止冒泡
- IOS7 兼容适配总结
- Java压缩文件
- 谷歌新计划:跟“404 Not Found”说拜拜
- 【设计分享】Vmware虚拟机下,linux驱动及应用层实例
- 为什么用Linux
- sql优化总结篇
- Hive CliDriver hack
- 快速开发android数据库的框架
- Apache Mina开发手册
- SpringAop日志管理
- Benefits of Having SURE! as Your Billing and CRM Solution Partner
- iOS 使用ARC的工程怎么同时再引用MRC的第三方类库