커 널 list.h 사용자 상태 에서 사용 예

1102 단어 Linux
1.list 의 정의
struct list_head 

인용 방법
   구조 체중 에 struct list 포함head,이 구조 체 는 모든 필드 에 위치 할 수 있 으 며,하나의 구조 체 에는 여러 개의 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)

static inline void INIT_LIST_HEAD(struct list_head *list)
{
        list->next = list;
        list->prev = list;
}

3.list 변수 에 따라 구조 체 가 져 오기
 
struct mylist
{
   void *data;
   struct list_head use;
   struct list_head free;
};

예 를 들 어 struct listitem 구 조 는 다음 과 같다.
4.567913.p 는 구조 체 지침 이다.
4.조작 예시
#define list_entry(ptr, type, member) \
        container_of(ptr, type, member)
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define container_of(ptr, type, member) ({\
           const typeof( ((type *)0)->member ) *__mptr = (ptr);\
           (type *)( (char *)__mptr - offsetof(type,member) );})

좋은 웹페이지 즐겨찾기