抓取内核信息(一)-从简单入手
来源:互联网 发布:域名要备案才能用吗 编辑:程序博客网 时间:2024/06/11 16:18
当Linux内核这样一个数百万行的大软件摆在面前时,不仅仅是望而生畏,还有老虎吃天无从下口的感觉。但实际上,在这个世界上,面对最复杂的事情,往往从简单做起或许有解。
大家最熟悉的一句就是:
printf(“Helloworld!/n”);
那么在内核中,把这个f换成k(kernel):
printk(“I’m in Linux Kernel!/n”);
在适当的时候调用pirntk函数,你可以抓取你想要的任何内核信息。
当然,在内核态下写程序,再也找不到你熟悉的main()函数。不过,凡事都需有一个入口点,一般程序的入口都是初始化函数:
static int hello_init( void )
{
printk("Hello,World! from thekernel space...//n");
return 0;
}
那么,谁调用它执行?module_init()函数!亦即module_init(hello_init),望名思意,这是对初始化函数进行调用的模块函数。也就是说,我们在内核态下写的函数,要装在一个模块中(而不是主框架main()中),这里的模块就像搭积木的一个个模块一样,可以被插入到内核中,而内核就像一个母板,系统管理员可以按需插拔模块。那么,拔出模块也就轻而易举了:
staticvoid hello_exit( void )
{
printk("Goodbye,World! leaving kernel space.../n");
}
想让这个函数得到执行,同样要调用内核提供的函数module_exit()!
以上就是Linux内核模块的简单框架。当然,在内核代码中,还涉及其他很多的细节,但在此,去繁就简,为了与内核进行零距离接触,先动手写出代码在内核进进出出逛一趟。
内核模块编程更多信息,请参看我们的Linux内核之旅网站中的Linux 2.6内核编程实例栏目。
如何抓取内核更多的信息,请看下一讲。
- 抓取内核信息(一)-从简单入手
- 编程学习从基础入手,从简单做起
- uva 11134 传说中的车 从简单情形入手
- 从简单的选择排序入手,深刻理解程序
- u-boot-2013.07在mini2440上的移植(二):从简单修改入手
- 交换两个变量的值的方法-----从简单问题入手
- Chrome扩展,应用开发学习笔记之1---从简单的时钟入手
- asp.net mvc 之旅—— 第一站 从简单的razor入手
- SpringMVC环境搭建--从简入手
- 一、从简单MXML组件中处理事件
- JMS入门(一)从简单示例开始
- 从简单实例开始,学会写Makefile(一)
- Unity3D 学习从简单开始-GUI探索(一)
- c#信息抓取一:抓取网页源代码
- 从简单问题开始
- 抓取内核信息(二)-遍历数据结构
- 先从简单的开始
- worldwind 从简单开始 CardLayoutUsage
- WCF分布式开发常见错误(28):The requested upgrade is not supported by...
- 关于XML数据存储时遇到的字符编码的一个怪问题
- 毕业后的五年拉开大家差距的原因
- C/C++常用函数
- Happy Pi Day!一起来挑战俄罗斯方块圆周率版
- 抓取内核信息(一)-从简单入手
- J2ME在移动设备上实现动画
- 创业投资——证券分析
- js-window对象的方法和属性资料
- WinInet 介绍
- [How Tomcat Works]第2章 一个简单的Servlet容器
- C++的iostream标准库介绍
- 利用J2ME与ASP建立数据库连接
- Java类的一些认识