linux 内核 kernel_核 travel_旅行 linux kernel travel

linux 2.6

1

hellomod.c

001

// hello world driver for linux 2.6

 #include <linux/module.h>                  /*所有模块都要使用头文件module.h*/

 #include<linux/kernel.h>               /*kernel.h包含了常用的内核函数*/

#inlcude<linux/init.h>            /* init.h 包含了宏 _init和_exit 它们容许释放内存*/

/* 头文件*/

static int_init lkp_init(void)

{

printk("<1>hello,world! from the kernel space... \n");     /* 模块初始化,printk函数

                                                               相当于C语言中的printf输出 函数,<1>立即输出*/

return 0;

}

static void_exit lkp_cleanup(void)

{

printk("<1>Goodbye,world! leaving kernel space...\n");

}

module_init(lkp_init);                             /* 入口点*/

module_exit(lkp_cleanup);                    /* 可加载模块,内核在此处调用 lkp_cleanup 函数*/

MODULE_LICENSE("GPL");                   /* 提示没有GNU公共许可证*/


module_init() 和 cleanup_exit

module_init() 向内核注册模块所提供的新功能

cleanup_exit() 注销由模块提供的新功能

                    C语言应用程序     内核模块程序

使用函数       Libc库                 内核函数

运行空间       用户空间              内核空间

运行权限       普通用户              超级用户

入口函数       main()                  module_init()

出口函数       exit()                    module_exit()

编译              Gcc-c                   makefile

连接              Gcc                      insmod

运行              直接运行               insmod

调试              Gdb                      kdbug kdb kgdb