[SOS] PID et fcntl
David Decotigny
david.decotigny at free.fr
Dim 19 Mar 12:17:52 CET 2006
Bonjour,
Nous avons une série de patches qui traine. Parmi ceux-ci, de quoi
définir et gérer des "numéros de processus" (aka PID) ! Rien de bien
extraordinaire :
- la liste des processus process_list de process.c est remplacée par
la hash table process_hash qui etablit la correspondance PID ->
struct process *
- Pour l'allocation des PID, on utilise une API de gestion de bitmaps.
Cette API est dans hwcore/bitmap.{c,h} parce que son implémentation
est processor-specific afin d'etre rapide. Le bitmap pour les
processus est bitmap_pid dans process.c. Il a une taille d'une page,
ce qui represente un espace de 32768 PIDs possibles à chaque
instant => max 32768 processus en cours à chaque instant.
- lors de la creation / suppression de processus, le PID du processus
est alloué / désalloué dans le bitmap, ce qui signifie que le bit du
bitmap qui possède l'index correspondant à ce PID est mis à 1 / à 0.
- L'API "table de hachage" (sos/hash.{c,h}) a été modifiée pour
permettre de lister tous les processus en cours.
Parmi les autres modifs :
- ajout d'un fcntl basique que les codes de FS peuvent appeler si ils
sont faineants. Ce fcntl generique gere les commandes DUPFD, GETFD,
SETFD et GETFL de fcntl. Avec ce patch, tcc va un peu plus loin
qu'avant (Thomas pourra detailler).
Tout est disponible sur le site web, page des "patches".
Bonne journee,
--
http://david.decotigny.free.fr/
Plus d'informations sur la liste de diffusion Sos