extern long init_module(void *,unsigned long, const char *); 以上函数实际上在glibc中定义,但没有查到它在哪个头文件中。这是模仿insmod命令源代码写出来的。该函数的第一个参数指向一个内存块,第二个参数是它的大小,最后一个参数是给模块初始化传递的参数。
为了加载模块,首先我们要把模块文件读入内存,然后才能把第一个参数传递给init_module函数。所以这里需要一个函数来做这件事情。函数里需要获取文件大小,这也可以专门写个简单函数来完成: static long get_filesize(FILE *file) { long curpos, length;