A simple kernel module for linux
/* hello.c
* Copyright (C) 1998 by Ori Pomerantz
*
* /"Hello, world/" - the kernel module version.
* fix history: wenxy 20070918, a.m. wen_kernel@163.com
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
MODULE_LICENSE("GPL");
/* Initialize the module */
int init_module()
{
printk("<1>Note: run .../n");
printk("<1>Note: the process is %s [pid=%d]/n", current->comm, current->pid);
/* If we return a non zero value, it means that
* init_module failed and the kernel module
* can/'t be loaded */
return 0;
}
/* Cleanup - undid whatever init_module did */
void cleanup_module()
{
printk("<1>Note: exit/n");
}
# Makefile for a basic kernel module
# wenxy 20070919, a.m. wen_kernel@163.com
# Red hat linux 9.0, kernel version 2.4.20-8
# Makefile for a basic kernel module
# wenxy 20070919, a.m. wen_kernel@163.com
dir = /usr/src/linux-2.4/include
modules = hello.o
CC = gcc
MODCFLAGS = -Wall -DMODULE -D__KERNEL__ -DLINUX -I$(dir)
all : $(modules)
hello.o : hello.c
$(CC) $(MODCFLAGS) -c hello.c
chmod 711 $@
.PHONEY : clean run exit
run:
insmod -f $(modules)
exit:
rmmod hello
clean :
-rm $(modules)
# end makefile
By the way, use shell command "insmod -f hello.o" for load it to kernel, at last run shell command "rmmod hello" for unload it, and run shell command "lsmod" for show all kernel modules. That's all.
/* hello.c
* Copyright (C) 1998 by Ori Pomerantz
*
* /"Hello, world/" - the kernel module version.
* fix history: wenxy 20070918, a.m. wen_kernel@163.com
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
MODULE_LICENSE("GPL");
/* Initialize the module */
int init_module()
{
printk("<1>Note: run .../n");
printk("<1>Note: the process is %s [pid=%d]/n", current->comm, current->pid);
/* If we return a non zero value, it means that
* init_module failed and the kernel module
* can/'t be loaded */
return 0;
}
/* Cleanup - undid whatever init_module did */
void cleanup_module()
{
printk("<1>Note: exit/n");
}
# Makefile for a basic kernel module
# wenxy 20070919, a.m. wen_kernel@163.com
# Red hat linux 9.0, kernel version 2.4.20-8
# Makefile for a basic kernel module
# wenxy 20070919, a.m. wen_kernel@163.com
dir = /usr/src/linux-2.4/include
modules = hello.o
CC = gcc
MODCFLAGS = -Wall -DMODULE -D__KERNEL__ -DLINUX -I$(dir)
all : $(modules)
hello.o : hello.c
$(CC) $(MODCFLAGS) -c hello.c
chmod 711 $@
.PHONEY : clean run exit
run:
insmod -f $(modules)
exit:
rmmod hello
clean :
-rm $(modules)
# end makefile
By the way, use shell command "insmod -f hello.o" for load it to kernel, at last run shell command "rmmod hello" for unload it, and run shell command "lsmod" for show all kernel modules. That's all.
本文介绍了一个简单的Linux内核模块——Hello World模块的源代码及编译过程。该模块使用C语言编写,在加载时打印出运行信息及当前进程详情。
998

被折叠的 条评论
为什么被折叠?



