#include
#include
#include
#include
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Li HongYu");
MODULE_DESCRIPTION("List Module");
MODULE_ALIAS("List module");
#define list_length 10
struct node
{
char name[100];
unsigned int num;
struct list_head entry;
};
struct node *new_node; //新申请的节点
struct node *tmp_node; //缓存节点
struct list_head *list; //头结点指针
struct list_head *pos; //遍历游标
struct list_head tmp_pos; //游标内容缓存
int mylist_init(void)
{
int i;
INIT_LIST_HEAD(list); //初始化头结点
for(i=0;i
new_node=kmalloc(sizeof(struct node),GFP_KERNEL);
memset(new_node,0,sizeof(struct node));
sprintf(new_node->name,"第%d节点",i+1);
new_node->num=i+1;
list_add(&(new_node->entry),list);
}
list_for_each(pos,list)
{
tmp_node = list_entry(pos,struct node,entry);
printk("<0> %d :%s\n",tmp_node->num,tmp_node->name);
}
return 0;
}
void mylist_exit(void)
{
list_for_each(pos,list)
{
tmp_pos = *pos;
tmp_node=list_entry(pos,struct node,entry);
list_del(pos);
kfree(tmp_node);
*pos = tmp_pos;
}
printk("<0> 链表删除成功");
}
module_init(mylist_init);
module_exit(mylist_exit);
haohu137 于 2013-05-09 19:05:07发表:
路过,看看。