[SOS] kwaitq -> Allocation des kwaitq_entry

Thomas Petazzoni thomas.petazzoni at enix.org
Lun 14 Nov 14:56:38 CET 2005


Salut,

Romain LABBE wrote:

> Mon probleme est simple, je ne trouve pas ou sont allouées les structures 
> "kwaitq_entry" dans SOS. quelqu'un peut me l'indiquer ?

Ils sont alloués sur la pile, regarde le début de la fonction
sos_kwaitq_wait() :

sos_ret_t sos_kwaitq_wait(struct sos_kwaitq *kwq,
                          struct sos_time *timeout)
{
  sos_ui32_t flags;
  sos_ret_t retval;
  struct sos_kwaitq_entry kwq_entry;

  sos_kwaitq_init_entry(& kwq_entry);

  [...]
}

> Personnellement j'alloue la memoire au moment de l'ajout et la libere durant le 
> delete, mais si vous n'avez pas fait ca dans SOS c'est pour une bonne raison 
> j'imagine ? (Performence ?)

Ce n'est pas vraiment pour les performances, mais surtout que ce n'est
pas utile: une allocation sur la pile suffit.

Cela peut paraître étrange, vu que le processus est mis en attente, mais
il faut bien voir que chaque processus possède sa propre pile. Donc
lorsque le processus A fait sos_kwait_wait(), on alloue sur la pile de A
la sos_kwaitq_entry, et on schedule pour passer au processus B, qui
dispose de sa propre pile. Quand le processus A sera réveillé et
schedulé, la pile de A sera toujours présente et n'aura pas été
modifiée. Elle contiendra donc toujours le sos_kwaitq_entry.

Est-ce que cela répond à ta question ? Dans tous les cas, n'hésites pas
à demander des détails si nécessaire.

Bonne journée,

Thomas
-- 
Thomas Petazzoni
thomas.petazzoni at enix.org



Plus d'informations sur la liste de diffusion Sos