[Kos-dev] Juste pour informations

Thomas Petazzoni kos-dev@enix.org
Tue, 17 Jul 2001 21:45:31 +0200


Bonjour,

Nous ne savions pas trop quoi faire des multiples threads que peut gerer
une team lorsque celle-ci est recopiee pour former un nouvelle team.

Eh voici un extrait de glibc-2.2.1/sysdeps/unix/sysv/linux/execve.c :

int
__execve (file, argv, envp)
     const char *file;
     char *const argv[];
     char *const envp[];
{
  /* If this is a threaded application kill all other threads.  */
  if (__pthread_kill_other_threads_np)
    __pthread_kill_other_threads_np ();

Ca a la merite d'etre clair. Etant donne ceci, il est clair que pour le
vfork c'est pas la peine de s'embeter a recopier toutes les donnees
concernant tous les threads. Mais concernant le fork() standard ?

Autre question plus importante : comment il fait Linux pour reloger
dynamiquement ? Il charge toujours la librairie ld.so au meme endroit
(0x4000000) apparemment, et c'est cette librairie qui se charge de
linker dynamiquement le fichier executable avec les librairies
necessaires (libc et autres). En effet j'ai remarque que l'adresse de la
libc n'etait pas toujours la meme, et donc le seul moyen c'est de linker
dynamiquement le machin. J'ai pas vraiment trouve les sources de ce
ld.so, c'est dans les sources de la glibc ? Il semblerait que le
repertoire elf/ corresponde a peu pres.

Thomas
-- 
PETAZZONI Thomas
thomas.petazzoni@meridon.com     UIN : 34937744
Projet KOS : http://kos.enix.org
Page Perso : http://www.enix.org/~thomas/