ใช้ฟังก์ชัน mutex_lock_interruptible เพื่อให้สัญญาณรบกวนคนขับของคุณ นี่หมายความว่าการเรียกระบบของคุณควรเขียนเพื่อให้สามารถเริ่มต้นใหม่ได้ (ดู ERESTARTSYS ด้วย)
ฉันสามารถล็อคสปินล็อคใน CPU เครื่องหนึ่งและปลดล็อคอีก CPU อีกเครื่องหนึ่งได้ไหม
การใช้ spinlocks บนระบบ single-core/single-CPU มักจะไม่สมเหตุสมผล เนื่องจากตราบใดที่โพล spinlock กำลังบล็อกแกน CPU ที่มีอยู่เท่านั้น เธรดอื่นไม่สามารถรันได้ และเนื่องจากเธรดอื่นไม่สามารถรันได้ ล็อคจะไม่ถูกปลดล็อคด้วย.
ฉันสามารถโทรหา Kmalloc Gfp_kernel ขณะถือ spinlock ได้หรือไม่
คุณไม่สามารถ ทำทุกอย่างที่จะหลับในขณะที่ถือสปินล็อคตัวอย่างเช่น ห้ามเรียกใช้ฟังก์ชันใดๆ ที่แตะต้องหน่วยความจำของผู้ใช้ kmalloc ด้วยแฟล็ก GFP_KERNEL ฟังก์ชันสัญญาณใดๆ หรือฟังก์ชันกำหนดการใดๆ ขณะถือสปินล็อก … สัญญาณใน Linux เป็นตัวล็อกขณะหลับ
Spinlock_t คืออะไร
int spin_trylock(spinlock_t lock) ล็อคสปินล็อค ถ้ายังไม่ได้ล็อค หากไม่สามารถล็อกได้ จะออกจากระบบโดยมีข้อผิดพลาดและไม่หมุนล็อก spin_lock_irq: spin_lock_irq(spinlock_t lock)
เคอร์เนล mutex คืออะไร
ในเคอร์เนล Linux mutexes อ้างถึง การล็อกดั้งเดิมเฉพาะที่บังคับใช้การทำให้เป็นอนุกรมบนระบบหน่วยความจำที่ใช้ร่วมกัน และไม่เพียงแต่คำทั่วไปที่อ้างถึง 'การยกเว้นร่วมกัน' ที่พบใน ตำราวิชาการหรือตำราทฤษฎีที่คล้ายกัน