[Kos-dev] synchro en SMP

Thomas Petazzoni kos-dev@enix.org
Wed, 04 Jun 2003 09:31:34 +0200


This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig066246DDC4BFAB7FAFC86BEA
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

Bonjour,

> Toute la subtilite etant dans la derniere ligne. Pour faire ca, ca
> serait pas du atomic au sens "lock du bus". Il suffirait en fait de
> rajouter un parametre a cpl0_switch : le lock a liberer, et on le
> libererait (ie equivalent a spin_unlock_remote(SANS FLAG qui ne sert a
> rien en remote de tte facon)) juste apres le chgt de pile (pr garantir
> que si le thread bloque est elu sur un autre proc, eh bien 2 instances
> simultanees ne seront pas en cours d'exec sur 2 procs differents),
> mais bien avant le iret. Ce qui donnerait (pseudo code) :

Je vois bien l'idée de la chose. Je pense qu'effectivement ça solutionne
la chose, mais ce n'est pas sur que ce soit la solution la plus
élégante. Je me demande si en utilisant un autre état (ala Linux
TASK_UNINTERRUPTIBLE), ou quelque chose dans l'esprit, il n'y aurait pas
moyen de s'en sortir un peu mieux, parce que globalement les locks qui
se baladent de partout, bof bof.

Avant de dire des bétises, peux-tu rappeler la race condition (en SMP)
qui intervient si on relache le lock avant de _commencer_ le cpl0_switch ?

Bonne journée,

Thomas
-- 
PETAZZONI Thomas - thomas DOT petazzoni AT enix DOT org - UIN : 34937744
Web: http://www.enix.org/~thomas/
KOS: http://kos.enix.org/ - Lolut: http://lolut.utbm.info
Fingerprint : 0BE1 4CF3 CEA4 AC9D CC6E  1624 F653 CB30 98D3 F7A7

--------------enig066246DDC4BFAB7FAFC86BEA
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE+3aBY9lPLMJjT96cRAk0BAJ4hRfv2j15Mzmv4s3H17s5UOGcynACeJPrM
kZNnaV5b7h7agpgXFTTOo+g=
=7fiZ
-----END PGP SIGNATURE-----

--------------enig066246DDC4BFAB7FAFC86BEA--