spin_lock_irqsave(lock, flags); spin_lock_irqrestore(lock, flags); 我们可以按以下原则使用上面的三对变种函数(宏): 如果只是在普通线程之间同时访问共享对象,使用spin_lock()/spin_unlock(); 如果是在中断和普通线程之间同时访问共享对象,并且确信退出临界区后要打开中断,使用spin_lock_irq()/spin_unlock_i...
#defineraw_spin_lock_irqsave(lock, flags) \do{ \ typecheck(unsignedlong, flags); \ flags= _raw_spin_lock_irqsave(lock); \ }while(0) static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock) staticinlinevoiddo_raw_spin_lock_flags(raw_spinlock_t*lock, unsignedlong*f...
typecheck(unsignedlong, flags); \ flags= _raw_spin_lock_irqsave(lock); \ }while(0) 1. 2. 3. 4. 5. static inline unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock) staticinlinevoiddo_raw_spin_lock_flags(raw_spinlock_t*lock, unsignedlong*flags) __acquires(lock) { __a...
如果只是在普通线程之间同时访问共享对象,使用spin_lock()/spin_unlock(); 如果是在中断和普通线程之间同时访问共享对象,并且确信退出临界区后要打开中断,使用spin_lock_irq()/spin_unlock_irq(); 如果是在中断和普通线程之间同时访问共享对象,并且退出临界区后要保持中断的状态,使用spin_lock_irqsave()/spin_unloc...
spin_lock_irqsave(lock, flags); spin_lock_irqrestore(lock, flags); 我们可以按以下原则使用上面的三对变种函数(宏): 如果只是在普通线程之间同时访问共享对象,使用spin_lock()/spin_unlock(); 如果是在中断和普通线程之间同时访问共享对象,并且确信退出临界区后要打开中断,使用spin_lock_irq()/spin_unlock_...
raw_spin_lock_init(&(_lock)->rlock); \ }while(0) 最终val会设置为0(对于UP,不存在这个赋值) 内核使用spin_lock、spin_lock_irq或者spin_lock_irqsave完成加锁操作;使用spin_unlock、spin_unlock_irq或者spin_unlock_irqsave完成对应的解锁。
raw_spin_lock_irqsave(&p->lock, flags);/* mask compare A interrupt */em_sti_write(p, STI_INTENCLR,1);/* update compare A value */em_sti_write(p, STI_COMPA_H, next >>32); em_sti_write(p, STI_COMPA_L, next &0xffffffff);/* clear compare A interrupt source */em_sti_writ...
> void imx_gpcv2_add_m4_wake_up_irq(u32 hwirq, bool enable) > { > @@ -122,10 +122,10 @@ void imx_gpcv2_add_m4_wake_up_irq(u32 hwirq, bool > enable) > return; > > mask = 1 << hwirq % 32; > - spin_lock_irqsave(&gpcv2_lock, flags); ...
raw_spin_lock_irqsave(&rslock, flags); ret =raw_notifier_chain_unregister(&vmdata->ntf, nb); raw_spin_unlock_irqrestore(&rslock, flags); }returnret; } 开发者ID:AwaisKing,项目名称:mt6577_aosp_source,代码行数:15,代码来源:power.c ...
raw_spin_lock_irqsave(&priv->lock, flags); spin_lock_irqsave(&priv->lock, flags); tmdr = rz_mtu3_shared_reg_read(ch, offset); __assign_bit(pos, &tmdr, !!val); rz_mtu3_shared_reg_write(ch, offset, tmdr); raw_spin_unlock_irqrestore(&priv->lock, flags);...