#ifndef LIST_H #define LIST_H #include #define list_initial(list) {&list, &list} typedef struct list_s { struct list_s *prev, *next; } list_t; extern void list_init(list_t *list); extern void list_add(list_t *list, list_t *item); extern void list_del(list_t *item); extern void list_dump(list_t *head); #define list_narrow(item, type, member) \ ((type *)(((char *)(item) - offsetof(type, member)))) #endif