[Kos-dev] Id ressources

d2 kos-dev@enix.org
25 Apr 2002 10:19:37 +0200


Bonjour,

On ne peut pas adresser les ressources user par leur adresse noyau
comme on pensait. La raison est simple : qd on fait fork, pere et fils
se partagent la meme donnee ressource, ce qui veut dire entre autre
qu'ils se partagent le meme pointeur courant sur le fichier par
exemple. Ca, ca craint terriblement. Pour remedier a ca, il est clair
qu'on ne peut pas "remplacer" les references aux ressources du pere
par les references vers les ressources du fils qui y sont issues (il
risque d'y en avoir un peu partout dans l'espace cpl3 du fils : pile,
tas, ...).

Une solution (la seule ?) : avoir une table d'indirection pour la
traduction de l'id (un uuid, ou un index dans un tableau) d'une
ressource cote user, en l'adresse de la ressource proprement dite cote
noyau. Tout en sachant que la table d'indirection doit se situer cote
noyau et doit etre propre a chaque team. Ceci dit, on n'est pas
obliges de s'imposer 0=stdin, 1=stdout, 2=stderr.

D'un autre cote, ca supprime 2 choses : plus besoin de #define
MAGIC_RESOURCE, plus besoin de verifier que le syscall sur une
ressource est applique a une ressource qui appartient effectivement a
la team (mail de mardi).

Voila. Desole de pas y avoir pense plus tot. Bonne journee,

-- 
d2