in , ,

List.h: Liste chaînée dans le kernel

Pour de nombreuses opérations, le noyau à besoin d’une structure de données de liste chaînée. Ceci est une implémentation d’une liste chaînée qui réimplémente la liste pour chaque nouveau type pour lequel vous avez besoin  d’une liste chaînée.

Voici le code source de list.h:

Utilisation

Si nous voulons une liste chaînée d’un certain type, vous devriez écrire DEFINE_LINK(typename) . Ensuite, après que le type est défini, vous devriez mettre DEFINE_LIST(typename);IMPLEMENT_LIST(typename) . Cela générera un type de liste liée et des fonctions pour ce type.

Le type sera appelé typename _list_t . Ils doivent être créés en tant que variables globales et initialisés avant utilisation avec  INITIALIZE_LIST(instance)

Une fois cela fait, vous pouvez utiliser les fonctions. Ils sont tous nommés sous la forme action_typename_list , donc si vous voulez utiliser la liste comme une queue, vous pouvez utiliser append_typename_list  et pop_typename_list

Exemple

Supposons que vous ayez le type suivant et que vous souhaitez le stocker dans une liste chainée:

Vous deviez donc déclarer la liste comme suit:

Ceci définit une liste chaînée qui ne peut contenir struct point et implémente les fonctions de la liste chaînée. Alors la liste chaînée peut être utilisée comme ceci:

 

What do you think?

23 points
Upvote Downvote

commentaires

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Chargement & hellip;

Atags

Le secret : mettre un seul nom sur Facebook