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.