Pull to refresh

Comments 9

Отличная статья, спасибо!
Всегда хотел понять различия между способами)
Все обсуждавшиеся коды (для проверки, или использования, или дальнейшего улучшения) могут быть взяты здесь или здесь.
yadi.sk
drive.google.com
Может, лучше GitHub, не?
может и лучше ;-)
но я специально не размещал такие мизерные архивы на GitHub.
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0) 
    preempt_enable_no_resched(); 
#else 
    preempt_count_dec(); 
#endif 


preempt_enable_no_resched() был доступен до ядра 3.13

А зачем здесь вообще preempt_enable_no_resched? Чем плох preempt_enable?

static inline unsigned long native_pai_open_kernel( void ) { 
   ...
   local_irq_disable(); 
   ...
} 

static inline unsigned long native_pai_close_kernel( void ) { 
   ...
   local_irq_enable();
   ...
}

Правильнее было бы local_irq_save… local_irq_restore.
А зачем здесь вообще preempt_enable_no_resched? Чем плох preempt_enable?

1. я написал, может, значит, недостаточно внятно, что я постарался максимально неприкосновенно сохранить код, так как он написан был в первоисточнике… у автора там preempt_enable_no_resched()
2.… но preempt_enable() столь же плох — в ядре >3.14 он порождает warning показанный в тексте
честный способ — только наложение. остальные чреваты races condition.
Sign up to leave a comment.