[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