list.c文件:
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/slab.h>
#include<linux/list.h>
#include<linux/init.h>
MODULE_LICENSE("GPL")
MODULE_AUTHOR("XIYOU")
#define N 10
struct numlist
{
int num;
struct list_head list;
};
struct numlist numhead;
static int __init doublelist_init(void)//初始化头结点
{
struct numlist *listnode;//每次申请链表结点时使用的指针
struct list_head *pos;
struct numlist *p;
int i;
printk("doublelist is starting...\n");
INIT_LIST_HEAD(&numhead.list);
//建立N个结点,依次加入到链表中
for(i=0;i<N;i++)
listnode=(struct numlist *)kmalloc(sizeof(struct numlist),GFP_KERNEL);//kmalloc()在内核空间申请内存,类似于malloc()
listnode->num=i+1;
list_add_tail();
}
make文件