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(ptr) 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.


Sign In
Create Account


Back to top









