2010-07-14 2 views

ответ

2

Что-то вроде этого:

struct list_head head; /* previously initialized */ 
struct list_head *pos; 

list_for_each(pos, head) 
{ 
    your_type *elt; 
    elt = list_entry(pos, typeof(*elt), name_of_list_head_struct_member); 
    /* and print *elt! */ 
} 
+0

ПРИМЕЧАНИЕ: это работает при условии, что вы определяете 'your_type' с именем' list_head' в качестве своего первого члена. Это гарантирует, что адрес 'list_head' совпадает с адресом структуры' your_type'. – torak

+1

@torak: это неверно, не имеет значения, где находится элемент list_head, и вы можете иметь несколько структур list_head. Причина этого в том, что 'list_entry' использует макрос' container_of' для получения правильного смещения от члена структуры (здесь 'name_of_list_head_struct_member') – Hasturkun

Смежные вопросы