[SOS] Problème de compréhension

David Decotigny david.decotigny at free.fr
Mar 16 Nov 20:18:08 CET 2004


Bonjour,

Selon Cyril Dupuit <cyrildupuit at hotmail.com>:
> kmem_range_cache : Cache des régions mémoire ?

Oui : c'est le cache qui va contenir les struct sos_kmem_range qui servent a
former les listes kmem_free_range_list/kmem_used_range_list.

> - 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.

Je ne comprends pas la question. Dans ma version, je n'ai pas de the_cache a
zero, ou alors si : j'ai bien un memset de the_cache a 0 dans cache_initialize,
mais juste apres j'ai toute une serie de "the_cache->truc = chose" pour
initialiser ce qui ne  doit pas etre a zero.

> - 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.

En effet, ca n'avait aucun sens de renvoyer une adresse ! Corrigé (renvoie
sos_ret_t).

> - 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.

Tout à fait. Corrigé.

Encore merci. Bonne soiree,

--
d2


Plus d'informations sur la liste de diffusion Sos