[SOS] Problème de compréhension

David Decotigny david.decotigny at free.fr
Lun 15 Nov 18:17:08 CET 2004


Bonjour,

Je regarderai ces remarques plus en detail un de ces soirs. Ceci dit :

Thomas Petazzoni wrote:
>> - 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.
> 
> Oui, la bonne pratique mise en place par d2 aurait je pense voulu que la 
> fonction sos_kmem_vmm_free() retourne un sos_ret_t, et que la véritable 
> sos_vaddr_t soit retournée via un pointeur.

En effet. Quand on veut une fonction qui retourne plusieurs valeurs, en 
C c'est jamais tres propre. Soit on retourne une sruct {} (copie sur la 
pile), soit on retourne une des valeurs et les autres sont passees en 
parametre par pointeur pour etre modifiees (ce que propose Thomas). La 
3eme solution est de s'arranger pour que les 2 types de retour puissent 
se composer. Par exemple un resultat > 0 en cas de succes et un 
-SDOS_Eqqch en cas d'erreur : dans ce cas, quel type on donne au 
resultat de cette composition ? sos_ret_t ? Un entier signe ? C'est pas 
facile de trancher clairement. Dans Linux par exemple, ils utilisent un 
jeu de macros pour s'en sortir a peu pres explicitement et correctement. 
Peut-etre dans sos faudra opter pour cette solution aussi...

Dans le cas particulier que tu cites, Cyril, il faudra regarder, il y a 
peut-etre une aberration.

Bonne soiree,

-- 
David Decotigny -- http://david.decotigny.free.fr


Plus d'informations sur la liste de diffusion Sos