list_for_each(pos, head)
- pos、head 都為list類型
- 一般來說,head是list的虛拟頭,依次取list上的各個節點
container_of(ptr, type, member)
- ptr:現已知的指針
- type:要求的結構體類型
- member:指針在結構體中的名稱
- 該宏用于在已知結構中某個成員位址的情況下,求得結構體的起始位址
兩個連用
haproxy中結構體間常含list成員,用于将多個節點串在一起,在依次取各節點成員的時候,需要上述兩個宏搭配使用。
list_for_each(pos_scad, sp->current_server_cad) {
s_cad = container_of(pos_scad, struct server_cad, srv_link);
}
依次取得各server_cad的位址,友善下面對該節點進行取值或指派。