<div dir="ltr"><div><div><div class=""><li class="">Salut.</li></div><p>În primul rând, la întrebarea "Care din urmatoarele formule este greșită?", eu am zis:"<code>time_in_jiffies = time_in_seconds * 100" (fiindcă valoarea HZ depinde de cum e compilat nucleul, nu?), el a zis "</code><br>
<code>time_in_seconds_since_last_boot = jiffies / HZ". Bănuiesc că răspunsul lui e greșit.<br></code></p><div class=""><li class="">În al doilea rând, la întrebarea "Pentru a proteja accesul la date partajate între rutina de tratare a 
unui timer și operația read a unui device driver se folosește:"</li><li class="">Eu am zis:</li><li class="">"<code>spin_lock</code>/<code>spin_unlock</code> în rutina de tratare a timer-ului și <code>spin_lock_bh</code>/<code>spin_unlock_bh</code> în read"</li>
<li class="">El a zis:</li><li class="">"<code>spin_lock</code>/<code>spin_unlock</code> în rutina de tratare a timer-ului și <code>local_bh_disable</code>, <code>spin_lock</code>/<code>spin_unlock</code>, <code>local_bh_enable</code> în read"<br>
</li></div><br></div>De ce am greșit? spin_lock_bh, în plus, am văzut că dezactivează și preempția [1]. Am greșit fiindcă e de ajuns doar să dezactivez pe procesorul local softirq-urile? Păi nu trebuie dezactivată și preempția tocmai fiindcă local_bh_disable are efect doar local?<br>
<br>Mersi,<br></div>Andrei<br><div><br>[1] <a href="http://lxr.linux.no/#linux+v2.6.31/kernel/spinlock.c#L108">http://lxr.linux.no/#linux+v2.6.31/kernel/spinlock.c#L108</a> <br><br><br clear="all"><div><br>-- <br>Andrei Epure
</div></div></div>