1、内核开发中没有现成的函数库可以的调用,而只能调用由内核导出的函数。
2、printf函数与printk函数除了几个细小的差别外功能几乎相同,最大的不同在于printk函数缺少对浮点数的支持。
快速参考
(1)用来装载和卸载模块到正在运行的内核的用户空间的工具:
insmod
modprobe
rmmod
(2)用于指定模块的初始化和清除函数的宏:
#include <linux/init.h>
module_init(init_function);
module_exit(cleanup_function);
(3)仅用于模块初始化和清除阶段的函数:
_ _init
_ _initdata
_ _exit
_ _exitdata
(4)最重要的头文件之一。该文件包括驱动程序使用的大部分内核API的定义,包括睡眠函数以及各种变量。
(5)当前进程:
struct task_struct *current
current->pid 当前进程的ID
current->comm 当前进程的命令名。
(6)必须的头文件,它必须包含模块源代码中。
#include <linux/module.h>
(7)包含所构造内核版本信息的头文件
#include <linux/version.h>
(8)用来创建模块参数的宏,用户可以在装载模块时(或者对内建代码引导时)调整这些参数的值。其中参数的值。其中的类型可以是bool、charp、int、invbool、long、short、ushort、uint、ulong或者intarray。
(9)函数printk的内核代码:
#include <linux/kernel.h>
int printk(const char * fmt,...);
其他:
LINUX_VERSION_CODE
EXPORT_SYMBOL (symbol);
EXPORT_SYMBOL_GPL (symbol);
MODULE_AUTHOR(author);
MODULE_DESCRIPTION(description);
MODULE_VERSION(version_string);
MODULE_DEVICE_TABLE(table_info);
MODULE_ALIAS(alternate_name);