1 #include <linux/list.h>
3 Lista duplamente encadeada: next e prev.
4 Apontando sempre pra uma list_head.
5 Uso de container_of. Evita o uso de um ponteiro. Facilita a alocação.
6 Uma lista vazia tem um head apontando pra si mesmo.
17 INIT_LIST_HEAD(&data->l);
19 list_add(&data->l, &head);
20 list_add_tail(&data->l, &head);
26 list_entry(entry, struct data, l);
27 list_first_entry(&head, struct data, l);
32 list_for_each(e, &head) {
33 struct data *data = list_entry(e, struct data, l);
37 list_for_each_entry(data, &head, l) {
40 list_for_each_safe (uso de list_delete)
41 construção while (list_empty) list_delete