一. 准备工作 安装kernel 必须的开发库 #sudo apt-get install linux-kernel-devel 安装内核头文件 #sudo apt-get install linux-headers-`uname -r` 当然, gcc /make 等工具天生就是需要的。 二. 编写代码 hello.c 如下: //------------------hello.c-------------------// #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include static int hello_init(void...
[内核编程入门]构建自己的内核模块 虽然linux是个宏内核系统,但是内核允许在运行时动态地加载或卸载模块。这项特性为linux内核开发与使用带来了很多方便,比如基本内核映像可以做得足够小,新功能和驱动程序可以以模块的形式提供。同时,这样做也方便调试。本文中将描述如何构造一个最简单的内核模块。 1. 编写一个简单的内核模块 模块文件中需要有入口点和出口点,这是加载与卸载模块时要被调用的。这两个接口在include/linux/in...
[内核编程入门] printk的使用 常想用户态程序的可能都熟悉printf,在内核空间,有一个与之类似的接口--printk。 对于使用printk,了解如下内容应该就足够了: 1. printk在进程上下文或中断上下文都可以使用。 2. 使用printk时可以指定打印到特定的log level。 3. 过快地打印过多的printk消息会影响系统性能。可以使用if (net_ratelimit()) {printk(...);}来限制打印。 关于log level,定义在include/linux/kernel.h,如下: #de...
代码引用地址:http://bbs.chinaunix.net/viewthread.php?tid=626486&extra=page%3D3%26filter%3Ddigest hello.c: #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include <linux/init.h>; #include <linux/module.h>; #include <linux/kernel.h>; static int hello_init(void) { printk(KERN_ALERT "Hello, The fucking crazy world\n"); return 0; } ...
代码引用地址:http://bbs.chinaunix.net/viewthread.php?tid=626486&extra=page%3D3%26filter%3Ddigest hello.c: #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include <linux/init.h>; #include <linux/module.h>; #include <linux/kernel.h>; static int hello_init(void) { printk(KERN_ALERT "Hello, The fucking crazy world\n"); return 0; } ...
针对好多linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制; 一.核心源程序的文件组织: 1.linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(例如2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如2.1.42)都是一个开发中的核心。本文基于稳定的2.2.5源代码,第二部分的实现平台为 Redhat Lin...
很多linux 爱好者对内核很感兴趣却无从下手,本文旨在介绍一种解读linux内核源码的入门方法,而不是讲解linux复杂的内核机制。 1.核心源程序的文件组织 (1)linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(中间数字)如:2.0.30都是一个稳定的发行的核心,而任何奇数的核心如:2.1.42都是一个开发中的核心。 本文基于稳定的2.2.5源代码,第二部分的实现平台为Redh...
很多linux 爱好者对内核很感兴趣却无从下手,本文旨在介绍一种解读linux内核源码的入门方法,而不是讲解linux复杂的内核机制。 1.核心源程序的文件组织 (1)linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(中间数字)如:2.0.30都是一个稳定的发行的核心,而任何奇数的核心如:2.1.42都是一个开发中的核心。 本文基于稳定的2.2.5源代码,第二部分的实...