[Kos-dev] Gestion de piles/listes chainees non bloquantes

Thomas Petazzoni kos-dev@enix.org
Sun, 15 Jul 2001 12:20:12 +0200


Salut,

Suite aux differents liens donnes par Hlide concernant la gestion de
structures de donnees, de maniere Wait-Free et Lock-Free,j'ai pense
qu'il pourrait etre interessant d'envisager de factoriser tous les
traitements type liste chainee ou pile dans KOS. Un peu comme on le fait
pour les arbres deployes.

En effet, on utilise un peu partout des listes chainees, mais le code
n'est absolument pas factorise. Je pense que c'est une bonne idee. Qu'en
pensez-vous ?

Par ailleurs concernant plus specifiquement le codage d'une "librairie"
non bloquante, j'avais essaye de faire quelque chose, mais j'avoue que
j'ai du mal a m'habituer aux differentes operations atomiques (CAS,
DCAS), et surtout j'ai du mal a les assembler pour faire quelque chose
de coherent et de vraiment non bloquant.
J'ai bien compris que CAS = cmpxchg et DCAS = cmpxchg8b, enfin en tout
cas sur archi IA32. Apparemment sur archi RISC c'est un peu plus
complexe, car il n'existe pas d'instructions aussi complexes en natif
dans le processeur.

Par contre, il faut bien etre conscient que :

Cc: bochs-developers@lists.sourceforge.net
Subject: [Bochs-developers] CMPXCHG8B not implemented?(Was: HELP:illegal
instruction)

CMPXCHG8B is introduced in Pentium, but I checked
cpu/arith32.cc.  CMPXCHG8B has not been implemented
yet. Maybe the safe CPU level is i386.

Donc pour l'instant Bochs et cette instruction bof bof. Ceci etant dit
ca nous empeche pas de la coder pour Bochs, mais bon ...

Je vous ferai part des differents essais et prises de tete avec l'asm
inline au fil du temps.

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