Použijte funkci mutex_lock_interruptible , aby byl váš řidič přerušen jakýmkoli signálem. To znamená, že vaše systémové volání by mělo být zapsáno tak, aby bylo možné jej restartovat. (Viz také ERESTARTSYS.)
Mohu uzamknout spinlock v jednom CPU a odemknout jej v jiném CPU?
Používání spinlocků na jednojádrovém/jednojádrovém systému obvykle nemá smysl, protože dokud dotazování spinlocku blokuje jediné dostupné jádro CPU, nemůže běžet žádné jiné vlákno a protože nemůže běžet žádné jiné, nebude odemčen ani zámek.
Mohu zavolat Kmalloc Gfp_kernel, když mám spinlock?
Nemůžete dělat nic, co by při držení spinlocku usnulo. Například nikdy nevolejte žádnou funkci, která se dotýká uživatelské paměti, kmalloc s příznakem GFP_KERNEL, žádné semaforové funkce nebo žádnou z plánovacích funkcí, když držíte spinlock. … Semafory v Linuxu jsou spící zámky.
Co je Spinlock_t?
int spin_trylock(spinlock_t lock) Zamkne spinlock pokud již není zamčený. Pokud nelze zámek získat, opustí se s chybou a zámek se neotočí. spin_lock_irq: spin_lock_irq(spinlock_t lock)
Co je to kernel mutex?
V linuxovém jádře označují mutexy konkrétní zamykací primitivum, které vynucuje serializaci na systémech se sdílenou pamětí, a nikoli pouze obecný termín odkazující na „vzájemné vyloučení“, který se nachází v akademická obec nebo podobné teoretické učebnice.