文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>内核list.h使用

内核list.h使用

时间:2010-04-11  来源:79hy

list.h

这个list.h是内核中的list.h扒出来的。同事给我的,呵呵。和我原先说的uthash一样,包含进来就可以用。
下面是个使用的例子

hlist.c

#include "list.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

struct list_head ulist;

struct task {
        struct list_head list;
        int id;
        char name[10];
};

int main()
{
        int i;
        struct task *task_item;
        struct list_head *ptr, *ptr_del;;

        LIST_HEAD(ulist);

        for (i=0; i<10; i++)
        {
                task_item = (struct task *)malloc(sizeof(struct task));
                task_item->id=i;
                sprintf (task_item->name, "# %-2d #", i);
                list_add(&task_item->list, &ulist);
                printf ("add item=%p,id=%d,name=%s \n", &task_item->list, task_item->id, task_item->name);
        }

        for (ptr=ulist.prev; ptr != &ulist;)
        {
                task_item = list_entry(ptr, struct task, list);
                printf ("foreach item=%p,id=%d,name=%s \n", ptr, task_item->id, task_item->name);

                ptr_del=ptr;
                ptr=ptr->prev;

                list_del(ptr_del);
                printf ("del item=%p,id=%d,name=%s \n", ptr_del, task_item->id, task_item->name);
                free(task_item);

        }

        /*在这里不要用for_each_entry那个宏,会出警告,具体警告忘记了。都是因为prefetch(pos->member.prev)宏的问题,查了下,好像是说告诉cpu预先取出这个数,是优化用的,在用户空间没有必要吧*/
        for (ptr=ulist.prev; ptr != &ulist; ptr=ptr->prev)
        {
                task_item = list_entry(ptr, struct task, list);
                printf ("foreach item=%p,id=%d,name=%s \n", &task_item->list, task_item->id, task_item->name);
        }
        return 0;
}


makefile

CC=gcc
CFLAGS=-Wall -g

all: depend hlist

depend:
        $(CC) -MM *.c > .depend

hlist: hlist.o
        $(CC) -o $@ $<

ctags:
        ctags *.h *.c
clean:
        rm -f *.o hlist


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载