
linux kernel
nemo2011
博客内容皆为个人学习笔记
展开
-
Linux内核文件头
Linux内核文件头的集合#include #include #include #include #include /* printk() */#include /* kmalloc() */#include /* everything... */#include /* error codes */#include /* size_t */#i原创 2012-02-26 22:13:10 · 600 阅读 · 0 评论 -
Linux 指令篇:系统设置--depmod
depmod(depend module)功能说明:分析可载入模块的相依性。语 法:depmod [-adeisvV][-m ][--help][模块名称]补充说明:depmod可检测模块的相依性,供modprobe在安装模块时使用。参 数: -a或--all 分析所有可用的模块。 -d或debug 执行排错模式。 -e 输出无法参照的转载 2012-03-16 15:52:48 · 1121 阅读 · 0 评论 -
ERROR: Removing '': Device or resource busy
今天调试内核模块编程时,出现了ERROR: Removing '': Device or resource busy 的错误。主要是我rmmod模块的时候出现的错误。后来上google查了下。是因为我的模块中没有exit函数或者cleanup_module()函数。 解决办法:改了下void cleanup_module(void)函数。就OK 了。原创 2012-03-16 17:05:50 · 6702 阅读 · 2 评论 -
linux 内核进程与用户进程的通信 方法一 使用sockopt与内核交换数据
linux学习 内核提供 copy_from_user()/copy_to_user() 函数来实现内核态与用户态数据的拷贝,但这两个函数会引发阻塞,所以不能用在硬、软中断中。一般将这两个特殊拷贝函数用在类似于系统调用一类的函数中 在下面的代码中,内核模块注册了一组设置套接字选项的函数使得用户空间进程可以调用此组函数对内核态数据进行读写。 下面是有关操作步骤及源代码:转载 2012-03-14 22:47:11 · 1320 阅读 · 0 评论 -
class_create()
从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_转载 2012-03-10 20:15:31 · 4602 阅读 · 0 评论 -
Linux如何在系统启动时自动加载内核模块
为搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案,无论是中文社区还是英文社区,大家的回答都没有讲到点子上,无非是围绕modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把 modprobe modulename写入rc.local,却不曾想,rc.local的执行被放在整个启动顺序的很后面,而启动ini转载 2012-03-11 15:53:38 · 13144 阅读 · 0 评论 -
Linux2.6 struct file_operations
struct file_operations是一个字符设备把驱动的操作和设备号联系在一起的纽带,是一系列指针的集合,每个被打开的文件都对应于一系列的操作,这就是file_operations,用来执行一系列的系统调用。linux-2.6.*/include/linux/fs.h 注释基于kernel 2.6.15struct file_operations{转载 2012-03-04 11:48:57 · 828 阅读 · 0 评论 -
struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode { struct hlist_node i_hash; struct list_head i_list; struct l转载 2012-03-03 21:01:22 · 537 阅读 · 0 评论 -
error: void value not ignored as it ought to be
在编译字符设备驱动文件时出现了一个 error: void value not ignored as it ought to be 错误。 本人表示非常恼火。问题出在: int ret = unregister_chrdev(Major,DEVICE_NAME); 编译器检测到在文件中,unregister_chrdev函数没有返回值。 而我在搜了一下头文件。在http://stud原创 2012-02-28 12:02:28 · 14913 阅读 · 0 评论 -
内核模块编程 Hello Kernel
在看“> 第18章 设备驱动程序”时,发现第621页的内核模块实验无法通过。怎么回事?后来才发现,这本Linux程序设计入门经典所用的内核是2.4版本。而2.6版本内核模块编程部分发生了比较大的变化。具体变化可以查看/usr/src/linux/Documentation/kbuild下的几篇文章。里面详细说明了2.6内核kbuild和makefile的格式。下面就介绍转载 2012-02-27 14:38:00 · 695 阅读 · 0 评论 -
linux modprobe命令参数及用法详解--linux加载模块命令
modprobe(module probe)功能说明:自动处理可载入模块。语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组转载 2012-03-16 15:45:59 · 4897 阅读 · 0 评论