添加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 移出内核,显示结果
相关文档:
Linux环境进程间通信(五): 共享内存(下)
文档选项
打印本页
将此页作为电子邮件发送
级别: 初级
郑彦兴 (mlinux@163.com), 国防科大攻读博士学位
2003 年 5 月 01 日
在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同。系 ......
想知道到Linux分区方案的真相么,想知道Linux分区方案中藏有的内在奥义么,只有我来给大家全面讲解介绍Linux分区方案
最新Linux分区方案
我的服务器是500G。最重要的是/var分区一定要大(不论postfix邮件,还是LAMP的WEB 服务器等)。最好是400G以上。具体的/boot 只要100M就足够了。下面是我的分区方案:硬盘500G
服 ......
什么是等待队列?
在软件开发中任务经常由于某种条件没有得到满足而不得不进入睡眠状态,然后等待条件得
到满足的时候再继续运行,进入运行状态。这种需求需要等待队列机制的支持。
Linux
中提供了等待队列的机制,该机制在
内核中应用很广泛。
&n ......
linux下查看目录大小- -
du -sb /dir
查找当前用户主目录下的所有文件
find . -print
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find /var/logs -type f -mtime +7 -ok rm { } \;
未完待续! ......
在LINUX环境开发驱动程序,首先要探测到新硬件,接下来就是开发驱动程序。
常用命令整理如下:
用硬件检测程序kudzu探测新硬件:service kudzu start ( or restart)
查看CPU信息:cat /proc/cpuinfo
查看板卡信息:cat /proc/pci
查看PCI信息:lspci (相比cat /proc/pci更直观)
查看内存信息:cat /proc/memin ......