Wann soll mutex_lock_interruptible verwendet werden?

Inhaltsverzeichnis:

Wann soll mutex_lock_interruptible verwendet werden?
Wann soll mutex_lock_interruptible verwendet werden?

Video: Wann soll mutex_lock_interruptible verwendet werden?

Video: Wann soll mutex_lock_interruptible verwendet werden?
Video: Prozesse und Threads | #Betriebssysteme 2024, Dezember
Anonim

Verwenden Sie die Funktion mutex_lock_interruptible , damit Ihr Treiber durch ein beliebiges Signal unterbrochen werden kann. Dies impliziert, dass Ihr Systemaufruf so geschrieben werden sollte, dass er neu gestartet werden kann. (Siehe auch ERESTARTSYS.)

Kann ich ein Spinlock in einer CPU sperren und es in einer anderen CPU entsperren?

Die Verwendung von Spinlocks auf einem Single-Core-/Single-CPU-System macht normalerweise keinen Sinn, da solange das Spinlock-Polling den einzigen verfügbaren CPU-Kern blockiert, kein anderer Thread ausgeführt werden kann und da kein anderer Thread ausgeführt werden kann, das Schloss geht auch nicht auf.

Kann ich Kmalloc Gfp_kernel anrufen, während ich einen Spinlock h alte?

Du kannst jedoch nicht irgendetwas tun, das schläft, während du ein Spinlock hältst. Rufen Sie beispielsweise niemals eine Funktion auf, die den Benutzerspeicher berührt, kmalloc mit dem GFP_KERNEL-Flag, irgendwelche Semaphor-Funktionen oder eine der Zeitplanfunktionen, während Sie ein Spinlock h alten. … Semaphoren in Linux sind schlafende Schlösser.

Was ist Spinlock_t?

int spin_trylock(spinlock_t lock) Sperrt das Spinlock wenn es noch nicht gesperrt ist. Wenn die Sperre nicht abgerufen werden kann, wird sie mit einem Fehler beendet und die Sperre wird nicht gedreht. spin_lock_irq: spin_lock_irq(spinlock_t lock)

Was ist ein Kernel-Mutex?

Im Linux-Kernel beziehen sich Mutexe auf ein bestimmtes Sperrelement, das die Serialisierung auf Shared-Memory-Systemen erzwingt, und nicht nur auf den allgemeinen Begriff, der sich auf "gegenseitigen Ausschluss" bezieht, der in gefunden wird academia oder ähnliche theoretische Lehrbücher.

Empfohlen: