[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