Table de hachage dans le noyau Linux
Ne le noyau Linux ont un générique de la table de hachage de mise en œuvre pour une utilisation dans le code du noyau? Je sais que les listes chaînées, arbres rouge-noir, et radix arbres sont disponibles, mais n'ai pas trouvé de référence à un générique de la table de hachage de la mise en œuvre, bien que je sais que les tables de hachage sont beaucoup utilisées dans le noyau central.
Vous devez vous connecter pour publier un commentaire.
Au risque de ressembler à une réputation de pute, permettez-moi de résumer les réponses que j'ai acquis jusqu'à présent.
Noyau 3.7+
Un générique de mise en œuvre a été introduit par Sasha Levin en 2012 et fusionné pour le noyau 3.7.
Les Anciens Noyaux
Le noyau (sous forme de 2.6.38) ne comprend pas un générique de la table de hachage de la mise en œuvre, mais ne comprennent certaines pièces:
hlist_*/HLIST_*
dans liste.h unique pointeur de la tête de liste à double liaison des structures et des macros utiles pour le hachage des seaux. (réponse ci-dessous de adobriyan)pid_hash
dans pid.c pour un exemple construit à partir de ces primitives.uthash générique est une table de hachage pour C mis en œuvre que pour les macros définies dans un même fichier d'en-tête. Cette solution peut être approprié pour de nombreux tiers des modules du noyau (par exemple, les pilotes de périphérique). Toutefois, le recours à
uthash
pourrait empêcher shooter d'un module.kernel/include/linux/hashtable.h
Il n'y a pas de générique de la table de hachage code.
Mais, voyez comment
HLIST_*/hlist_*
substance est utilisée.