pintos project를 하다가 발견한 기법이다.
struct list_elem { struct list_elem *prev; /* Previous list element. */ struct list_elem *next; /* Next list element. */ }; struct thread { /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ uint8_t *stack; /* Saved stack pointer. */ int priority; /* Priority. */ struct list_elem allelem; /* List element for all threads list. */ /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ #ifdef USERPROG /* Owned by userprog/process.c. */ uint32_t *pagedir; /* Page directory. */ #endif /* Owned by thread.c. */ unsigned magic; /* Detects stack overflow. */ }; #define list_entry(LIST_ELEM, STRUCT, MEMBER) \n ((STRUCT *) ((uint8_t *) &(LIST_ELEM)->next - offsetof (STRUCT, MEMBER.next))) // 사용 예 struct thread *t = list_entry (e, struct thread, allelem);
반응형
'팁' 카테고리의 다른 글
[팁] 공인 IP, 사설 IP, 고정 IP, 유동 IP (0) | 2014.08.11 |
---|---|
[SSH] Trying to login to openssh, permission denied (0) | 2014.08.06 |
[팁] 인터넷 끊김현상 윈도우즈 방화벽 문제일 수도.. (0) | 2014.06.10 |
[Illustrator] 단축키 (0) | 2014.05.16 |
Visual Studio 2012 Color Theme Editor (vs2012 색깔 바꾸기) (0) | 2014.04.20 |
[코드 블로깅 팁] syntax highlight (0) | 2014.04.12 |
Mac OS parallels windows 7 install (0) | 2014.02.27 |
[OpenGL Tip] Transform 적용이 안된다!!! 할 때 생각해 볼 것; (0) | 2014.02.25 |
[펌] 그래픽 카드의 선택 / 보는법 - 연결단자 : 3편 - 디지털 : DVI, HDMI, DisplayPort (0) | 2014.02.23 |
[팁][Visual Studio] 코드 작성 시 지워도 되는 파일들 (0) | 2014.02.08 |