您的位置:首页 > 运维架构 > Linux

linux 内核 linux kernel travel

2015-08-05 23:46 645 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 内核