Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1091040
  • 博文数量: 252
  • 博客积分: 4561
  • 博客等级: 上校
  • 技术积分: 2833
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 08:23
文章分类

全部博文(252)

文章存档

2015年(2)

2014年(1)

2013年(1)

2012年(16)

2011年(42)

2010年(67)

2009年(87)

2008年(36)

分类: LINUX

2008-05-24 07:57:04

#include <linux/module.h>
#include <linux/init.h>
#include <linux/list.h>
#include <linux/string.h>
#include <linux/slab.h>

static struct list_head head;

struct myinfo
{
    struct list_head list;
    int var;
};

static int __init sky_init(void)
{
    struct myinfo *ptr;
    struct list_head *p;
    int i;
    
    INIT_LIST_HEAD(&head);

    for (i = 0; i < 10; i++)
    {
        ptr = kmalloc(sizeof(struct myinfo), GFP_KERNEL);
        if (ptr)
        {
            memset(ptr, '\0', sizeof(struct myinfo));
            ptr->var = i;
            list_add_tail(&ptr->list, &head);
        }
    }

    list_for_each(p, &head)
    {
        ptr = list_entry(p, struct myinfo, list);
        printk(KERN_NOTICE "var = %d\n", ptr->var);    
    }
    
    while (!list_empty(&head))
    {
        p = (&head)->next;
        list_del(p);
        ptr = list_entry(p, struct myinfo, list);
        kfree(ptr);
    }

    return 0;
}

static void __exit sky_exit(void)
{
}

module_init(sky_init);
module_exit(sky_exit);
MODULE_LICENSE("GPL");

阅读(1006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~