[pso] spin lock vs paged pool

Cibu Cristian pso@cursuri.cs.pub.ro
Sat, 27 Mar 2004 21:27:00 +0200


This is a multi-part message in MIME format.

------=_NextPart_000_0034_01C41442.3DABC1C0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

In enunt suntem incurajati pe buna dreptate sa ne protejam de race-uri =
folosind spin-lock-uri.
Pe de alta parte, driverul trebuie sa aloce dinamic memorie, pentru ca =
stiva e mica. La fel memoria nonpaged e si ea resursa scumpa, deci nu =
prea merge sa punem in ea vectorii cu informatiile despre piduri si =
rutinele apelurilor de sistem. deci ramane paged pool.
pai atunci ce ne facem ca in helpul ddk spune:

"
Never implement routines that do any of the following while holding a =
spin lock:=20
  a.. Cause hardware exceptions or raise software exceptions=20
  b.. Attempt to access pageable memory=20
  c.. Make a recursive call that would cause a deadlock or could cause a =
spin lock to be held for longer than 25 microseconds=20
  d.. .... [mai sunt cateva]
"

De aici cam reiese ca nu prea avem voie sa folosim spin-lockuri.
Functiile Interlocked care ne sunt sugerate imi sunt cam nefolositoare. =
Daca trebuie sa adaug ceva intr-o lista nu pot folosi nimic cu prefixul =
Interlocked. Ar exista ExInterlockedInsertHeadList dar care cere si ea =
un spin_lock deci nici asta nu e buna.

Ar mai ramane sa incercam sa implementam noi un lock din functii =
interlocked dar asta inseamna busy waiting si iar nu e bine...

Asta e ce am descoperit eu dupa ce toata ziua am cautat buguri prin tema =
de vad numai ecrane albastre cand inchid ochii. asa ca daca cine este in =
masura sa ma contrazica, chiar il rog! 
------=_NextPart_000_0034_01C41442.3DABC1C0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1400" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>In enunt suntem incurajati pe buna =
dreptate sa ne=20
protejam de race-uri folosind spin-lock-uri.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Pe de alta parte, driverul trebuie sa =
aloce dinamic=20
memorie, pentru ca stiva e mica. La fel memoria nonpaged e si ea resursa =
scumpa,=20
deci nu prea merge sa punem in ea vectorii cu informatiile despre piduri =
si=20
rutinele apelurilor de sistem. deci ramane paged pool.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>pai atunci ce ne facem ca in helpul ddk =

spune:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>"</FONT></DIV>
<DIV><EM>Never</EM> implement routines that do any of the following =
while=20
holding a spin lock: </DIV>
<UL>
  <LI>Cause hardware exceptions or raise software exceptions=20
  <LI>Attempt to access pageable memory=20
  <LI>Make a recursive call that would cause a deadlock or could cause a =
spin=20
  lock to be held for longer than 25 microseconds </LI>
  <LI>.... [mai sunt cateva]</LI></UL>
<DIV>"</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>De aici cam reiese ca nu prea avem voie =
sa folosim=20
spin-lockuri.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Functiile <STRONG>Interlocked =
</STRONG>care ne sunt=20
sugerate imi sunt cam nefolositoare. Daca trebuie sa adaug ceva intr-o =
lista nu=20
pot folosi nimic cu prefixul Interlocked. Ar exista <FONT=20
size=3D3><STRONG>ExInterlockedInsertHeadList </STRONG></FONT><FONT =
size=3D2>dar care=20
cere si ea un spin_lock deci nici asta nu e buna.</FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Ar mai ramane sa incercam sa =
implementam noi un=20
lock din functii interlocked dar asta inseamna busy waiting si iar nu e=20
bine...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Asta e ce am descoperit eu dupa ce =
toata ziua am=20
cautat buguri prin tema de vad numai ecrane albastre cand inchid ochii. =
asa ca=20
daca cine este in masura sa ma contrazica, chiar il rog!=20
</FONT></DIV></BODY></HTML>

------=_NextPart_000_0034_01C41442.3DABC1C0--