资源简介
LINUX的驱动例子,能启动字符设备,很有试验价值, 详细的代码以及完整的MAKEFILE是学习试验的绝好资料
代码片段和文件信息
/**
* A demo driver for simple Character device.“
*
* simple_chrdev.c
*
* Author Tianze Sun
*
* E-mail stz@cic.tsinghua.edu.cn
*
* Fri Jun 2th 20:32:43 GMT 2006
*
* Current version: 1.1.0
*
* All rights reserved. Licensed under dual BSD/GPL license.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SIMPLE_PHYS_ADDR 0x1FFFFF7C //Address
#define SIZE_OF_SIMPLE 2 //2 Bytes
#define SIMPLE_TIMER_DELAY 1 // 1 ms
#define SIMPLE_IOCTL_MAGIC ‘K‘ //Magic
#define CMD1 _IOW(SIMPLE_IOCTL_MAGIC3unsigned long)
#define CMD2 _IOW(SIMPLE_IOCTL_MAGIC4unsigned long)
#define CMDn _IOW(SIMPLE_IOCTL_MAGIC5unsigned long)
#define SIMPLE_NAME “Simple“
int SIMPLE_MAJOR = 0;
int SIMPLE_MINOR = 0;
int SIMPLE_NUMBER = 1;
void __iomem *simple_addr_virt = NULL;
struct cdev *simple_cdev;
dev_t simple_dev;
int simple_open(struct inode *inode struct file *filp);
int simple_release(struct inode *inode struct file *filp);
int simple_ioctl (struct inode *inode struct file *file unsigned int cmd unsigned long arg);
static ssize_t simple_read(struct file * file char __user *buf size_t count loff_t *ppos);
static ssize_t simple_write(struct file *file const char __user *buf size_t len loff_t *ppos);
loff_t simple_llseek(struct file *fileloff_t offset int origin);
static struct timer_list simple_timer;
static void simple_timer_handler(unsigned long data);
extern struct file_operations simple_fops;
struct file_operations simple_fops =
{
.owner = THIS_MODULE
.llseek = simple_llseek
.open = simple_open
.read = simple_read
.write = simple_write
.ioctl = simple_ioctl
.release = simple_release
};
/* Open */
int simple_open(struct inode *inode struct file *filp)
{
printk(“Simple Device is opened\n“);
try_module_get(THIS_MODULE) ;
return 0 ;
}
/* Release */
int simple_release(struct inode *inode struct file *filp)
{
printk(“Simple Device is released!\n“);
module_put(THIS_MODULE) ;
return 0 ;
}
static ssize_t simple_read(struct file *filechar __user *bufsize_t countloff_t *ppos)
{
int rv = 0; /* Return Value */
if (count <= 0)
return count;
printk(“Reading Data now...\n“);
if (file->f_flags & O_NONBLOCK) {
rv = -EAGAIN;
return rv;
}
//Get data from Kernel space.
return rv;
}
/* Write */
static ssize_t simple_write(struct file *fileconst char __user *bufsize_t lenloff_t *ppos)
{
int rv = 0;
printk(“Writing Data now...\n“);
//Get data from User space.
return rv;
}
/* Llseek */
loff_t simple_llseek(struct file *file loff_t offset int origin)
{
long long retval =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 764 2006-08-27 22:19 Chapter07\Makefile
文件 660 2006-08-27 22:19 Chapter07\Makefile.x86
文件 5899 2006-08-27 22:22 Chapter07\simple_chrdev.final.c
目录 0 2009-03-07 14:28 Chapter07
----------- --------- ---------- ----- ----
7323 4
- 上一篇:用kmeans得到二值分割后,再用svm进行图像分割
- 下一篇:XC886配套程序
相关资源
- QT程序学生管理系统
- QT程序打地鼠源码,自己编写,测试无
- 官网JDK1.7.0Linux_32位.txt
- grub4dos-linux
- QT使用GSoap发布WebService的Demo
- QT不卡界面Demo V2
- 原创Qt 串口基础编程代码
- Qt全局热键 QtGlobalShortcut文档
- uclinux详细的中文学习资料
- qt 5.9.1 调用周立功CAN卡第三方库
- 使用Qt实现可编辑的画图程序
- 使用Qt实现简单的画图程序
- Qt5.X的linuxfb平台源码补丁包
- LINUX设备驱动开发详解带书签全套资料
- Qt之QDoubleSlider 继承QSlider的双向滑块
- linux下的tftp server端的源码
- 操作系统课程设计-实现系统状态监测
- qt实现modbus
- FTP客户端C源码(Linux版)
- linux入侵检测源代码简单
- 在QT中使用visp库来抓取pylon相机的测试
- 基于qt的闹钟
- QWebEngineView使用,点击链接,上一页,
- [QT]获取鼠标坐标以及按键响应
- 基于qt做的画板
- Qt 多线程访问同一个变量
- PXE网络启动批量安装Linux系统
- 基于QT图形界面的GPS导航软件系统的设
- Qt一步一步实现插件通信
- Linux_期末考试试题8套(含答案)245
评论
共有 条评论