Драйвериңизди кандайдыр бир сигнал менен үзгүлтүккө учуратууга жол берүү үчүн mutex_lock_interruptible функциясын колдонуңуз. Бул сиздин тутумдук чалууңуз кайра иштетилиши үчүн жазылышы керек дегенди билдирет. (Ошондой эле ERESTARTSYS караңыз.)
Спинлокту бир процессорго бекитип, башка CPU кулпусун ачсам болобу?
Спинлокторду бир өзөктүү/бир CPU тутумунда колдонуу адатта эч кандай мааниге ээ эмес, анткени spinlock сурамжылоосу бир гана жеткиликтүү CPU өзөгүн бөгөттөп жатканда, башка жип иштей албайт жана башка жип иштей албайт, кулпу да ачылбайт.
Spinlock кармап жатканда Kmalloc Gfp_kernelге чалсам болобу?
Сиз, бирок спинлок кармап жатып уктай турган эч нерсе кыла албайсыз. Мисалы, эч качан колдонуучунун эс тутумуна тийген функцияны, GFP_KERNEL желеги бар kmallocту, спинлокту кармап турганда семафордук функцияларды же график функцияларын эч качан чакырбаңыз. … Linux'тагы семафорлор уктап жаткан кулпулар.
Spinlock_t деген эмне?
int spin_trylock(spinlock_t lock) Спинлокту кулпулайт эгер ал кулпулана элек болсо. Кулпуну ала албаса, ал ката менен чыгып, кулпуну айлантпай калат. spin_lock_irq: spin_lock_irq(spinlock_t lock)
Ядро мутекси деген эмне?
Linux ядросунда мутекстер бөлүштүрүлгөн эс тутумдарында сериялаштырууну ишке ашырган өзгөчө кулпулоо примитивине кайрылат академиялык же окшош теориялык окуу китептери.