模块的角色是扩展内核的功能;模块化的代码在内核空间运行,驱动的两个任务:模块中的一些函数作为系统调用的一部分执行,一些负责中断处理。

2.3.2 内核的并发

 linux的内核代码和驱动代码必须是可重入的--他们必须能够在多个上下文中运行。数据结构必须小心的设计以保证多个多个执行线程分开,并且代码必须小心的存取共享数据,避免数据的破坏。

2.3.3 当前进程

  内核代码可以引用当前进程,通过存取当前全局项current。

  e.g 打印当前的进程id和命令名称:

         printk(KERN_INFO"The process is [%s], pid is %i\n",current->comm,current->pid);

2.3.4 几个细节

  内核空间的堆栈空间很小,如果需要大的结构应该在调用时动态分配。