1. API du noyau
Linux utilise massivement les listes doublement chaînées circulaires. Son implémentation est un peu particulière car les nœuds d'une liste sont contenus dans les structures qui doivent être liées et non l'inverse. Ainsi, la définition de ce type de données est :
struct list_head {
struct list_head *next, *prev;
};
La liste est initialisée et manipulée de façon à ce qu'elle boucle sur elle-même. L'opération de déclaration et d'initialisation statique est donnée ci-dessous :
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
Nous renvoyons le lecteur au Kernel Corner 86 pour plus de détails. Bien que l'API de manipulation des listes soit très fournie, une nouvelle fonction voit le jour dans cette version du noyau. Il s'agit de list_rotate_left(), qui effectue une rotation de la liste d'un cran vers la gauche. Cette opération est notamment utile pour la manipulation de file...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première