添加Linux模块
有了系统调用的经验,添加模块还是很顺利的。
【实验环境】
Fedora,内核2.6.21.6
【实验步骤】
1. cd /root/homework/module
2. vi process.c
3. 加入如下代码:
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
static int process_init(void)
{
int num=0;
struct task_struct *p;
for_each_process(p)
{
struct task_struct *q=p->parent;
printk("pid=%-5d,name=%-20s,",p->tgid,p->comm);
printk("prio=%-5d,",p->prio);
printk("my_parent is: %s[%d]\n",q->comm,q->tgid);
num++;
}
printk("\ntotal number is: %d\n",num);
return num;
}
static void process_exit(void)
{
printk("==================\n");
printk("process_exit,GoodBye!\n");
}
module_init(process_init);
module_exit(process_exit);
MODULE_LICENSE("GPL");
4. vi Makefile
5. 加入如下代码
obj-m :=process.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean
6. make
7. /sbin/init 3 进入字符界面
8. insmod process.ko 显示结果
9. rmmod process.ko 移出内核,显示结果
相关文档:
一)ANSI clock函数
1)概述:
clock 函数的返回值类型是clock_t,它除以CLOCKS_PER_SEC来得出时间,一般用两次clock函数来计算进程自身运行的时间.
ANSI clock有三个问题:
1)如果超过一个小时,将要导致溢出.
2)函数clock没有考虑CPU被子进程使用的情况.
3)也不能区分用户空间和内核空间.
所以clock函数在linux系统上变得 ......
想知道到Linux分区方案的真相么,想知道Linux分区方案中藏有的内在奥义么,只有我来给大家全面讲解介绍Linux分区方案
最新Linux分区方案
我的服务器是500G。最重要的是/var分区一定要大(不论postfix邮件,还是LAMP的WEB 服务器等)。最好是400G以上。具体的/boot 只要100M就足够了。下面是我的分区方案:硬盘500G
服 ......
什么是等待队列?
在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得
到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。
Linux
中提供了等待队列的机制,该机制在
内核中应用很广泛。
&n ......
可以读取/proc/devices文件以获得Linux内核分配给该设备的主设备号。
主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备
在Linux内核看来,主设备号标识设备对应的驱动程序,
告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务;而次设备号则用来标识具体且唯一的某个设备。
......
在LINUX环境开发驱动程序,首先要探测到新硬件,接下来就是开发驱动程序。
常用命令整理如下:
用硬件检测程序kudzu探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo
查看板卡信息:cat /proc/pci
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看内存信息:cat /proc/memin ......