[SOS] Problème de compréhension
Cyril Dupuit
cyrildupuit at hotmail.com
Lun 15 Nov 11:15:38 CET 2004
Salut la team,
J'ai fais l'acquisition du numéro 66 de Linux magazine. Dans ce numéro, vous
parlez de l'allocation de mémoire pour le noyau.
Ce sujet m'intéresse énormément et j'ai voulu le ré écrire selon mes
conventions afin de comprendre le principe mis en oeuvre. Après plusieurs
lecture de l'article et des heures de lecture de code, le principe est
toujours flou.
Lors de l'initialisation de l'allocateur, vous créez différentes choses :
kmem_free_range_list : Liste des régions libres.
kmem_used_range_list : Liste des régions utilisées.
kmem_range_cache : Cache des régions mémoire ?
cache_of_struct_kslab_cache : Création du premier cache des caches.
cache_of_struct_kslab : Création du premier cache des slabs.
kslab_cache_list : Liste des caches.
Je n'arrive pas à comprendre le schéma globale des objets (range, slab,
cache) mis en oeuvre. Pourriez-vous m'aider à comprendre cette
initialisation.
Merci d'avance.
Cyril.
Bogues ?
- Dans les fonctions create_cache_of_caches et create_cache_of_ranges, vous
faites appel à la fonction : cache_initialize. Cette fonction, comme son nom
l'indique, sert à initialiser un cache.
Pourtant, je ne comprend pas pourquoi the_cache est initialisé à 0 pour une
taille de sizeof(struct sos_kslab_cache) lorsque d'autres fonctions de ce
module (sos_kmem_cache_create, create_cache_of_caches,
create_cache_of_ranges) utilisent cette fonction avec un paramètre de taille
de sizeof_struct_range ou obj_size. Si obj_size > sizeof(struct
sos_kslab_cache), c'est bon. Par contre, sizeof_struct_range est inférieur à
sizeof(struct sos_kslab_cache) d'où un bogue latent.
- Autre problème dans la fonction sos_kmem_vmm_free. Le type retourné est :
sos_vaddr_t qui cache un type unsigned long. En cas d'erreur, cette fonction
retourne -SOS_EINVAL ou -SOS_EBUSY.
- sos_paging_map prend le paramètre flags qui est de type int
(sos_paging_get_prot à le même genre de problème). Dans l'allocateur, les
drapeaux sont de type sos_ui32. Je pense qu'il serait plus homogène de
garder le type sos_ui32.
_________________________________________________________________
MSN Hotmail : antivirus et antispam intégrés http://search.msn.fr
Plus d'informations sur la liste de diffusion Sos