Hi,in http://lxr.linux.no/#linux+v2.6.18/include/linux/list.h following section of code there is a structure which is defined as struct list_head { struct list_head *next, *prev; }; It is used in another file as #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name) static inline void INIT_LIST_HEAD(struct list_head *list) { list->next = list; list->prev = list; } I came across a book where the code is given as follows in an example include/linux/list.h struct list_head { struct list_head *next,*prev; }; #define LIST_HEAD_INIT(name) {&(name),&(name)} #define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name) #define INIT_LIST_HEAD(prt) do {\ (ptr)->next = (ptr);(ptr)->prev= (ptr);\ }while(0) I was not able to understand above code segment. I am aware of what a #define is but still I could not understand above thing. Can some one help in understanding with some example. Not related to Linux Kernel a normal example where I can make a link list with above defined way. -- http://vger.kernel.org/vger-lists.html -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ