在某种意义上来说,从可安装模块的角度来看,内核也是一个模块,只不过是一个不可安装的模块。既然把可安装模块安装到了内核这个模块上并向内核提供服务.那么这些可安装模块就必须有与内核交互的手段。实现两个模块之间交互的最简单的手段就是实现双方的变量和函数的共享.
为了使被安装模块知道内核的哪些变量和函数是模块可以使用的,Linux内核以“可移出”符号的形式提供了可供其他模块共享的变量和函数名称。这里所谓的“可移出”,是指外部可以引用,即是暴露在内核外面的符号。在文件中,可移出符号的定义形式如下:
而模块在需要引用内核的一个“可移出”符号时,要把该符号用extern声明为外部引用。