作者 Ray 来源www.rtems.net,作者ray@rtems Linux 2.6 和 2.4 的比较我不想废话,总体来说 2.6 功能更强,但是资源消耗更多。 由于 2.6 内核在驱动框架,底层调用上和 2.4 内核有很多差别,所以本文主要是为程序员提供 2.4 到 2.6 迁移的指导。 2.6 和 2.4 主要的不同在于 • 内核的 API 变化,增加了不少新功能(例如 mem pool ) • 提供 sysfs 用于描述设备树 • 驱动模块从 .o 变为 .ko 移植 hello word 下面是一个最简单的 2.4 驱动: #define MODULE #include <linux/module.h> #include <linux/kernel.h> int init_module(void) { printk(KERN_INFO "Hello, world\n"); return 0; } void cleanup_module(void) { printk(KERN_INFO "Goodbye cruel world\n"); } 2.6的hello world版本! #include < linux/module.h> #include < linux/config.h> #include < linux/init.h> MODULE_LICENSE("GPL");// 新,否则有 waring, 去掉了 #define MODULE, 自动定义 static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init);// 必须!! module_exit(hello_exit); // 必须!! 注意,在 2.4 中 module_init 不是必须的,只要驱动的初始化函数以及析沟函数命名使用了缺省的 init_module 和 cleanup_module
|