[SOS] Passage d'arguments aux nouveaux processus/variables d'environnement

Thomas Petazzoni thomas.petazzoni at enix.org
Dim 26 Fév 20:26:58 CET 2006


Bonjour,

On Sat, 25 Feb 2006 12:43:01 +0100
David Decotigny <david.decotigny at free.fr> wrote:

> Pour résumer, ce patch ajoute les fonctionnalités suivantes :
>  - la possibilité de passer des arguments (les fameux argc/argv) aux
>    nouveaux processus,
>  - la possibilité de manipuler et de transmettre des variables
>    d'environnement.

David et moi avons changé et un peu amélioré ce patch, de manière à
faciliter son utilisation avec la uClibc. Désormais, les arguments et
variables d'environnement sont stockées sur la pile du nouveau
processus en exécution, comme cela fonctionne sous Linux. Lorsqu'un
processus démarre (userland/crt_asm.S:_start dans SOS), il trouve la
chose suivante sur la pile:

 [0]               argc           (Nombre d'arguments)
 [1]               offset argv[0] (Offset vers la chaîne argv[0])
 [2]               offset argv[1] (Offset vers la chaîne argv[1])
 ...
 [N]               offset argv[N] (Offset vers la chaîne argv[N])
 [N+1]             NULL
 [N+2]             offset envp[0] (Offset vers la chaîne envp[0])
 [N+3]             offset envp[1] (Offset vers la chaîne envp[1])
 ...
 [N+M]             offset envp[M] (Offset vers la chaîne envp[M])
 [N+M+1]           NULL
 ...               Les chaînes elles-mêmes, séparées par des '\0'

La fonction unmarshall_argv_envp(), appelée par _cmain()
(userland/crt.c) convertit les offset en adresses absolues, avant de
passer ces informations au main() du programme.

La nouvelle version du patch est accessible sur le site Web, à la même
adresse que l'ancienne version, à savoir
http://sos.enix.org/wiki-fr/upload/SOSPatches/patch-art9.5-argv-envp.diff.

Bonne soirée,

Thomas
-- 
PETAZZONI Thomas - thomas.petazzoni at enix.org 
http://{thomas,sos,kos}.enix.org - Jabber: thomas.petazzoni at jabber.dk
http://{agenda,livret}dulibre.org - http://www.toulibre.org
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://the-doors.enix.org/pipermail/sos/attachments/20060226/f05f56e6/signature.pgp


Plus d'informations sur la liste de diffusion Sos