softirq_ctrl
static DEFINE_PER_CPU(struct softirq_ctrl, softirq_ctrl) = {
.lock = INIT_LOCAL_LOCK(softirq_ctrl.lock),
return __this_cpu_read(softirq_ctrl.cnt) != 0;
local_lock(&softirq_ctrl.lock);
DEBUG_LOCKS_WARN_ON(this_cpu_read(softirq_ctrl.cnt));
newcnt = this_cpu_add_return(softirq_ctrl.cnt, cnt);
this_cpu_add(softirq_ctrl.cnt, cnt);
this_cpu_read(softirq_ctrl.cnt));
newcnt = this_cpu_sub_return(softirq_ctrl.cnt, cnt);
local_unlock(&softirq_ctrl.lock);
this_cpu_sub(softirq_ctrl.cnt, cnt);
curcnt = this_cpu_read(softirq_ctrl.cnt);
return !this_cpu_read(softirq_ctrl.cnt);