ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
이중 연결 리스트

Linux kenrel 에서 가져온 List 관리 함수들의 구현체 더 자세히 ...

+ 이중 연결 리스트에 대한 협력 다이어그램:

데이타 구조

struct  list_head
 리스트의 구조체를 정의한다. 더 자세히 ...
 

매크로

#define LIST_HEAD_INIT(list)   { &(list), &(list) }
 List 를 초기화 한다. 더 자세히 ...
 
#define LIST_HEAD(list)   struct list_head list = LIST_HEAD_INIT(list)
 초기화된 리스트를 선언한다. 더 자세히 ...
 
#define LIST_NEXT(name)   ((name)->next)
 리스트의 다음 엔트리를 가리킨다. 더 자세히 ...
 
#define LIST_PREV(name)   ((name)->prev)
 리스트의 이전 엔트리를 가리킨다. 더 자세히 ...
 
#define list_entry(ptr, type, member)   container_of(ptr, type, member)
 list 객체에서 지정된 타입에 해당하는 캑체를 얻어온다. 더 자세히 ...
 
#define list_first_entry(ptr, type, member)
 리스트의 첫번째 엔트리를 반환한다. 더 자세히 ...
 
#define list_for_each(pos, head)
 loop 를 돌면서 리스트의 각 엔트리들을 참조한다. 더 자세히 ...
 
#define list_for_each_prev(pos, head)
 loop 를 거꾸로 돌면서 리스트의 각 엔트리를 참조한다. 더 자세히 ...
 
#define list_for_each_safe(pos, n, head)
 loop 를 돌면서 리스트의 각 엔트리를 참조한다. 더 자세히 ...
 
#define list_for_each_prev_safe(pos, n, head)
 loop 를 거꾸로 돌면서 리스트의 각 엔트리를 참조한다. 더 자세히 ...
 
#define list_for_each_entry(pos, head, member)
 loop 를 돌면서 리스트의 각 엔트리의 원형을 반환한다. 더 자세히 ...
 

상세한 설명

Linux kenrel 에서 가져온 List 관리 함수들의 구현체

작성자
Sung-jae Park nices.nosp@m.j@ni.nosp@m.cesj..nosp@m.com
날짜
2011-7-20 Linux kernel 에서 사용되고 있는 리스트 관리 코드를 그대로 차용하였으며, 필요한 경우 일부 수정 또는 추가하였다.

매크로 문서화

#define list_entry (   ptr,
  type,
  member 
)    container_of(ptr, type, member)

list 객체에서 지정된 타입에 해당하는 캑체를 얻어온다.

매개변수
[in]ptr리스트 객체
[in]type얻어올 객체의 종류
[in]member얻어올 객체에서 리스트 객체의 이름
#define list_first_entry (   ptr,
  type,
  member 
)
값:
(((ptr)->next == (ptr)) ? NULL : \
list_entry((ptr)->next, type, member))

리스트의 첫번째 엔트리를 반환한다.

#define list_for_each (   pos,
  head 
)
값:
for (pos = (head)->next; \
prefetch(pos->next), pos != (head); pos = pos->next)

loop 를 돌면서 리스트의 각 엔트리들을 참조한다.

#define list_for_each_entry (   pos,
  head,
  member 
)
값:
for (pos = list_entry((head)->next, typeof(*pos), member); \
prefetch(pos->member.next), &pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))

loop 를 돌면서 리스트의 각 엔트리의 원형을 반환한다.

#define list_for_each_prev (   pos,
  head 
)
값:
for (pos = (head)->prev; \
prefetch(pos->prev), pos != (head); pos = pos->prev)

loop 를 거꾸로 돌면서 리스트의 각 엔트리를 참조한다.

#define list_for_each_prev_safe (   pos,
  n,
  head 
)
값:
for (pos = (head)->prev, n = pos->prev; \
prefetch(pos->prev), pos != (head); pos = n, n = pos->prev)

loop 를 거꾸로 돌면서 리스트의 각 엔트리를 참조한다.

#define list_for_each_safe (   pos,
  n,
  head 
)
값:
for (pos = (head)->next, n = pos->next; \
pos != (head); pos = n, n = pos->next)

loop 를 돌면서 리스트의 각 엔트리를 참조한다.

#define LIST_HEAD (   list)    struct list_head list = LIST_HEAD_INIT(list)

초기화된 리스트를 선언한다.

#define LIST_HEAD_INIT (   list)    { &(list), &(list) }

List 를 초기화 한다.

#define LIST_NEXT (   name)    ((name)->next)

리스트의 다음 엔트리를 가리킨다.

#define LIST_PREV (   name)    ((name)->prev)

리스트의 이전 엔트리를 가리킨다.