
入门文章:教你学会编写Linux设备驱动
发布时间:2006-06-28 10:48:36 来源:天极博客 网友评论 0 条内核版本: 2.4.22
阅读此文的目的: 学会编写Linux设备驱动。
阅读此文的方法: 阅读以下2个文件: hello.c,asdf.c。
此文假设读者:
已经能用C语言编写Linux应用程序,
理解"字符设备文件, 块设备文件, 主设备号, 次设备号",
会写简单的Shell脚本和Makefile。
1. "hello.c"
--------------------------------
/*
* 这是我们的第一个源文件,
* 它是一个可以加载的内核模块,
* 加载时显示"Hello,World!",
* 卸载时显示"Bye!"。
* 需要说明一点,写内核或内核模块不能用写应用程序时的系统调用或函数库,
* 因为我们写的就是为应用程序提供系统调用的代码。
* 内核有专用的函数库,如 * 现在还没必要了解得很详细, * 这里用到的printk的功能类似于printf。 * "/usr/src/linux"是你实际的内核源码目录的一个符号链接, * 如果没有现在就创建一个,因为下面和以后都会用到。 * 编译它用"gcc -c -I/usr/src/linux/include hello.c", * 如果正常会生成文件hello.o, * 加载它用"insmod hello.o", * 只有在文本终端下才能看到输出。 * 卸载它用"rmmod hello" */ /* * 小技巧: 在用户目录的.bashrc里加上一行: * alias mkmod='gcc -c -I/usr/src/linux/include' * 然后重新登陆Shell, * 以后就可以用"mkmod hello.c"的方式来编译内核模块了。 */ /* 开始例行公事 */ #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include #include MODULE_LICENSE("GPL"); #ifdef CONFIG_SMP #define __SMP__ #endif /* 结束例行公事 */ #include static int init_module (){ printk("Hello,World!/n"); return 0; /* 如果初始工作失败,就返回非0 */ } static void cleanup_module (){ printk("Bye!/n"); } ------------------------------------ 2. "asdf.c" ------------------------------------
- 微软官方入门教程19:轻松掌握Vista系统的快
- 微软2008大冲击,预借Vista SP1力促Vista市
- 在收件箱中获得 Windows Vista 的最新更新
- 微软官方Vista入门教程全集19篇(Vista学院
- Windows Vista 的成功将势不可挡
- 快快抛弃Vista,拥抱XP SP3!你觉得呢?
- 浅谈Vista系统关闭虚拟内存与使用内存盘加速
- 嘿嘿,按下键盘上面的三个键,马上让你的Vi
- Windows Vista的盗版率只有Windows XP的一半
- 3DMark和PCMark Vantage新版将只支持Vista系
- Windows外衣Linux心 红旗桌面版详测
- 扮酷你的桌面 Linux超靓壁纸下载(多图)
- Linux安装流程
- 浅谈Linux的内核
- RedHat Linux9.0安装实例(1)
- ARM的嵌入式Linux移植体验之基本概念
- Linux安装要点
- 红旗Linux桌面版5.0BETA版OS
- 如何在大硬盘上安装Linux
- RealPlayer流媒体播放器Linux版
- Linux步入Unix的后尘-铁甲Linux出现
- Linux内核中的同步和互斥分析报告
- Linux操作系统文件系统的桌面应用
- Linux设备驱动编程之定时器
- 嵌入式Linux操作系统启动信息完全注释
- 在Linux操作系统中实现内部进程通信
- Linux大腕警告称开源软件存在安全问题
- Linux下双网卡绑定技术实现负载均衡
- 深入浅出Linux操作系统的优化和微调
- Linux下的中文显示和支持常见问题解答
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
