这段代码是为了实现读取1个文件的内容到内核中的一个全局变量(链表)中,编译成模块的方式实现了
编译到内核中第1次启动成功(估计和中断有关),重启就失败了,卸载了重新装再启动也没成功,不知道是不是插入位置不正确,把读取文件并写入链表的功能插入到net/ipv4/af_inet.c中的inet_init函数中了
还请各位不吝赐教,在此感谢!
提示错误为:
[code]
kernel panic -not syncing:
fatal exception in interrupt
[/code]
[code]
#include
本帖最后由 让子弹飞一会儿 于 2011-03-11 09:55 编辑 内核模块init的时候需要根据配置文件/etc/test.conf进行工作,可以在init的时候读取配置文件,GUI更改配置后同步修改test.conf的内容,然后利用proc、sockopt、netlink等方式通知内核模块此修改,请问一般内核是这样处理配置文件的吗?
1 假设一个文件是5000字节,前4096字节用一个页读取后,剩下的4字节用第二页读取,但剩下的第二页中那4092字节填充什么呢? 2 另外,内核通过哪个成员变量来确定最后一页里有效数据(那4kb)的偏移量? 是用宏bio_offset么,但它里面的参数是bio,不是page啊 3 在读取文件时,每个page的数据来自哪个路径下的哪个文件,是如果判断的呢? 文件名是否是 结构体file指向的 file->f_dentry->d_name.name? 4 在mpage_end_io_read函数...
1 假设一个文件是5000字节,前4096字节用一个页读取后,剩下的4字节用第二页读取,但剩下的第二页中那4092字节填充什么呢? 2 另外,内核通过哪个成员变量来确定最后一页里有效数据(那4kb)的偏移量? 是用宏bio_offset么,但它里面的参数是bio,不是page啊 3 在读取文件时,每个page的数据来自哪个路径下的哪个文件,是如果判断的呢? 文件名是否是 结构体file指向的 file->f_dentry->d_name.name? 4 在mpage_end_io_read函数...
本帖最后由 crazyhadoop 于 2011-11-12 07:56 编辑 版主不好意思,刚才我发过这么一个贴子,但让我自己给搞乱, 所以重新发一次。。 问题是,我在内核中用如下程序去读一个文件,结果却比预期的内容多了一些莫名其妙的东西 我想要的是文件中仅有的64字节的内容,结果却不是 , 求解释。[code]int kreadf(char str[], int n) { struct file *filp; mm_segment_t old_fs; ssize_t rlen; char *buffer; filp = filp_open(o...
块缓存 struct buffer_head 用来保存从磁盘读取到的数据,而 struct page 是文件的缓存,在文件层面上的数据会缓存到page里,所以内核里直接读取某个固定的扇区可以利用 struct buffer_head,读取的速度会快一些;以下是实现的代码: #include linux/module.h> #include linux/init.h> #include linux/sched.h> #include linux/kernel.h> #include linux/fs.h> #include linux/types.h> #include linux/buffer_head.h> #inc...
在pc104板上调试linux内核驱动。16位isa总线,现在用inb()读取数据时,可以正确的读取8位的数据,使用inw()时,读到的是两个连续的地址里的两个8位数据组成的16位数据,不知如何能读到isa的高8位数据! 地址 数据对上数据 0x0300 0x1234 0x0301 0x5678 用inw(0x300)时,是把0x0300 和0x0301的每个低8位数据读进来组成了一个16位数据,0x7834. 请教如何读取一个16位的数据进来。