Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1090123
  • 博文数量: 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

2009-05-21 17:19:57

#include
#include
#include
#include
#include
#define err(msg) printk(KERN_ALERT "%s\n", msg)
#define HASHSIZE 512
#define DALIGN (sizeof(unsigned long) - 1)
static struct list_head hashlist[HASHSIZE];
struct buffinfo
{
        struct list_head list;
        char data[0];
};
static int hashlist_init(void)
{
        char data[] = "hello linux";
        struct buffinfo *t;
        int len = (sizeof(struct buffinfo) + strlen(data) + DALIGN) & ~DALIGN;
        int i;
        struct list_head *p;
        for (i = 0; i < HASHSIZE; i++)
                INIT_LIST_HEAD(&hashlist[i]);
        for (i = 0; i < HASHSIZE; i++)
        {
                t = kzalloc(len, GFP_KERNEL);
                if (!t)
                {
                        err("kmalloc");
                        continue;
                }
                memcpy(t->data, data, strlen(data));
                list_add_tail(&t->list, &hashlist[i]);
        }
        for (i = 0; i < HASHSIZE; i++)
        {
                while (!list_empty(&hashlist[i]))
                {
                        p = (&hashlist[i])->next;
                        list_del(p);
                        t = list_entry(p, struct buffinfo, list);
                        printk(KERN_ALERT "%s\n", t->data);
                        kfree(t);
                }
        }
        return 0;
}
static void hashlist_exit(void)
{
        printk(KERN_ALERT "hashlist_exit\n");
}
module_init(hashlist_init);
module_exit(hashlist_exit);
MODULE_LICENSE("GPL");
阅读(1147) | 评论(1) | 转发(5) |
0

上一篇:改进的工作队列

下一篇:练习代码 协议族

给主人留下些什么吧!~~

3089389692012-07-11 09:23:19

int len = (sizeof(struct buffinfo) + strlen(data) + DALIGN) & ~DALIGN;
请问这个 是做对齐用的嘛?