Linux preempt_count抢占计数与PREEMPT_NONE模式preempt_count是task_struct中thread_info的一个32位字段在CONFIG_PREEMPT_COUNTy时编译。该字段被划分为四个子域preemption disable count低8位、softirq count8-15位、hardirq count16-23位、NMI count24-31位。在内核抢占模型中只要preempt_count不为零或没有设置TIF_NEED_RESCHEDschedule()不会在该点发生。c/* include/linux/preempt.h */#define PREEMPT_DISABLE_OFFSET 1UL#define SOFTIRQ_DISABLE_OFFSET (1UL 8)#define HARDIRQ_DISABLE_OFFSET (1UL 16)#define NMI_OFFSET (1UL 24)struct thread_info {unsigned long flags;u32 status;int preempt_count; /* 仅在CONFIG_PREEMPT_COUNTy时有效 */};static __always_inline int preempt_count(void){return READ_ONCE(current_thread_info()-preempt_count);}static __always_inline void preempt_disable(void){current_thread_info()-preempt_count;barrier();}static __always_inline void preempt_enable(void){barrier();if (unlikely(preempt_count_dec_and_test())) {__preempt_schedule();}}PREEMPT_NONE模式是Linux内核默认的抢占模型此时CONFIG_PREEMPT_NONEy且CONFIG_PREEMPT_COUNTn或为y但preempt_enable不触发resched。该模式下内核态代码完全不允许抢占——即preempt_disable/preempt_enable在编译时退化为空操作preempt_count字段只保留在thread_info中供lockdep使用。用户态抢占不受影响return_to_user时检查TIF_NEED_RESCHED仍然生效。c#ifdef CONFIG_PREEMPT_NONE#define preempt_disable_notrace() barrier()#define preempt_enable_notrace() barrier()#define preempt_check_resched() do { } while (0)#endif#ifdef CONFIG_PREEMPT_VOLUNTARY#define preempt_enable_notrace() do { \barrier(); \if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \__cond_resched(); \} while (0)#endif#ifdef CONFIG_PREEMPT#define preempt_enable_notrace() do { \barrier(); \if (unlikely(preempt_count_dec_and_test())) \__preempt_schedule(); \} while (0)#endifPREEMPT_NONE模式下内核态阻塞的唯一路径是cond_resched()显式调用的检查点。cond_resched()会检查preempt_count是否为0且TIF_NEED_RESCHED被设置然后调用__schedule()。内核代码中散布了数百个cond_resched()调用点主要分布在长循环、文件系统遍历、内存压缩等路径中。如果某个耗时操作缺少cond_resched()在PREEMPT_NONE上会导致调度延迟无限增大——典型的case是zswap的压缩循环和direct reclaim的pagewalk。cint __sched cond_resched(void){if (should_resched(0)) {preempt_schedule_common();return 1;}return 0;}static inline bool should_resched(int preempt_offset){return unlikely(preempt_count() preempt_offset test_thread_flag(TIF_NEED_RESCHED));}preempt_count的原子更新通过arch-specific的set_preempt_need_resched和clear_preempt_need_resched实现。x86_64使用的add_smp和sub_smp指令保证preempt_count增减的可见性。但softirq路径中对preempt_count的操作是问题高发区local_bh_disable()在增加SOFTIRQ_DISABLE_OFFSET的同时还增加了PREEMPT_DISABLE_OFFSET导致在softirq期间不仅禁止bottom half也被禁止了内核抢占。__local_bh_enable_ip()中的preempt_count子域递减必须按精确顺序进行以避免中间态被NMI中断观测到异常值。cstatic __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt){preempt_count_add(cnt SOFTIRQ_DISABLE_OFFSET);barrier();}void __local_bh_enable_ip(unsigned long ip, unsigned int cnt){WARN_ON_ONCE(in_irq());/* 锁破坏检测检查是否有spinlock仍然在softirq上下文中持有 */lockdep_assert_irqs_enabled();preempt_count_sub(cnt SOFTIRQ_DISABLE_OFFSET);barrier();if (unlikely(!in_interrupt() local_softirq_pending()))do_softirq();}硬中断入口irq_enter()递增hardirq countHARDIRQ_OFFSET同时隐含地禁用了内核抢占——preempt_count非零导致任何preempt_enable都不会触发调度。irq_exit()递减HARDIRQ_OFFSET后检查是否有pending softirq需要处理。但这里有一个延迟敏感场景irq_exit到preempt_enable之间的window中若softirq触发了wakeup不会立即导致调度——因为preempt_count尚未降到零。NMI的处理类似但更严格nmi_enter()在preempt_count上增加NMI_OFFSET且NMI_OFFSET是32位字段的最高8位与HARDIRQ_OFFSET不重叠。这样嵌套的NMI可以安全地递增而不干扰硬中断计数。但bug在于nmi_nesting_depth超过255时NMI_OFFSET会溢出到HARDIRQ位——极端罕见但已在trace_nmi_enter中通过per-cpu的__nmi_count做冗余检查。preempt_count在schedule()内的行为也值得一提。__schedule()入口调用preempt_disable_notrace()这确保了schedule()过程中不会被更高优先级的任务抢占。这防止了调度器递归进入自身。而schedule()退出时通过finish_task_switch()检查need_resched()如果新的当前任务也有TIF_NEED_RESCHED标志则立即重新调用__schedule()而不返回。cstatic void __sched notrace __schedule(unsigned int sched_mode){struct task_struct *prev, *next;struct rq *rq;int cpu;/* preempt_disable防止调度递归 */cpu smp_processor_id();rq cpu_rq(cpu);prev rq-curr;if (sched_mode SM_MASK_PREEMPT) {/* 抢占调度——处理PREEMPT_ACTIVE标志 */schedule_debug(prev);}rcu_note_context_switch(preempt);/* 实际的context switch */next pick_next_task(rq, prev, rf);clear_tsk_need_resched(prev);clear_preempt_need_resched();if (likely(prev ! next)) {rq-curr next;context_switch(rq, prev, next, rf);} else {raw_spin_unlock_irq(rq-lock);}}PREEMPT_NONE模型下的一个非直观行为preempt_disable()即使被编译为barrier()仍然需要处理lockdep的跟踪。lockdep在每次spin_lock时检查当前preempt_count是否包含hardirq或softirq位如果不匹配就报inconsistent lock state。因此即使PREEMPT_NONE不产生实际抢占效果preempt_count的thread_info字段仍需维护。m.dgb.mfqqpa.cn/55995.Docm.dgb.mfqqpa.cn/35353.Docm.dgb.mfqqpa.cn/93555.Docm.dgb.mfqqpa.cn/39575.Docm.dgb.mfqqpa.cn/19397.Docm.dgb.mfqqpa.cn/15957.Docm.dgb.mfqqpa.cn/97395.Docm.dgb.mfqqpa.cn/19531.Docm.dgb.mfqqpa.cn/79731.Docm.dgb.mfqqpa.cn/31313.Docm.dgv.mfqqpa.cn/17915.Docm.dgv.mfqqpa.cn/71991.Docm.dgv.mfqqpa.cn/11535.Docm.dgv.mfqqpa.cn/77939.Docm.dgv.mfqqpa.cn/97355.Docm.dgv.mfqqpa.cn/97751.Docm.dgv.mfqqpa.cn/71997.Docm.dgv.mfqqpa.cn/57577.Docm.dgv.mfqqpa.cn/55111.Docm.dgv.mfqqpa.cn/57791.Docm.dgc.mfqqpa.cn/91557.Docm.dgc.mfqqpa.cn/33713.Docm.dgc.mfqqpa.cn/99339.Docm.dgc.mfqqpa.cn/31731.Docm.dgc.mfqqpa.cn/75919.Docm.dgc.mfqqpa.cn/73991.Docm.dgc.mfqqpa.cn/91799.Docm.dgc.mfqqpa.cn/31537.Docm.dgc.mfqqpa.cn/17355.Docm.dgc.mfqqpa.cn/31535.Docm.dgx.mfqqpa.cn/53997.Docm.dgx.mfqqpa.cn/13179.Docm.dgx.mfqqpa.cn/55991.Docm.dgx.mfqqpa.cn/37775.Docm.dgx.mfqqpa.cn/51155.Docm.dgx.mfqqpa.cn/37955.Docm.dgx.mfqqpa.cn/33519.Docm.dgx.mfqqpa.cn/77557.Docm.dgx.mfqqpa.cn/15773.Docm.dgx.mfqqpa.cn/17793.Docm.dgz.mfqqpa.cn/55977.Docm.dgz.mfqqpa.cn/31595.Docm.dgz.mfqqpa.cn/91195.Docm.dgz.mfqqpa.cn/75799.Docm.dgz.mfqqpa.cn/37531.Docm.dgz.mfqqpa.cn/35513.Docm.dgz.mfqqpa.cn/19395.Docm.dgz.mfqqpa.cn/99597.Docm.dgz.mfqqpa.cn/79311.Docm.dgz.mfqqpa.cn/95957.Docm.dgl.mfqqpa.cn/31115.Docm.dgl.mfqqpa.cn/31511.Docm.dgl.mfqqpa.cn/53193.Docm.dgl.mfqqpa.cn/53959.Docm.dgl.mfqqpa.cn/15373.Docm.dgl.mfqqpa.cn/39715.Docm.dgl.mfqqpa.cn/55555.Docm.dgl.mfqqpa.cn/31317.Docm.dgl.mfqqpa.cn/17799.Docm.dgl.mfqqpa.cn/53917.Docm.dgk.mfqqpa.cn/79519.Docm.dgk.mfqqpa.cn/77517.Docm.dgk.mfqqpa.cn/35151.Docm.dgk.mfqqpa.cn/13355.Docm.dgk.mfqqpa.cn/17353.Docm.dgk.mfqqpa.cn/17777.Docm.dgk.mfqqpa.cn/95395.Docm.dgk.mfqqpa.cn/39535.Docm.dgk.mfqqpa.cn/73551.Docm.dgk.mfqqpa.cn/15717.Docm.dgj.mfqqpa.cn/17935.Docm.dgj.mfqqpa.cn/39713.Docm.dgj.mfqqpa.cn/35731.Docm.dgj.mfqqpa.cn/73191.Docm.dgj.mfqqpa.cn/39159.Docm.dgj.mfqqpa.cn/71395.Docm.dgj.mfqqpa.cn/39597.Docm.dgj.mfqqpa.cn/51357.Docm.dgj.mfqqpa.cn/35757.Docm.dgj.mfqqpa.cn/73513.Docm.dgh.mfqqpa.cn/53957.Docm.dgh.mfqqpa.cn/11911.Docm.dgh.mfqqpa.cn/11311.Docm.dgh.mfqqpa.cn/33375.Docm.dgh.mfqqpa.cn/59931.Docm.dgh.mfqqpa.cn/31795.Docm.dgh.mfqqpa.cn/97795.Docm.dgh.mfqqpa.cn/35933.Docm.dgh.mfqqpa.cn/99773.Docm.dgh.mfqqpa.cn/51991.Docm.dgg.mfqqpa.cn/59319.Docm.dgg.mfqqpa.cn/11333.Docm.dgg.mfqqpa.cn/77793.Docm.dgg.mfqqpa.cn/99519.Docm.dgg.mfqqpa.cn/99711.Docm.dgg.mfqqpa.cn/53773.Docm.dgg.mfqqpa.cn/57139.Docm.dgg.mfqqpa.cn/93557.Docm.dgg.mfqqpa.cn/95313.Docm.dgg.mfqqpa.cn/53597.Docm.dgf.mfqqpa.cn/57799.Docm.dgf.mfqqpa.cn/51537.Docm.dgf.mfqqpa.cn/55977.Docm.dgf.mfqqpa.cn/57551.Docm.dgf.mfqqpa.cn/17139.Docm.dgf.mfqqpa.cn/39117.Docm.dgf.mfqqpa.cn/59317.Docm.dgf.mfqqpa.cn/93339.Docm.dgf.mfqqpa.cn/95757.Docm.dgf.mfqqpa.cn/33335.Docm.dgd.mfqqpa.cn/53733.Docm.dgd.mfqqpa.cn/51117.Docm.dgd.mfqqpa.cn/55997.Docm.dgd.mfqqpa.cn/13371.Docm.dgd.mfqqpa.cn/17539.Docm.dgd.mfqqpa.cn/91133.Docm.dgd.mfqqpa.cn/95915.Docm.dgd.mfqqpa.cn/35971.Docm.dgd.mfqqpa.cn/91559.Docm.dgd.mfqqpa.cn/17179.Docm.dgs.mfqqpa.cn/95119.Docm.dgs.mfqqpa.cn/97153.Docm.dgs.mfqqpa.cn/91577.Docm.dgs.mfqqpa.cn/13111.Docm.dgs.mfqqpa.cn/37197.Docm.dgs.mfqqpa.cn/79371.Docm.dgs.mfqqpa.cn/11759.Docm.dgs.mfqqpa.cn/59159.Docm.dgs.mfqqpa.cn/73393.Docm.dgs.mfqqpa.cn/91193.Docm.dga.mfqqpa.cn/71513.Docm.dga.mfqqpa.cn/33733.Docm.dga.mfqqpa.cn/73377.Docm.dga.mfqqpa.cn/71751.Docm.dga.mfqqpa.cn/53571.Docm.dga.mfqqpa.cn/33799.Docm.dga.mfqqpa.cn/11559.Docm.dga.mfqqpa.cn/59597.Docm.dga.mfqqpa.cn/19975.Docm.dga.mfqqpa.cn/71753.Docm.dgp.mfqqpa.cn/75171.Docm.dgp.mfqqpa.cn/79793.Docm.dgp.mfqqpa.cn/39113.Docm.dgp.mfqqpa.cn/31771.Docm.dgp.mfqqpa.cn/93173.Docm.dgp.mfqqpa.cn/59975.Docm.dgp.mfqqpa.cn/79795.Docm.dgp.mfqqpa.cn/71571.Docm.dgp.mfqqpa.cn/55191.Docm.dgp.mfqqpa.cn/51713.Docm.dgo.mfqqpa.cn/93771.Docm.dgo.mfqqpa.cn/95793.Docm.dgo.mfqqpa.cn/53595.Docm.dgo.mfqqpa.cn/35593.Docm.dgo.mfqqpa.cn/59535.Docm.dgo.mfqqpa.cn/13177.Docm.dgo.mfqqpa.cn/75951.Docm.dgo.mfqqpa.cn/31937.Docm.dgo.mfqqpa.cn/77773.Docm.dgo.mfqqpa.cn/19777.Docm.dgi.mfqqpa.cn/97119.Docm.dgi.mfqqpa.cn/99511.Docm.dgi.mfqqpa.cn/33375.Docm.dgi.mfqqpa.cn/37915.Docm.dgi.mfqqpa.cn/33993.Docm.dgi.mfqqpa.cn/93597.Docm.dgi.mfqqpa.cn/17917.Docm.dgi.mfqqpa.cn/17373.Docm.dgi.mfqqpa.cn/39519.Docm.dgi.mfqqpa.cn/31913.Docm.dgu.mfqqpa.cn/15339.Docm.dgu.mfqqpa.cn/19137.Docm.dgu.mfqqpa.cn/55355.Docm.dgu.mfqqpa.cn/75395.Docm.dgu.mfqqpa.cn/19933.Docm.dgu.mfqqpa.cn/71537.Docm.dgu.mfqqpa.cn/53971.Docm.dgu.mfqqpa.cn/19593.Docm.dgu.mfqqpa.cn/95597.Docm.dgu.mfqqpa.cn/91791.Docm.dgy.mfqqpa.cn/79711.Docm.dgy.mfqqpa.cn/17535.Docm.dgy.mfqqpa.cn/51517.Docm.dgy.mfqqpa.cn/93991.Docm.dgy.mfqqpa.cn/95355.Docm.dgy.mfqqpa.cn/57395.Docm.dgy.mfqqpa.cn/59399.Docm.dgy.mfqqpa.cn/55733.Docm.dgy.mfqqpa.cn/35397.Docm.dgy.mfqqpa.cn/53195.Docm.dgt.mfqqpa.cn/39715.Docm.dgt.mfqqpa.cn/11939.Docm.dgt.mfqqpa.cn/35599.Docm.dgt.mfqqpa.cn/53317.Docm.dgt.mfqqpa.cn/33395.Docm.dgt.mfqqpa.cn/59331.Docm.dgt.mfqqpa.cn/39517.Docm.dgt.mfqqpa.cn/57317.Docm.dgt.mfqqpa.cn/77951.Docm.dgt.mfqqpa.cn/37711.Docm.dgr.mfqqpa.cn/75173.Docm.dgr.mfqqpa.cn/15993.Docm.dgr.mfqqpa.cn/99931.Docm.dgr.mfqqpa.cn/11311.Docm.dgr.mfqqpa.cn/57133.Docm.dgr.mfqqpa.cn/73195.Docm.dgr.mfqqpa.cn/71359.Docm.dgr.mfqqpa.cn/93375.Docm.dgr.mfqqpa.cn/11333.Docm.dgr.mfqqpa.cn/59511.Docm.dge.mfqqpa.cn/75177.Docm.dge.mfqqpa.cn/13737.Docm.dge.mfqqpa.cn/97739.Docm.dge.mfqqpa.cn/55719.Docm.dge.mfqqpa.cn/17775.Docm.dge.mfqqpa.cn/17335.Docm.dge.mfqqpa.cn/71735.Docm.dge.mfqqpa.cn/91971.Docm.dge.mfqqpa.cn/59513.Docm.dge.mfqqpa.cn/13399.Docm.dgw.mfqqpa.cn/17315.Docm.dgw.mfqqpa.cn/31157.Docm.dgw.mfqqpa.cn/51519.Docm.dgw.mfqqpa.cn/15991.Docm.dgw.mfqqpa.cn/19955.Docm.dgw.mfqqpa.cn/39117.Docm.dgw.mfqqpa.cn/39171.Docm.dgw.mfqqpa.cn/99197.Docm.dgw.mfqqpa.cn/97137.Docm.dgw.mfqqpa.cn/93157.Docm.dgq.mfqqpa.cn/77799.Docm.dgq.mfqqpa.cn/11333.Docm.dgq.mfqqpa.cn/37715.Docm.dgq.mfqqpa.cn/13139.Docm.dgq.mfqqpa.cn/59397.Docm.dgq.mfqqpa.cn/19559.Docm.dgq.mfqqpa.cn/59793.Docm.dgq.mfqqpa.cn/73793.Docm.dgq.mfqqpa.cn/93753.Docm.dgq.mfqqpa.cn/55159.Docm.dfm.mfqqpa.cn/59571.Docm.dfm.mfqqpa.cn/11397.Docm.dfm.mfqqpa.cn/79755.Docm.dfm.mfqqpa.cn/91935.Docm.dfm.mfqqpa.cn/57753.Docm.dfm.mfqqpa.cn/99339.Docm.dfm.mfqqpa.cn/73319.Docm.dfm.mfqqpa.cn/11775.Docm.dfm.mfqqpa.cn/95957.Docm.dfm.mfqqpa.cn/13159.Docm.dfn.mfqqpa.cn/95575.Docm.dfn.mfqqpa.cn/97931.Docm.dfn.mfqqpa.cn/59517.Docm.dfn.mfqqpa.cn/31377.Docm.dfn.mfqqpa.cn/55991.Docm.dfn.mfqqpa.cn/95315.Docm.dfn.mfqqpa.cn/53357.Docm.dfn.mfqqpa.cn/91995.Docm.dfn.mfqqpa.cn/51375.Docm.dfn.mfqqpa.cn/95337.Docm.dfb.mfqqpa.cn/39551.Docm.dfb.mfqqpa.cn/19359.Docm.dfb.mfqqpa.cn/33713.Docm.dfb.mfqqpa.cn/53919.Docm.dfb.mfqqpa.cn/39371.Docm.dfb.mfqqpa.cn/35771.Docm.dfb.mfqqpa.cn/73591.Docm.dfb.mfqqpa.cn/55335.Docm.dfb.mfqqpa.cn/15337.Docm.dfb.mfqqpa.cn/55791.Docm.dfv.mfqqpa.cn/53993.Docm.dfv.mfqqpa.cn/91999.Docm.dfv.mfqqpa.cn/99179.Docm.dfv.mfqqpa.cn/51715.Docm.dfv.mfqqpa.cn/97535.Docm.dfv.mfqqpa.cn/57375.Docm.dfv.mfqqpa.cn/19979.Docm.dfv.mfqqpa.cn/95939.Docm.dfv.mfqqpa.cn/11399.Docm.dfv.mfqqpa.cn/55599.Docm.dfc.mfqqpa.cn/11953.Docm.dfc.mfqqpa.cn/91593.Docm.dfc.mfqqpa.cn/55115.Docm.dfc.mfqqpa.cn/13311.Docm.dfc.mfqqpa.cn/11153.Docm.dfc.mfqqpa.cn/95993.Docm.dfc.mfqqpa.cn/99537.Docm.dfc.mfqqpa.cn/55515.Docm.dfc.mfqqpa.cn/75597.Docm.dfc.mfqqpa.cn/57137.Docm.dfx.mfqqpa.cn/33593.Docm.dfx.mfqqpa.cn/51793.Docm.dfx.mfqqpa.cn/99991.Docm.dfx.mfqqpa.cn/39517.Docm.dfx.mfqqpa.cn/73919.Docm.dfx.mfqqpa.cn/39593.Docm.dfx.mfqqpa.cn/77937.Docm.dfx.mfqqpa.cn/59551.Docm.dfx.mfqqpa.cn/37315.Docm.dfx.mfqqpa.cn/19395.Docm.dfz.mfqqpa.cn/13331.Docm.dfz.mfqqpa.cn/71953.Docm.dfz.mfqqpa.cn/51393.Docm.dfz.mfqqpa.cn/79757.Docm.dfz.mfqqpa.cn/53997.Docm.dfz.mfqqpa.cn/91573.Docm.dfz.mfqqpa.cn/73773.Docm.dfz.mfqqpa.cn/39959.Docm.dfz.mfqqpa.cn/33351.Docm.dfz.mfqqpa.cn/31353.Docm.dfl.mfqqpa.cn/75333.Docm.dfl.mfqqpa.cn/77379.Docm.dfl.mfqqpa.cn/35177.Docm.dfl.mfqqpa.cn/17311.Docm.dfl.mfqqpa.cn/17791.Docm.dfl.mfqqpa.cn/51939.Docm.dfl.mfqqpa.cn/75553.Docm.dfl.mfqqpa.cn/35131.Docm.dfl.mfqqpa.cn/11995.Docm.dfl.mfqqpa.cn/97997.Docm.dfk.mfqqpa.cn/59777.Docm.dfk.mfqqpa.cn/75119.Docm.dfk.mfqqpa.cn/73137.Docm.dfk.mfqqpa.cn/35959.Docm.dfk.mfqqpa.cn/73999.Docm.dfk.mfqqpa.cn/37591.Docm.dfk.mfqqpa.cn/13159.Docm.dfk.mfqqpa.cn/71153.Docm.dfk.mfqqpa.cn/59719.Docm.dfk.mfqqpa.cn/37715.Docm.dfj.mfqqpa.cn/91593.Docm.dfj.mfqqpa.cn/95113.Docm.dfj.mfqqpa.cn/11337.Docm.dfj.mfqqpa.cn/91395.Docm.dfj.mfqqpa.cn/33533.Docm.dfj.mfqqpa.cn/79799.Docm.dfj.mfqqpa.cn/53777.Docm.dfj.mfqqpa.cn/31591.Docm.dfj.mfqqpa.cn/91577.Docm.dfj.mfqqpa.cn/35195.Docm.dfh.mfqqpa.cn/95717.Docm.dfh.mfqqpa.cn/79733.Docm.dfh.mfqqpa.cn/33935.Docm.dfh.mfqqpa.cn/79779.Docm.dfh.mfqqpa.cn/79995.Docm.dfh.mfqqpa.cn/17375.Docm.dfh.mfqqpa.cn/73393.Docm.dfh.mfqqpa.cn/79311.Docm.dfh.mfqqpa.cn/77775.Docm.dfh.mfqqpa.cn/77975.Docm.dfg.mfqqpa.cn/35335.Docm.dfg.mfqqpa.cn/31793.Docm.dfg.mfqqpa.cn/17537.Docm.dfg.mfqqpa.cn/13117.Docm.dfg.mfqqpa.cn/95591.Docm.dfg.mfqqpa.cn/99799.Docm.dfg.mfqqpa.cn/73313.Docm.dfg.mfqqpa.cn/59153.Docm.dfg.mfqqpa.cn/11157.Docm.dfg.mfqqpa.cn/93715.Docm.dff.mfqqpa.cn/15591.Docm.dff.mfqqpa.cn/77119.Docm.dff.mfqqpa.cn/51997.Docm.dff.mfqqpa.cn/79991.Docm.dff.mfqqpa.cn/99959.Docm.dff.mfqqpa.cn/59715.Docm.dff.mfqqpa.cn/37335.Docm.dff.mfqqpa.cn/13199.Docm.dff.mfqqpa.cn/71313.Docm.dff.mfqqpa.cn/59557.Docm.dfd.mfqqpa.cn/57115.Docm.dfd.mfqqpa.cn/37575.Docm.dfd.mfqqpa.cn/55759.Docm.dfd.mfqqpa.cn/55391.Docm.dfd.mfqqpa.cn/93153.Docm.dfd.mfqqpa.cn/39359.Docm.dfd.mfqqpa.cn/73791.Docm.dfd.mfqqpa.cn/91713.Docm.dfd.mfqqpa.cn/51595.Docm.dfd.mfqqpa.cn/35519.Docm.dfs.mfqqpa.cn/55311.Docm.dfs.mfqqpa.cn/71315.Docm.dfs.mfqqpa.cn/11715.Docm.dfs.mfqqpa.cn/37515.Docm.dfs.mfqqpa.cn/51555.Docm.dfs.mfqqpa.cn/39319.Docm.dfs.mfqqpa.cn/77171.Docm.dfs.mfqqpa.cn/53531.Docm.dfs.mfqqpa.cn/57117.Docm.dfs.mfqqpa.cn/53571.Docm.dfa.mfqqpa.cn/13119.Docm.dfa.mfqqpa.cn/55935.Docm.dfa.mfqqpa.cn/91757.Docm.dfa.mfqqpa.cn/97575.Docm.dfa.mfqqpa.cn/93139.Docm.dfa.mfqqpa.cn/99915.Docm.dfa.mfqqpa.cn/75971.Docm.dfa.mfqqpa.cn/37959.Docm.dfa.mfqqpa.cn/91933.Docm.dfa.mfqqpa.cn/55393.Docm.dfp.mfqqpa.cn/13359.Docm.dfp.mfqqpa.cn/97311.Docm.dfp.mfqqpa.cn/17915.Docm.dfp.mfqqpa.cn/51975.Docm.dfp.mfqqpa.cn/91399.Docm.dfp.mfqqpa.cn/53375.Docm.dfp.mfqqpa.cn/71195.Docm.dfp.mfqqpa.cn/59177.Docm.dfp.mfqqpa.cn/17337.Docm.dfp.mfqqpa.cn/91959.Docm.dfo.mfqqpa.cn/55935.Docm.dfo.mfqqpa.cn/15793.Docm.dfo.mfqqpa.cn/33973.Docm.dfo.mfqqpa.cn/13197.Docm.dfo.mfqqpa.cn/57593.Docm.dfo.mfqqpa.cn/79519.Docm.dfo.mfqqpa.cn/37117.Docm.dfo.mfqqpa.cn/11139.Docm.dfo.mfqqpa.cn/39557.Docm.dfo.mfqqpa.cn/11155.Docm.dfi.mfqqpa.cn/97575.Docm.dfi.mfqqpa.cn/37793.Docm.dfi.mfqqpa.cn/77713.Docm.dfi.mfqqpa.cn/79711.Docm.dfi.mfqqpa.cn/91719.Docm.dfi.mfqqpa.cn/31737.Docm.dfi.mfqqpa.cn/95131.Docm.dfi.mfqqpa.cn/59573.Docm.dfi.mfqqpa.cn/73737.Docm.dfi.mfqqpa.cn/93931.Docm.dfu.mfqqpa.cn/93555.Docm.dfu.mfqqpa.cn/33135.Docm.dfu.mfqqpa.cn/95999.Docm.dfu.mfqqpa.cn/15959.Docm.dfu.mfqqpa.cn/91191.Docm.dfu.mfqqpa.cn/59713.Docm.dfu.mfqqpa.cn/93953.Docm.dfu.mfqqpa.cn/95199.Docm.dfu.mfqqpa.cn/19317.Docm.dfu.mfqqpa.cn/31159.Docm.dfy.mfqqpa.cn/97313.Docm.dfy.mfqqpa.cn/71779.Docm.dfy.mfqqpa.cn/71711.Docm.dfy.mfqqpa.cn/55159.Docm.dfy.mfqqpa.cn/99195.Docm.dfy.mfqqpa.cn/15955.Docm.dfy.mfqqpa.cn/39579.Docm.dfy.mfqqpa.cn/55719.Docm.dfy.mfqqpa.cn/91935.Docm.dfy.mfqqpa.cn/33517.Docm.dft.mfqqpa.cn/55395.Docm.dft.mfqqpa.cn/97973.Docm.dft.mfqqpa.cn/97555.Docm.dft.mfqqpa.cn/11359.Docm.dft.mfqqpa.cn/75339.Docm.dft.mfqqpa.cn/55315.Docm.dft.mfqqpa.cn/57337.Docm.dft.mfqqpa.cn/37737.Docm.dft.mfqqpa.cn/13595.Docm.dft.mfqqpa.cn/59577.Docm.dfr.mfqqpa.cn/17939.Docm.dfr.mfqqpa.cn/97935.Docm.dfr.mfqqpa.cn/59371.Docm.dfr.mfqqpa.cn/15317.Docm.dfr.mfqqpa.cn/51511.Docm.dfr.mfqqpa.cn/93931.Docm.dfr.mfqqpa.cn/15373.Docm.dfr.mfqqpa.cn/51337.Docm.dfr.mfqqpa.cn/37939.Docm.dfr.mfqqpa.cn/71931.Docm.dfe.mfqqpa.cn/17951.Docm.dfe.mfqqpa.cn/51177.Docm.dfe.mfqqpa.cn/75775.Docm.dfe.mfqqpa.cn/31151.Docm.dfe.mfqqpa.cn/15177.Docm.dfe.mfqqpa.cn/31579.Docm.dfe.mfqqpa.cn/53353.Docm.dfe.mfqqpa.cn/75553.Docm.dfe.mfqqpa.cn/39337.Docm.dfe.mfqqpa.cn/97337.Docm.dfw.mfqqpa.cn/95399.Docm.dfw.mfqqpa.cn/31959.Docm.dfw.mfqqpa.cn/95719.Docm.dfw.mfqqpa.cn/51519.Docm.dfw.mfqqpa.cn/13975.Docm.dfw.mfqqpa.cn/51595.Docm.dfw.mfqqpa.cn/93935.Docm.dfw.mfqqpa.cn/19997.Docm.dfw.mfqqpa.cn/33379.Docm.dfw.mfqqpa.cn/95137.Docm.dfq.mfqqpa.cn/79153.Docm.dfq.mfqqpa.cn/75973.Docm.dfq.mfqqpa.cn/51371.Docm.dfq.mfqqpa.cn/11533.Docm.dfq.mfqqpa.cn/73371.Docm.dfq.mfqqpa.cn/39773.Docm.dfq.mfqqpa.cn/79155.Docm.dfq.mfqqpa.cn/55951.Docm.dfq.mfqqpa.cn/51373.Docm.dfq.mfqqpa.cn/31939.Docm.ddm.mfqqpa.cn/75171.Docm.ddm.mfqqpa.cn/97773.Docm.ddm.mfqqpa.cn/73519.Docm.ddm.mfqqpa.cn/55557.Docm.ddm.mfqqpa.cn/77977.Docm.ddm.mfqqpa.cn/33771.Docm.ddm.mfqqpa.cn/71135.Docm.ddm.mfqqpa.cn/19579.Docm.ddm.mfqqpa.cn/55331.Docm.ddm.mfqqpa.cn/35597.Docm.ddn.mfqqpa.cn/95195.Docm.ddn.mfqqpa.cn/51511.Docm.ddn.mfqqpa.cn/17199.Docm.ddn.mfqqpa.cn/11575.Docm.ddn.mfqqpa.cn/35371.Docm.ddn.mfqqpa.cn/95797.Docm.ddn.mfqqpa.cn/91733.Docm.ddn.mfqqpa.cn/77915.Docm.ddn.mfqqpa.cn/31153.Docm.ddn.mfqqpa.cn/53335.Docm.ddb.mfqqpa.cn/95777.Docm.ddb.mfqqpa.cn/75991.Docm.ddb.mfqqpa.cn/13391.Docm.ddb.mfqqpa.cn/31519.Docm.ddb.mfqqpa.cn/39797.Docm.ddb.mfqqpa.cn/35371.Docm.ddb.mfqqpa.cn/15799.Docm.ddb.mfqqpa.cn/13559.Docm.ddb.mfqqpa.cn/17379.Docm.ddb.mfqqpa.cn/71351.Docm.ddv.mfqqpa.cn/51153.Docm.ddv.mfqqpa.cn/37559.Docm.ddv.mfqqpa.cn/79517.Docm.ddv.mfqqpa.cn/59791.Docm.ddv.mfqqpa.cn/15151.Docm.ddv.mfqqpa.cn/99977.Docm.ddv.mfqqpa.cn/75999.Docm.ddv.mfqqpa.cn/57355.Docm.ddv.mfqqpa.cn/97539.Docm.ddv.mfqqpa.cn/35195.Docm.ddc.mfqqpa.cn/35917.Docm.ddc.mfqqpa.cn/17197.Docm.ddc.mfqqpa.cn/19953.Docm.ddc.mfqqpa.cn/57933.Docm.ddc.mfqqpa.cn/97575.Docm.ddc.mfqqpa.cn/79515.Docm.ddc.mfqqpa.cn/37159.Docm.ddc.mfqqpa.cn/93577.Docm.ddc.mfqqpa.cn/75377.Docm.ddc.mfqqpa.cn/33139.Docm.ddx.mfqqpa.cn/55531.Docm.ddx.mfqqpa.cn/11179.Docm.ddx.mfqqpa.cn/75133.Docm.ddx.mfqqpa.cn/11371.Docm.ddx.mfqqpa.cn/31913.Docm.ddx.mfqqpa.cn/79959.Docm.ddx.mfqqpa.cn/99755.Docm.ddx.mfqqpa.cn/75117.Docm.ddx.mfqqpa.cn/59753.Docm.ddx.mfqqpa.cn/39339.Docm.ddz.mfqqpa.cn/55339.Docm.ddz.mfqqpa.cn/17137.Docm.ddz.mfqqpa.cn/17575.Docm.ddz.mfqqpa.cn/53195.Docm.ddz.mfqqpa.cn/55151.Docm.ddz.mfqqpa.cn/55799.Docm.ddz.mfqqpa.cn/19595.Docm.ddz.mfqqpa.cn/59133.Docm.ddz.mfqqpa.cn/57731.Docm.ddz.mfqqpa.cn/19535.Docm.ddl.mfqqpa.cn/77131.Docm.ddl.mfqqpa.cn/73371.Docm.ddl.mfqqpa.cn/55395.Docm.ddl.mfqqpa.cn/15177.Docm.ddl.mfqqpa.cn/99511.Docm.ddl.mfqqpa.cn/17139.Docm.ddl.mfqqpa.cn/39115.Docm.ddl.mfqqpa.cn/51791.Docm.ddl.mfqqpa.cn/35991.Docm.ddl.mfqqpa.cn/11991.Docm.ddk.mfqqpa.cn/79735.Docm.ddk.mfqqpa.cn/57977.Docm.ddk.mfqqpa.cn/11357.Docm.ddk.mfqqpa.cn/79137.Docm.ddk.mfqqpa.cn/99973.Docm.ddk.mfqqpa.cn/75959.Docm.ddk.mfqqpa.cn/13151.Docm.ddk.mfqqpa.cn/11319.Docm.ddk.mfqqpa.cn/71991.Docm.ddk.mfqqpa.cn/59557.Docm.ddj.mfqqpa.cn/93135.Docm.ddj.mfqqpa.cn/75319.Docm.ddj.mfqqpa.cn/55197.Docm.ddj.mfqqpa.cn/37955.Docm.ddj.mfqqpa.cn/59795.Docm.ddj.mfqqpa.cn/15131.Docm.ddj.mfqqpa.cn/75751.Docm.ddj.mfqqpa.cn/99577.Docm.ddj.mfqqpa.cn/59379.Docm.ddj.mfqqpa.cn/17997.Docm.ddh.mfqqpa.cn/33931.Docm.ddh.mfqqpa.cn/15199.Docm.ddh.mfqqpa.cn/97711.Docm.ddh.mfqqpa.cn/79939.Docm.ddh.mfqqpa.cn/93515.Docm.ddh.mfqqpa.cn/33957.Docm.ddh.mfqqpa.cn/51315.Docm.ddh.mfqqpa.cn/13777.Docm.ddh.mfqqpa.cn/55957.Docm.ddh.mfqqpa.cn/57939.Docm.ddg.mfqqpa.cn/19113.Docm.ddg.mfqqpa.cn/79571.Docm.ddg.mfqqpa.cn/19359.Docm.ddg.mfqqpa.cn/19953.Docm.ddg.mfqqpa.cn/97977.Docm.ddg.mfqqpa.cn/95335.Docm.ddg.mfqqpa.cn/79377.Docm.ddg.mfqqpa.cn/15159.Docm.ddg.mfqqpa.cn/51599.Docm.ddg.mfqqpa.cn/91713.Docm.ddf.mfqqpa.cn/73133.Docm.ddf.mfqqpa.cn/71391.Docm.ddf.mfqqpa.cn/57177.Docm.ddf.mfqqpa.cn/97777.Docm.ddf.mfqqpa.cn/39951.Docm.ddf.mfqqpa.cn/37133.Docm.ddf.mfqqpa.cn/79391.Docm.ddf.mfqqpa.cn/71199.Docm.ddf.mfqqpa.cn/57519.Docm.ddf.mfqqpa.cn/95559.Docm.ddd.mfqqpa.cn/57513.Docm.ddd.mfqqpa.cn/26804.Docm.ddd.mfqqpa.cn/04806.Docm.ddd.mfqqpa.cn/44682.Docm.ddd.mfqqpa.cn/24024.Docm.ddd.mfqqpa.cn/99553.Docm.ddd.mfqqpa.cn/66642.Docm.ddd.mfqqpa.cn/19171.Docm.ddd.mfqqpa.cn/40844.Docm.ddd.mfqqpa.cn/95515.Docm.dds.mfqqpa.cn/88260.Docm.dds.mfqqpa.cn/20244.Docm.dds.mfqqpa.cn/75711.Docm.dds.mfqqpa.cn/42480.Docm.dds.mfqqpa.cn/17395.Docm.dds.mfqqpa.cn/04220.Docm.dds.mfqqpa.cn/44422.Docm.dds.mfqqpa.cn/28480.Docm.dds.mfqqpa.cn/40880.Docm.dds.mfqqpa.cn/44862.Docm.dda.mfqqpa.cn/31555.Docm.dda.mfqqpa.cn/88426.Docm.dda.mfqqpa.cn/19999.Docm.dda.mfqqpa.cn/26668.Docm.dda.mfqqpa.cn/99551.Docm.dda.mfqqpa.cn/64240.Docm.dda.mfqqpa.cn/48462.Docm.dda.mfqqpa.cn/51579.Docm.dda.mfqqpa.cn/99377.Docm.dda.mfqqpa.cn/75139.Docm.ddp.mfqqpa.cn/13759.Docm.ddp.mfqqpa.cn/33359.Docm.ddp.mfqqpa.cn/06066.Docm.ddp.mfqqpa.cn/97337.Docm.ddp.mfqqpa.cn/68228.Docm.ddp.mfqqpa.cn/02480.Docm.ddp.mfqqpa.cn/28442.Docm.ddp.mfqqpa.cn/15117.Docm.ddp.mfqqpa.cn/33913.Docm.ddp.mfqqpa.cn/88686.Docm.ddo.mfqqpa.cn/71151.Docm.ddo.mfqqpa.cn/22044.Docm.ddo.mfqqpa.cn/48646.Docm.ddo.mfqqpa.cn/88204.Docm.ddo.mfqqpa.cn/40262.Docm.ddo.mfqqpa.cn/13551.Docm.ddo.mfqqpa.cn/77319.Docm.ddo.mfqqpa.cn/13739.Docm.ddo.mfqqpa.cn/02664.Docm.ddo.mfqqpa.cn/77375.Docm.ddi.mfqqpa.cn/79137.Docm.ddi.mfqqpa.cn/20246.Docm.ddi.mfqqpa.cn/04806.Docm.ddi.mfqqpa.cn/02488.Docm.ddi.mfqqpa.cn/17731.Docm.ddi.mfqqpa.cn/51797.Docm.ddi.mfqqpa.cn/19977.Docm.ddi.mfqqpa.cn/59371.Docm.ddi.mfqqpa.cn/59519.Docm.ddi.mfqqpa.cn/40208.Docm.ddu.mfqqpa.cn/88600.Docm.ddu.mfqqpa.cn/46660.Docm.ddu.mfqqpa.cn/26644.Docm.ddu.mfqqpa.cn/40802.Docm.ddu.mfqqpa.cn/64622.Docm.ddu.mfqqpa.cn/04682.Docm.ddu.mfqqpa.cn/31971.Docm.ddu.mfqqpa.cn/24022.Docm.ddu.mfqqpa.cn/86844.Docm.ddu.mfqqpa.cn/86684.Docm.ddy.mfqqpa.cn/53955.Docm.ddy.mfqqpa.cn/99359.Docm.ddy.mfqqpa.cn/59519.Docm.ddy.mfqqpa.cn/39979.Docm.ddy.mfqqpa.cn/39555.Docm.ddy.mfqqpa.cn/19759.Docm.ddy.mfqqpa.cn/95193.Docm.ddy.mfqqpa.cn/19995.Docm.ddy.mfqqpa.cn/73337.Docm.ddy.mfqqpa.cn/93977.Docm.ddt.mfqqpa.cn/51391.Docm.ddt.mfqqpa.cn/17537.Docm.ddt.mfqqpa.cn/55351.Docm.ddt.mfqqpa.cn/99931.Docm.ddt.mfqqpa.cn/71739.Docm.ddt.mfqqpa.cn/53319.Docm.ddt.mfqqpa.cn/95799.Docm.ddt.mfqqpa.cn/99577.Docm.ddt.mfqqpa.cn/91935.Docm.ddt.mfqqpa.cn/95993.Docm.ddr.mfqqpa.cn/79791.Docm.ddr.mfqqpa.cn/11573.Docm.ddr.mfqqpa.cn/51575.Docm.ddr.mfqqpa.cn/53311.Docm.ddr.mfqqpa.cn/93359.Docm.ddr.mfqqpa.cn/53999.Docm.ddr.mfqqpa.cn/33555.Docm.ddr.mfqqpa.cn/55351.Docm.ddr.mfqqpa.cn/93979.Docm.ddr.mfqqpa.cn/95991.Docm.dde.mfqqpa.cn/91331.Docm.dde.mfqqpa.cn/77591.Docm.dde.mfqqpa.cn/55531.Docm.dde.mfqqpa.cn/17795.Docm.dde.mfqqpa.cn/37117.Docm.dde.mfqqpa.cn/77917.Docm.dde.mfqqpa.cn/73911.Docm.dde.mfqqpa.cn/97371.Docm.dde.mfqqpa.cn/75997.Docm.dde.mfqqpa.cn/39717.Docm.ddw.mfqqpa.cn/99995.Docm.ddw.mfqqpa.cn/75357.Docm.ddw.mfqqpa.cn/13515.Docm.ddw.mfqqpa.cn/75111.Docm.ddw.mfqqpa.cn/51173.Docm.ddw.mfqqpa.cn/31757.Docm.ddw.mfqqpa.cn/35553.Docm.ddw.mfqqpa.cn/39773.Docm.ddw.mfqqpa.cn/97197.Docm.ddw.mfqqpa.cn/93771.Docm.ddq.mfqqpa.cn/31115.Docm.ddq.mfqqpa.cn/19137.Docm.ddq.mfqqpa.cn/95595.Docm.ddq.mfqqpa.cn/75559.Docm.ddq.mfqqpa.cn/13975.Docm.ddq.mfqqpa.cn/35953.Docm.ddq.mfqqpa.cn/55597.Docm.ddq.mfqqpa.cn/51595.Docm.ddq.mfqqpa.cn/37719.Docm.ddq.mfqqpa.cn/93755.Docm.dsm.mfqqpa.cn/55757.Docm.dsm.mfqqpa.cn/97333.Docm.dsm.mfqqpa.cn/91779.Docm.dsm.mfqqpa.cn/77559.Docm.dsm.mfqqpa.cn/95599.Docm.dsm.mfqqpa.cn/19739.Docm.dsm.mfqqpa.cn/33791.Docm.dsm.mfqqpa.cn/73779.Docm.dsm.mfqqpa.cn/13537.Docm.dsm.mfqqpa.cn/55713.Docm.dsn.mfqqpa.cn/75951.Docm.dsn.mfqqpa.cn/71937.Docm.dsn.mfqqpa.cn/39577.Docm.dsn.mfqqpa.cn/91313.Docm.dsn.mfqqpa.cn/59519.Docm.dsn.mfqqpa.cn/79155.Docm.dsn.mfqqpa.cn/77177.Docm.dsn.mfqqpa.cn/39771.Docm.dsn.mfqqpa.cn/79191.Docm.dsn.mfqqpa.cn/91395.Docm.dsb.mfqqpa.cn/55953.Docm.dsb.mfqqpa.cn/17977.Docm.dsb.mfqqpa.cn/57591.Docm.dsb.mfqqpa.cn/35735.Docm.dsb.mfqqpa.cn/91319.Docm.dsb.mfqqpa.cn/35197.Docm.dsb.mfqqpa.cn/35793.Docm.dsb.mfqqpa.cn/11151.Docm.dsb.mfqqpa.cn/75953.Docm.dsb.mfqqpa.cn/71131.Doc
Linux preempt_count抢占计数与PREEMPT_NONE模式
发布时间:2026/6/14 3:57:06
Linux preempt_count抢占计数与PREEMPT_NONE模式preempt_count是task_struct中thread_info的一个32位字段在CONFIG_PREEMPT_COUNTy时编译。该字段被划分为四个子域preemption disable count低8位、softirq count8-15位、hardirq count16-23位、NMI count24-31位。在内核抢占模型中只要preempt_count不为零或没有设置TIF_NEED_RESCHEDschedule()不会在该点发生。c/* include/linux/preempt.h */#define PREEMPT_DISABLE_OFFSET 1UL#define SOFTIRQ_DISABLE_OFFSET (1UL 8)#define HARDIRQ_DISABLE_OFFSET (1UL 16)#define NMI_OFFSET (1UL 24)struct thread_info {unsigned long flags;u32 status;int preempt_count; /* 仅在CONFIG_PREEMPT_COUNTy时有效 */};static __always_inline int preempt_count(void){return READ_ONCE(current_thread_info()-preempt_count);}static __always_inline void preempt_disable(void){current_thread_info()-preempt_count;barrier();}static __always_inline void preempt_enable(void){barrier();if (unlikely(preempt_count_dec_and_test())) {__preempt_schedule();}}PREEMPT_NONE模式是Linux内核默认的抢占模型此时CONFIG_PREEMPT_NONEy且CONFIG_PREEMPT_COUNTn或为y但preempt_enable不触发resched。该模式下内核态代码完全不允许抢占——即preempt_disable/preempt_enable在编译时退化为空操作preempt_count字段只保留在thread_info中供lockdep使用。用户态抢占不受影响return_to_user时检查TIF_NEED_RESCHED仍然生效。c#ifdef CONFIG_PREEMPT_NONE#define preempt_disable_notrace() barrier()#define preempt_enable_notrace() barrier()#define preempt_check_resched() do { } while (0)#endif#ifdef CONFIG_PREEMPT_VOLUNTARY#define preempt_enable_notrace() do { \barrier(); \if (unlikely(test_thread_flag(TIF_NEED_RESCHED))) \__cond_resched(); \} while (0)#endif#ifdef CONFIG_PREEMPT#define preempt_enable_notrace() do { \barrier(); \if (unlikely(preempt_count_dec_and_test())) \__preempt_schedule(); \} while (0)#endifPREEMPT_NONE模式下内核态阻塞的唯一路径是cond_resched()显式调用的检查点。cond_resched()会检查preempt_count是否为0且TIF_NEED_RESCHED被设置然后调用__schedule()。内核代码中散布了数百个cond_resched()调用点主要分布在长循环、文件系统遍历、内存压缩等路径中。如果某个耗时操作缺少cond_resched()在PREEMPT_NONE上会导致调度延迟无限增大——典型的case是zswap的压缩循环和direct reclaim的pagewalk。cint __sched cond_resched(void){if (should_resched(0)) {preempt_schedule_common();return 1;}return 0;}static inline bool should_resched(int preempt_offset){return unlikely(preempt_count() preempt_offset test_thread_flag(TIF_NEED_RESCHED));}preempt_count的原子更新通过arch-specific的set_preempt_need_resched和clear_preempt_need_resched实现。x86_64使用的add_smp和sub_smp指令保证preempt_count增减的可见性。但softirq路径中对preempt_count的操作是问题高发区local_bh_disable()在增加SOFTIRQ_DISABLE_OFFSET的同时还增加了PREEMPT_DISABLE_OFFSET导致在softirq期间不仅禁止bottom half也被禁止了内核抢占。__local_bh_enable_ip()中的preempt_count子域递减必须按精确顺序进行以避免中间态被NMI中断观测到异常值。cstatic __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt){preempt_count_add(cnt SOFTIRQ_DISABLE_OFFSET);barrier();}void __local_bh_enable_ip(unsigned long ip, unsigned int cnt){WARN_ON_ONCE(in_irq());/* 锁破坏检测检查是否有spinlock仍然在softirq上下文中持有 */lockdep_assert_irqs_enabled();preempt_count_sub(cnt SOFTIRQ_DISABLE_OFFSET);barrier();if (unlikely(!in_interrupt() local_softirq_pending()))do_softirq();}硬中断入口irq_enter()递增hardirq countHARDIRQ_OFFSET同时隐含地禁用了内核抢占——preempt_count非零导致任何preempt_enable都不会触发调度。irq_exit()递减HARDIRQ_OFFSET后检查是否有pending softirq需要处理。但这里有一个延迟敏感场景irq_exit到preempt_enable之间的window中若softirq触发了wakeup不会立即导致调度——因为preempt_count尚未降到零。NMI的处理类似但更严格nmi_enter()在preempt_count上增加NMI_OFFSET且NMI_OFFSET是32位字段的最高8位与HARDIRQ_OFFSET不重叠。这样嵌套的NMI可以安全地递增而不干扰硬中断计数。但bug在于nmi_nesting_depth超过255时NMI_OFFSET会溢出到HARDIRQ位——极端罕见但已在trace_nmi_enter中通过per-cpu的__nmi_count做冗余检查。preempt_count在schedule()内的行为也值得一提。__schedule()入口调用preempt_disable_notrace()这确保了schedule()过程中不会被更高优先级的任务抢占。这防止了调度器递归进入自身。而schedule()退出时通过finish_task_switch()检查need_resched()如果新的当前任务也有TIF_NEED_RESCHED标志则立即重新调用__schedule()而不返回。cstatic void __sched notrace __schedule(unsigned int sched_mode){struct task_struct *prev, *next;struct rq *rq;int cpu;/* preempt_disable防止调度递归 */cpu smp_processor_id();rq cpu_rq(cpu);prev rq-curr;if (sched_mode SM_MASK_PREEMPT) {/* 抢占调度——处理PREEMPT_ACTIVE标志 */schedule_debug(prev);}rcu_note_context_switch(preempt);/* 实际的context switch */next pick_next_task(rq, prev, rf);clear_tsk_need_resched(prev);clear_preempt_need_resched();if (likely(prev ! next)) {rq-curr next;context_switch(rq, prev, next, rf);} else {raw_spin_unlock_irq(rq-lock);}}PREEMPT_NONE模型下的一个非直观行为preempt_disable()即使被编译为barrier()仍然需要处理lockdep的跟踪。lockdep在每次spin_lock时检查当前preempt_count是否包含hardirq或softirq位如果不匹配就报inconsistent lock state。因此即使PREEMPT_NONE不产生实际抢占效果preempt_count的thread_info字段仍需维护。m.dgb.mfqqpa.cn/55995.Docm.dgb.mfqqpa.cn/35353.Docm.dgb.mfqqpa.cn/93555.Docm.dgb.mfqqpa.cn/39575.Docm.dgb.mfqqpa.cn/19397.Docm.dgb.mfqqpa.cn/15957.Docm.dgb.mfqqpa.cn/97395.Docm.dgb.mfqqpa.cn/19531.Docm.dgb.mfqqpa.cn/79731.Docm.dgb.mfqqpa.cn/31313.Docm.dgv.mfqqpa.cn/17915.Docm.dgv.mfqqpa.cn/71991.Docm.dgv.mfqqpa.cn/11535.Docm.dgv.mfqqpa.cn/77939.Docm.dgv.mfqqpa.cn/97355.Docm.dgv.mfqqpa.cn/97751.Docm.dgv.mfqqpa.cn/71997.Docm.dgv.mfqqpa.cn/57577.Docm.dgv.mfqqpa.cn/55111.Docm.dgv.mfqqpa.cn/57791.Docm.dgc.mfqqpa.cn/91557.Docm.dgc.mfqqpa.cn/33713.Docm.dgc.mfqqpa.cn/99339.Docm.dgc.mfqqpa.cn/31731.Docm.dgc.mfqqpa.cn/75919.Docm.dgc.mfqqpa.cn/73991.Docm.dgc.mfqqpa.cn/91799.Docm.dgc.mfqqpa.cn/31537.Docm.dgc.mfqqpa.cn/17355.Docm.dgc.mfqqpa.cn/31535.Docm.dgx.mfqqpa.cn/53997.Docm.dgx.mfqqpa.cn/13179.Docm.dgx.mfqqpa.cn/55991.Docm.dgx.mfqqpa.cn/37775.Docm.dgx.mfqqpa.cn/51155.Docm.dgx.mfqqpa.cn/37955.Docm.dgx.mfqqpa.cn/33519.Docm.dgx.mfqqpa.cn/77557.Docm.dgx.mfqqpa.cn/15773.Docm.dgx.mfqqpa.cn/17793.Docm.dgz.mfqqpa.cn/55977.Docm.dgz.mfqqpa.cn/31595.Docm.dgz.mfqqpa.cn/91195.Docm.dgz.mfqqpa.cn/75799.Docm.dgz.mfqqpa.cn/37531.Docm.dgz.mfqqpa.cn/35513.Docm.dgz.mfqqpa.cn/19395.Docm.dgz.mfqqpa.cn/99597.Docm.dgz.mfqqpa.cn/79311.Docm.dgz.mfqqpa.cn/95957.Docm.dgl.mfqqpa.cn/31115.Docm.dgl.mfqqpa.cn/31511.Docm.dgl.mfqqpa.cn/53193.Docm.dgl.mfqqpa.cn/53959.Docm.dgl.mfqqpa.cn/15373.Docm.dgl.mfqqpa.cn/39715.Docm.dgl.mfqqpa.cn/55555.Docm.dgl.mfqqpa.cn/31317.Docm.dgl.mfqqpa.cn/17799.Docm.dgl.mfqqpa.cn/53917.Docm.dgk.mfqqpa.cn/79519.Docm.dgk.mfqqpa.cn/77517.Docm.dgk.mfqqpa.cn/35151.Docm.dgk.mfqqpa.cn/13355.Docm.dgk.mfqqpa.cn/17353.Docm.dgk.mfqqpa.cn/17777.Docm.dgk.mfqqpa.cn/95395.Docm.dgk.mfqqpa.cn/39535.Docm.dgk.mfqqpa.cn/73551.Docm.dgk.mfqqpa.cn/15717.Docm.dgj.mfqqpa.cn/17935.Docm.dgj.mfqqpa.cn/39713.Docm.dgj.mfqqpa.cn/35731.Docm.dgj.mfqqpa.cn/73191.Docm.dgj.mfqqpa.cn/39159.Docm.dgj.mfqqpa.cn/71395.Docm.dgj.mfqqpa.cn/39597.Docm.dgj.mfqqpa.cn/51357.Docm.dgj.mfqqpa.cn/35757.Docm.dgj.mfqqpa.cn/73513.Docm.dgh.mfqqpa.cn/53957.Docm.dgh.mfqqpa.cn/11911.Docm.dgh.mfqqpa.cn/11311.Docm.dgh.mfqqpa.cn/33375.Docm.dgh.mfqqpa.cn/59931.Docm.dgh.mfqqpa.cn/31795.Docm.dgh.mfqqpa.cn/97795.Docm.dgh.mfqqpa.cn/35933.Docm.dgh.mfqqpa.cn/99773.Docm.dgh.mfqqpa.cn/51991.Docm.dgg.mfqqpa.cn/59319.Docm.dgg.mfqqpa.cn/11333.Docm.dgg.mfqqpa.cn/77793.Docm.dgg.mfqqpa.cn/99519.Docm.dgg.mfqqpa.cn/99711.Docm.dgg.mfqqpa.cn/53773.Docm.dgg.mfqqpa.cn/57139.Docm.dgg.mfqqpa.cn/93557.Docm.dgg.mfqqpa.cn/95313.Docm.dgg.mfqqpa.cn/53597.Docm.dgf.mfqqpa.cn/57799.Docm.dgf.mfqqpa.cn/51537.Docm.dgf.mfqqpa.cn/55977.Docm.dgf.mfqqpa.cn/57551.Docm.dgf.mfqqpa.cn/17139.Docm.dgf.mfqqpa.cn/39117.Docm.dgf.mfqqpa.cn/59317.Docm.dgf.mfqqpa.cn/93339.Docm.dgf.mfqqpa.cn/95757.Docm.dgf.mfqqpa.cn/33335.Docm.dgd.mfqqpa.cn/53733.Docm.dgd.mfqqpa.cn/51117.Docm.dgd.mfqqpa.cn/55997.Docm.dgd.mfqqpa.cn/13371.Docm.dgd.mfqqpa.cn/17539.Docm.dgd.mfqqpa.cn/91133.Docm.dgd.mfqqpa.cn/95915.Docm.dgd.mfqqpa.cn/35971.Docm.dgd.mfqqpa.cn/91559.Docm.dgd.mfqqpa.cn/17179.Docm.dgs.mfqqpa.cn/95119.Docm.dgs.mfqqpa.cn/97153.Docm.dgs.mfqqpa.cn/91577.Docm.dgs.mfqqpa.cn/13111.Docm.dgs.mfqqpa.cn/37197.Docm.dgs.mfqqpa.cn/79371.Docm.dgs.mfqqpa.cn/11759.Docm.dgs.mfqqpa.cn/59159.Docm.dgs.mfqqpa.cn/73393.Docm.dgs.mfqqpa.cn/91193.Docm.dga.mfqqpa.cn/71513.Docm.dga.mfqqpa.cn/33733.Docm.dga.mfqqpa.cn/73377.Docm.dga.mfqqpa.cn/71751.Docm.dga.mfqqpa.cn/53571.Docm.dga.mfqqpa.cn/33799.Docm.dga.mfqqpa.cn/11559.Docm.dga.mfqqpa.cn/59597.Docm.dga.mfqqpa.cn/19975.Docm.dga.mfqqpa.cn/71753.Docm.dgp.mfqqpa.cn/75171.Docm.dgp.mfqqpa.cn/79793.Docm.dgp.mfqqpa.cn/39113.Docm.dgp.mfqqpa.cn/31771.Docm.dgp.mfqqpa.cn/93173.Docm.dgp.mfqqpa.cn/59975.Docm.dgp.mfqqpa.cn/79795.Docm.dgp.mfqqpa.cn/71571.Docm.dgp.mfqqpa.cn/55191.Docm.dgp.mfqqpa.cn/51713.Docm.dgo.mfqqpa.cn/93771.Docm.dgo.mfqqpa.cn/95793.Docm.dgo.mfqqpa.cn/53595.Docm.dgo.mfqqpa.cn/35593.Docm.dgo.mfqqpa.cn/59535.Docm.dgo.mfqqpa.cn/13177.Docm.dgo.mfqqpa.cn/75951.Docm.dgo.mfqqpa.cn/31937.Docm.dgo.mfqqpa.cn/77773.Docm.dgo.mfqqpa.cn/19777.Docm.dgi.mfqqpa.cn/97119.Docm.dgi.mfqqpa.cn/99511.Docm.dgi.mfqqpa.cn/33375.Docm.dgi.mfqqpa.cn/37915.Docm.dgi.mfqqpa.cn/33993.Docm.dgi.mfqqpa.cn/93597.Docm.dgi.mfqqpa.cn/17917.Docm.dgi.mfqqpa.cn/17373.Docm.dgi.mfqqpa.cn/39519.Docm.dgi.mfqqpa.cn/31913.Docm.dgu.mfqqpa.cn/15339.Docm.dgu.mfqqpa.cn/19137.Docm.dgu.mfqqpa.cn/55355.Docm.dgu.mfqqpa.cn/75395.Docm.dgu.mfqqpa.cn/19933.Docm.dgu.mfqqpa.cn/71537.Docm.dgu.mfqqpa.cn/53971.Docm.dgu.mfqqpa.cn/19593.Docm.dgu.mfqqpa.cn/95597.Docm.dgu.mfqqpa.cn/91791.Docm.dgy.mfqqpa.cn/79711.Docm.dgy.mfqqpa.cn/17535.Docm.dgy.mfqqpa.cn/51517.Docm.dgy.mfqqpa.cn/93991.Docm.dgy.mfqqpa.cn/95355.Docm.dgy.mfqqpa.cn/57395.Docm.dgy.mfqqpa.cn/59399.Docm.dgy.mfqqpa.cn/55733.Docm.dgy.mfqqpa.cn/35397.Docm.dgy.mfqqpa.cn/53195.Docm.dgt.mfqqpa.cn/39715.Docm.dgt.mfqqpa.cn/11939.Docm.dgt.mfqqpa.cn/35599.Docm.dgt.mfqqpa.cn/53317.Docm.dgt.mfqqpa.cn/33395.Docm.dgt.mfqqpa.cn/59331.Docm.dgt.mfqqpa.cn/39517.Docm.dgt.mfqqpa.cn/57317.Docm.dgt.mfqqpa.cn/77951.Docm.dgt.mfqqpa.cn/37711.Docm.dgr.mfqqpa.cn/75173.Docm.dgr.mfqqpa.cn/15993.Docm.dgr.mfqqpa.cn/99931.Docm.dgr.mfqqpa.cn/11311.Docm.dgr.mfqqpa.cn/57133.Docm.dgr.mfqqpa.cn/73195.Docm.dgr.mfqqpa.cn/71359.Docm.dgr.mfqqpa.cn/93375.Docm.dgr.mfqqpa.cn/11333.Docm.dgr.mfqqpa.cn/59511.Docm.dge.mfqqpa.cn/75177.Docm.dge.mfqqpa.cn/13737.Docm.dge.mfqqpa.cn/97739.Docm.dge.mfqqpa.cn/55719.Docm.dge.mfqqpa.cn/17775.Docm.dge.mfqqpa.cn/17335.Docm.dge.mfqqpa.cn/71735.Docm.dge.mfqqpa.cn/91971.Docm.dge.mfqqpa.cn/59513.Docm.dge.mfqqpa.cn/13399.Docm.dgw.mfqqpa.cn/17315.Docm.dgw.mfqqpa.cn/31157.Docm.dgw.mfqqpa.cn/51519.Docm.dgw.mfqqpa.cn/15991.Docm.dgw.mfqqpa.cn/19955.Docm.dgw.mfqqpa.cn/39117.Docm.dgw.mfqqpa.cn/39171.Docm.dgw.mfqqpa.cn/99197.Docm.dgw.mfqqpa.cn/97137.Docm.dgw.mfqqpa.cn/93157.Docm.dgq.mfqqpa.cn/77799.Docm.dgq.mfqqpa.cn/11333.Docm.dgq.mfqqpa.cn/37715.Docm.dgq.mfqqpa.cn/13139.Docm.dgq.mfqqpa.cn/59397.Docm.dgq.mfqqpa.cn/19559.Docm.dgq.mfqqpa.cn/59793.Docm.dgq.mfqqpa.cn/73793.Docm.dgq.mfqqpa.cn/93753.Docm.dgq.mfqqpa.cn/55159.Docm.dfm.mfqqpa.cn/59571.Docm.dfm.mfqqpa.cn/11397.Docm.dfm.mfqqpa.cn/79755.Docm.dfm.mfqqpa.cn/91935.Docm.dfm.mfqqpa.cn/57753.Docm.dfm.mfqqpa.cn/99339.Docm.dfm.mfqqpa.cn/73319.Docm.dfm.mfqqpa.cn/11775.Docm.dfm.mfqqpa.cn/95957.Docm.dfm.mfqqpa.cn/13159.Docm.dfn.mfqqpa.cn/95575.Docm.dfn.mfqqpa.cn/97931.Docm.dfn.mfqqpa.cn/59517.Docm.dfn.mfqqpa.cn/31377.Docm.dfn.mfqqpa.cn/55991.Docm.dfn.mfqqpa.cn/95315.Docm.dfn.mfqqpa.cn/53357.Docm.dfn.mfqqpa.cn/91995.Docm.dfn.mfqqpa.cn/51375.Docm.dfn.mfqqpa.cn/95337.Docm.dfb.mfqqpa.cn/39551.Docm.dfb.mfqqpa.cn/19359.Docm.dfb.mfqqpa.cn/33713.Docm.dfb.mfqqpa.cn/53919.Docm.dfb.mfqqpa.cn/39371.Docm.dfb.mfqqpa.cn/35771.Docm.dfb.mfqqpa.cn/73591.Docm.dfb.mfqqpa.cn/55335.Docm.dfb.mfqqpa.cn/15337.Docm.dfb.mfqqpa.cn/55791.Docm.dfv.mfqqpa.cn/53993.Docm.dfv.mfqqpa.cn/91999.Docm.dfv.mfqqpa.cn/99179.Docm.dfv.mfqqpa.cn/51715.Docm.dfv.mfqqpa.cn/97535.Docm.dfv.mfqqpa.cn/57375.Docm.dfv.mfqqpa.cn/19979.Docm.dfv.mfqqpa.cn/95939.Docm.dfv.mfqqpa.cn/11399.Docm.dfv.mfqqpa.cn/55599.Docm.dfc.mfqqpa.cn/11953.Docm.dfc.mfqqpa.cn/91593.Docm.dfc.mfqqpa.cn/55115.Docm.dfc.mfqqpa.cn/13311.Docm.dfc.mfqqpa.cn/11153.Docm.dfc.mfqqpa.cn/95993.Docm.dfc.mfqqpa.cn/99537.Docm.dfc.mfqqpa.cn/55515.Docm.dfc.mfqqpa.cn/75597.Docm.dfc.mfqqpa.cn/57137.Docm.dfx.mfqqpa.cn/33593.Docm.dfx.mfqqpa.cn/51793.Docm.dfx.mfqqpa.cn/99991.Docm.dfx.mfqqpa.cn/39517.Docm.dfx.mfqqpa.cn/73919.Docm.dfx.mfqqpa.cn/39593.Docm.dfx.mfqqpa.cn/77937.Docm.dfx.mfqqpa.cn/59551.Docm.dfx.mfqqpa.cn/37315.Docm.dfx.mfqqpa.cn/19395.Docm.dfz.mfqqpa.cn/13331.Docm.dfz.mfqqpa.cn/71953.Docm.dfz.mfqqpa.cn/51393.Docm.dfz.mfqqpa.cn/79757.Docm.dfz.mfqqpa.cn/53997.Docm.dfz.mfqqpa.cn/91573.Docm.dfz.mfqqpa.cn/73773.Docm.dfz.mfqqpa.cn/39959.Docm.dfz.mfqqpa.cn/33351.Docm.dfz.mfqqpa.cn/31353.Docm.dfl.mfqqpa.cn/75333.Docm.dfl.mfqqpa.cn/77379.Docm.dfl.mfqqpa.cn/35177.Docm.dfl.mfqqpa.cn/17311.Docm.dfl.mfqqpa.cn/17791.Docm.dfl.mfqqpa.cn/51939.Docm.dfl.mfqqpa.cn/75553.Docm.dfl.mfqqpa.cn/35131.Docm.dfl.mfqqpa.cn/11995.Docm.dfl.mfqqpa.cn/97997.Docm.dfk.mfqqpa.cn/59777.Docm.dfk.mfqqpa.cn/75119.Docm.dfk.mfqqpa.cn/73137.Docm.dfk.mfqqpa.cn/35959.Docm.dfk.mfqqpa.cn/73999.Docm.dfk.mfqqpa.cn/37591.Docm.dfk.mfqqpa.cn/13159.Docm.dfk.mfqqpa.cn/71153.Docm.dfk.mfqqpa.cn/59719.Docm.dfk.mfqqpa.cn/37715.Docm.dfj.mfqqpa.cn/91593.Docm.dfj.mfqqpa.cn/95113.Docm.dfj.mfqqpa.cn/11337.Docm.dfj.mfqqpa.cn/91395.Docm.dfj.mfqqpa.cn/33533.Docm.dfj.mfqqpa.cn/79799.Docm.dfj.mfqqpa.cn/53777.Docm.dfj.mfqqpa.cn/31591.Docm.dfj.mfqqpa.cn/91577.Docm.dfj.mfqqpa.cn/35195.Docm.dfh.mfqqpa.cn/95717.Docm.dfh.mfqqpa.cn/79733.Docm.dfh.mfqqpa.cn/33935.Docm.dfh.mfqqpa.cn/79779.Docm.dfh.mfqqpa.cn/79995.Docm.dfh.mfqqpa.cn/17375.Docm.dfh.mfqqpa.cn/73393.Docm.dfh.mfqqpa.cn/79311.Docm.dfh.mfqqpa.cn/77775.Docm.dfh.mfqqpa.cn/77975.Docm.dfg.mfqqpa.cn/35335.Docm.dfg.mfqqpa.cn/31793.Docm.dfg.mfqqpa.cn/17537.Docm.dfg.mfqqpa.cn/13117.Docm.dfg.mfqqpa.cn/95591.Docm.dfg.mfqqpa.cn/99799.Docm.dfg.mfqqpa.cn/73313.Docm.dfg.mfqqpa.cn/59153.Docm.dfg.mfqqpa.cn/11157.Docm.dfg.mfqqpa.cn/93715.Docm.dff.mfqqpa.cn/15591.Docm.dff.mfqqpa.cn/77119.Docm.dff.mfqqpa.cn/51997.Docm.dff.mfqqpa.cn/79991.Docm.dff.mfqqpa.cn/99959.Docm.dff.mfqqpa.cn/59715.Docm.dff.mfqqpa.cn/37335.Docm.dff.mfqqpa.cn/13199.Docm.dff.mfqqpa.cn/71313.Docm.dff.mfqqpa.cn/59557.Docm.dfd.mfqqpa.cn/57115.Docm.dfd.mfqqpa.cn/37575.Docm.dfd.mfqqpa.cn/55759.Docm.dfd.mfqqpa.cn/55391.Docm.dfd.mfqqpa.cn/93153.Docm.dfd.mfqqpa.cn/39359.Docm.dfd.mfqqpa.cn/73791.Docm.dfd.mfqqpa.cn/91713.Docm.dfd.mfqqpa.cn/51595.Docm.dfd.mfqqpa.cn/35519.Docm.dfs.mfqqpa.cn/55311.Docm.dfs.mfqqpa.cn/71315.Docm.dfs.mfqqpa.cn/11715.Docm.dfs.mfqqpa.cn/37515.Docm.dfs.mfqqpa.cn/51555.Docm.dfs.mfqqpa.cn/39319.Docm.dfs.mfqqpa.cn/77171.Docm.dfs.mfqqpa.cn/53531.Docm.dfs.mfqqpa.cn/57117.Docm.dfs.mfqqpa.cn/53571.Docm.dfa.mfqqpa.cn/13119.Docm.dfa.mfqqpa.cn/55935.Docm.dfa.mfqqpa.cn/91757.Docm.dfa.mfqqpa.cn/97575.Docm.dfa.mfqqpa.cn/93139.Docm.dfa.mfqqpa.cn/99915.Docm.dfa.mfqqpa.cn/75971.Docm.dfa.mfqqpa.cn/37959.Docm.dfa.mfqqpa.cn/91933.Docm.dfa.mfqqpa.cn/55393.Docm.dfp.mfqqpa.cn/13359.Docm.dfp.mfqqpa.cn/97311.Docm.dfp.mfqqpa.cn/17915.Docm.dfp.mfqqpa.cn/51975.Docm.dfp.mfqqpa.cn/91399.Docm.dfp.mfqqpa.cn/53375.Docm.dfp.mfqqpa.cn/71195.Docm.dfp.mfqqpa.cn/59177.Docm.dfp.mfqqpa.cn/17337.Docm.dfp.mfqqpa.cn/91959.Docm.dfo.mfqqpa.cn/55935.Docm.dfo.mfqqpa.cn/15793.Docm.dfo.mfqqpa.cn/33973.Docm.dfo.mfqqpa.cn/13197.Docm.dfo.mfqqpa.cn/57593.Docm.dfo.mfqqpa.cn/79519.Docm.dfo.mfqqpa.cn/37117.Docm.dfo.mfqqpa.cn/11139.Docm.dfo.mfqqpa.cn/39557.Docm.dfo.mfqqpa.cn/11155.Docm.dfi.mfqqpa.cn/97575.Docm.dfi.mfqqpa.cn/37793.Docm.dfi.mfqqpa.cn/77713.Docm.dfi.mfqqpa.cn/79711.Docm.dfi.mfqqpa.cn/91719.Docm.dfi.mfqqpa.cn/31737.Docm.dfi.mfqqpa.cn/95131.Docm.dfi.mfqqpa.cn/59573.Docm.dfi.mfqqpa.cn/73737.Docm.dfi.mfqqpa.cn/93931.Docm.dfu.mfqqpa.cn/93555.Docm.dfu.mfqqpa.cn/33135.Docm.dfu.mfqqpa.cn/95999.Docm.dfu.mfqqpa.cn/15959.Docm.dfu.mfqqpa.cn/91191.Docm.dfu.mfqqpa.cn/59713.Docm.dfu.mfqqpa.cn/93953.Docm.dfu.mfqqpa.cn/95199.Docm.dfu.mfqqpa.cn/19317.Docm.dfu.mfqqpa.cn/31159.Docm.dfy.mfqqpa.cn/97313.Docm.dfy.mfqqpa.cn/71779.Docm.dfy.mfqqpa.cn/71711.Docm.dfy.mfqqpa.cn/55159.Docm.dfy.mfqqpa.cn/99195.Docm.dfy.mfqqpa.cn/15955.Docm.dfy.mfqqpa.cn/39579.Docm.dfy.mfqqpa.cn/55719.Docm.dfy.mfqqpa.cn/91935.Docm.dfy.mfqqpa.cn/33517.Docm.dft.mfqqpa.cn/55395.Docm.dft.mfqqpa.cn/97973.Docm.dft.mfqqpa.cn/97555.Docm.dft.mfqqpa.cn/11359.Docm.dft.mfqqpa.cn/75339.Docm.dft.mfqqpa.cn/55315.Docm.dft.mfqqpa.cn/57337.Docm.dft.mfqqpa.cn/37737.Docm.dft.mfqqpa.cn/13595.Docm.dft.mfqqpa.cn/59577.Docm.dfr.mfqqpa.cn/17939.Docm.dfr.mfqqpa.cn/97935.Docm.dfr.mfqqpa.cn/59371.Docm.dfr.mfqqpa.cn/15317.Docm.dfr.mfqqpa.cn/51511.Docm.dfr.mfqqpa.cn/93931.Docm.dfr.mfqqpa.cn/15373.Docm.dfr.mfqqpa.cn/51337.Docm.dfr.mfqqpa.cn/37939.Docm.dfr.mfqqpa.cn/71931.Docm.dfe.mfqqpa.cn/17951.Docm.dfe.mfqqpa.cn/51177.Docm.dfe.mfqqpa.cn/75775.Docm.dfe.mfqqpa.cn/31151.Docm.dfe.mfqqpa.cn/15177.Docm.dfe.mfqqpa.cn/31579.Docm.dfe.mfqqpa.cn/53353.Docm.dfe.mfqqpa.cn/75553.Docm.dfe.mfqqpa.cn/39337.Docm.dfe.mfqqpa.cn/97337.Docm.dfw.mfqqpa.cn/95399.Docm.dfw.mfqqpa.cn/31959.Docm.dfw.mfqqpa.cn/95719.Docm.dfw.mfqqpa.cn/51519.Docm.dfw.mfqqpa.cn/13975.Docm.dfw.mfqqpa.cn/51595.Docm.dfw.mfqqpa.cn/93935.Docm.dfw.mfqqpa.cn/19997.Docm.dfw.mfqqpa.cn/33379.Docm.dfw.mfqqpa.cn/95137.Docm.dfq.mfqqpa.cn/79153.Docm.dfq.mfqqpa.cn/75973.Docm.dfq.mfqqpa.cn/51371.Docm.dfq.mfqqpa.cn/11533.Docm.dfq.mfqqpa.cn/73371.Docm.dfq.mfqqpa.cn/39773.Docm.dfq.mfqqpa.cn/79155.Docm.dfq.mfqqpa.cn/55951.Docm.dfq.mfqqpa.cn/51373.Docm.dfq.mfqqpa.cn/31939.Docm.ddm.mfqqpa.cn/75171.Docm.ddm.mfqqpa.cn/97773.Docm.ddm.mfqqpa.cn/73519.Docm.ddm.mfqqpa.cn/55557.Docm.ddm.mfqqpa.cn/77977.Docm.ddm.mfqqpa.cn/33771.Docm.ddm.mfqqpa.cn/71135.Docm.ddm.mfqqpa.cn/19579.Docm.ddm.mfqqpa.cn/55331.Docm.ddm.mfqqpa.cn/35597.Docm.ddn.mfqqpa.cn/95195.Docm.ddn.mfqqpa.cn/51511.Docm.ddn.mfqqpa.cn/17199.Docm.ddn.mfqqpa.cn/11575.Docm.ddn.mfqqpa.cn/35371.Docm.ddn.mfqqpa.cn/95797.Docm.ddn.mfqqpa.cn/91733.Docm.ddn.mfqqpa.cn/77915.Docm.ddn.mfqqpa.cn/31153.Docm.ddn.mfqqpa.cn/53335.Docm.ddb.mfqqpa.cn/95777.Docm.ddb.mfqqpa.cn/75991.Docm.ddb.mfqqpa.cn/13391.Docm.ddb.mfqqpa.cn/31519.Docm.ddb.mfqqpa.cn/39797.Docm.ddb.mfqqpa.cn/35371.Docm.ddb.mfqqpa.cn/15799.Docm.ddb.mfqqpa.cn/13559.Docm.ddb.mfqqpa.cn/17379.Docm.ddb.mfqqpa.cn/71351.Docm.ddv.mfqqpa.cn/51153.Docm.ddv.mfqqpa.cn/37559.Docm.ddv.mfqqpa.cn/79517.Docm.ddv.mfqqpa.cn/59791.Docm.ddv.mfqqpa.cn/15151.Docm.ddv.mfqqpa.cn/99977.Docm.ddv.mfqqpa.cn/75999.Docm.ddv.mfqqpa.cn/57355.Docm.ddv.mfqqpa.cn/97539.Docm.ddv.mfqqpa.cn/35195.Docm.ddc.mfqqpa.cn/35917.Docm.ddc.mfqqpa.cn/17197.Docm.ddc.mfqqpa.cn/19953.Docm.ddc.mfqqpa.cn/57933.Docm.ddc.mfqqpa.cn/97575.Docm.ddc.mfqqpa.cn/79515.Docm.ddc.mfqqpa.cn/37159.Docm.ddc.mfqqpa.cn/93577.Docm.ddc.mfqqpa.cn/75377.Docm.ddc.mfqqpa.cn/33139.Docm.ddx.mfqqpa.cn/55531.Docm.ddx.mfqqpa.cn/11179.Docm.ddx.mfqqpa.cn/75133.Docm.ddx.mfqqpa.cn/11371.Docm.ddx.mfqqpa.cn/31913.Docm.ddx.mfqqpa.cn/79959.Docm.ddx.mfqqpa.cn/99755.Docm.ddx.mfqqpa.cn/75117.Docm.ddx.mfqqpa.cn/59753.Docm.ddx.mfqqpa.cn/39339.Docm.ddz.mfqqpa.cn/55339.Docm.ddz.mfqqpa.cn/17137.Docm.ddz.mfqqpa.cn/17575.Docm.ddz.mfqqpa.cn/53195.Docm.ddz.mfqqpa.cn/55151.Docm.ddz.mfqqpa.cn/55799.Docm.ddz.mfqqpa.cn/19595.Docm.ddz.mfqqpa.cn/59133.Docm.ddz.mfqqpa.cn/57731.Docm.ddz.mfqqpa.cn/19535.Docm.ddl.mfqqpa.cn/77131.Docm.ddl.mfqqpa.cn/73371.Docm.ddl.mfqqpa.cn/55395.Docm.ddl.mfqqpa.cn/15177.Docm.ddl.mfqqpa.cn/99511.Docm.ddl.mfqqpa.cn/17139.Docm.ddl.mfqqpa.cn/39115.Docm.ddl.mfqqpa.cn/51791.Docm.ddl.mfqqpa.cn/35991.Docm.ddl.mfqqpa.cn/11991.Docm.ddk.mfqqpa.cn/79735.Docm.ddk.mfqqpa.cn/57977.Docm.ddk.mfqqpa.cn/11357.Docm.ddk.mfqqpa.cn/79137.Docm.ddk.mfqqpa.cn/99973.Docm.ddk.mfqqpa.cn/75959.Docm.ddk.mfqqpa.cn/13151.Docm.ddk.mfqqpa.cn/11319.Docm.ddk.mfqqpa.cn/71991.Docm.ddk.mfqqpa.cn/59557.Docm.ddj.mfqqpa.cn/93135.Docm.ddj.mfqqpa.cn/75319.Docm.ddj.mfqqpa.cn/55197.Docm.ddj.mfqqpa.cn/37955.Docm.ddj.mfqqpa.cn/59795.Docm.ddj.mfqqpa.cn/15131.Docm.ddj.mfqqpa.cn/75751.Docm.ddj.mfqqpa.cn/99577.Docm.ddj.mfqqpa.cn/59379.Docm.ddj.mfqqpa.cn/17997.Docm.ddh.mfqqpa.cn/33931.Docm.ddh.mfqqpa.cn/15199.Docm.ddh.mfqqpa.cn/97711.Docm.ddh.mfqqpa.cn/79939.Docm.ddh.mfqqpa.cn/93515.Docm.ddh.mfqqpa.cn/33957.Docm.ddh.mfqqpa.cn/51315.Docm.ddh.mfqqpa.cn/13777.Docm.ddh.mfqqpa.cn/55957.Docm.ddh.mfqqpa.cn/57939.Docm.ddg.mfqqpa.cn/19113.Docm.ddg.mfqqpa.cn/79571.Docm.ddg.mfqqpa.cn/19359.Docm.ddg.mfqqpa.cn/19953.Docm.ddg.mfqqpa.cn/97977.Docm.ddg.mfqqpa.cn/95335.Docm.ddg.mfqqpa.cn/79377.Docm.ddg.mfqqpa.cn/15159.Docm.ddg.mfqqpa.cn/51599.Docm.ddg.mfqqpa.cn/91713.Docm.ddf.mfqqpa.cn/73133.Docm.ddf.mfqqpa.cn/71391.Docm.ddf.mfqqpa.cn/57177.Docm.ddf.mfqqpa.cn/97777.Docm.ddf.mfqqpa.cn/39951.Docm.ddf.mfqqpa.cn/37133.Docm.ddf.mfqqpa.cn/79391.Docm.ddf.mfqqpa.cn/71199.Docm.ddf.mfqqpa.cn/57519.Docm.ddf.mfqqpa.cn/95559.Docm.ddd.mfqqpa.cn/57513.Docm.ddd.mfqqpa.cn/26804.Docm.ddd.mfqqpa.cn/04806.Docm.ddd.mfqqpa.cn/44682.Docm.ddd.mfqqpa.cn/24024.Docm.ddd.mfqqpa.cn/99553.Docm.ddd.mfqqpa.cn/66642.Docm.ddd.mfqqpa.cn/19171.Docm.ddd.mfqqpa.cn/40844.Docm.ddd.mfqqpa.cn/95515.Docm.dds.mfqqpa.cn/88260.Docm.dds.mfqqpa.cn/20244.Docm.dds.mfqqpa.cn/75711.Docm.dds.mfqqpa.cn/42480.Docm.dds.mfqqpa.cn/17395.Docm.dds.mfqqpa.cn/04220.Docm.dds.mfqqpa.cn/44422.Docm.dds.mfqqpa.cn/28480.Docm.dds.mfqqpa.cn/40880.Docm.dds.mfqqpa.cn/44862.Docm.dda.mfqqpa.cn/31555.Docm.dda.mfqqpa.cn/88426.Docm.dda.mfqqpa.cn/19999.Docm.dda.mfqqpa.cn/26668.Docm.dda.mfqqpa.cn/99551.Docm.dda.mfqqpa.cn/64240.Docm.dda.mfqqpa.cn/48462.Docm.dda.mfqqpa.cn/51579.Docm.dda.mfqqpa.cn/99377.Docm.dda.mfqqpa.cn/75139.Docm.ddp.mfqqpa.cn/13759.Docm.ddp.mfqqpa.cn/33359.Docm.ddp.mfqqpa.cn/06066.Docm.ddp.mfqqpa.cn/97337.Docm.ddp.mfqqpa.cn/68228.Docm.ddp.mfqqpa.cn/02480.Docm.ddp.mfqqpa.cn/28442.Docm.ddp.mfqqpa.cn/15117.Docm.ddp.mfqqpa.cn/33913.Docm.ddp.mfqqpa.cn/88686.Docm.ddo.mfqqpa.cn/71151.Docm.ddo.mfqqpa.cn/22044.Docm.ddo.mfqqpa.cn/48646.Docm.ddo.mfqqpa.cn/88204.Docm.ddo.mfqqpa.cn/40262.Docm.ddo.mfqqpa.cn/13551.Docm.ddo.mfqqpa.cn/77319.Docm.ddo.mfqqpa.cn/13739.Docm.ddo.mfqqpa.cn/02664.Docm.ddo.mfqqpa.cn/77375.Docm.ddi.mfqqpa.cn/79137.Docm.ddi.mfqqpa.cn/20246.Docm.ddi.mfqqpa.cn/04806.Docm.ddi.mfqqpa.cn/02488.Docm.ddi.mfqqpa.cn/17731.Docm.ddi.mfqqpa.cn/51797.Docm.ddi.mfqqpa.cn/19977.Docm.ddi.mfqqpa.cn/59371.Docm.ddi.mfqqpa.cn/59519.Docm.ddi.mfqqpa.cn/40208.Docm.ddu.mfqqpa.cn/88600.Docm.ddu.mfqqpa.cn/46660.Docm.ddu.mfqqpa.cn/26644.Docm.ddu.mfqqpa.cn/40802.Docm.ddu.mfqqpa.cn/64622.Docm.ddu.mfqqpa.cn/04682.Docm.ddu.mfqqpa.cn/31971.Docm.ddu.mfqqpa.cn/24022.Docm.ddu.mfqqpa.cn/86844.Docm.ddu.mfqqpa.cn/86684.Docm.ddy.mfqqpa.cn/53955.Docm.ddy.mfqqpa.cn/99359.Docm.ddy.mfqqpa.cn/59519.Docm.ddy.mfqqpa.cn/39979.Docm.ddy.mfqqpa.cn/39555.Docm.ddy.mfqqpa.cn/19759.Docm.ddy.mfqqpa.cn/95193.Docm.ddy.mfqqpa.cn/19995.Docm.ddy.mfqqpa.cn/73337.Docm.ddy.mfqqpa.cn/93977.Docm.ddt.mfqqpa.cn/51391.Docm.ddt.mfqqpa.cn/17537.Docm.ddt.mfqqpa.cn/55351.Docm.ddt.mfqqpa.cn/99931.Docm.ddt.mfqqpa.cn/71739.Docm.ddt.mfqqpa.cn/53319.Docm.ddt.mfqqpa.cn/95799.Docm.ddt.mfqqpa.cn/99577.Docm.ddt.mfqqpa.cn/91935.Docm.ddt.mfqqpa.cn/95993.Docm.ddr.mfqqpa.cn/79791.Docm.ddr.mfqqpa.cn/11573.Docm.ddr.mfqqpa.cn/51575.Docm.ddr.mfqqpa.cn/53311.Docm.ddr.mfqqpa.cn/93359.Docm.ddr.mfqqpa.cn/53999.Docm.ddr.mfqqpa.cn/33555.Docm.ddr.mfqqpa.cn/55351.Docm.ddr.mfqqpa.cn/93979.Docm.ddr.mfqqpa.cn/95991.Docm.dde.mfqqpa.cn/91331.Docm.dde.mfqqpa.cn/77591.Docm.dde.mfqqpa.cn/55531.Docm.dde.mfqqpa.cn/17795.Docm.dde.mfqqpa.cn/37117.Docm.dde.mfqqpa.cn/77917.Docm.dde.mfqqpa.cn/73911.Docm.dde.mfqqpa.cn/97371.Docm.dde.mfqqpa.cn/75997.Docm.dde.mfqqpa.cn/39717.Docm.ddw.mfqqpa.cn/99995.Docm.ddw.mfqqpa.cn/75357.Docm.ddw.mfqqpa.cn/13515.Docm.ddw.mfqqpa.cn/75111.Docm.ddw.mfqqpa.cn/51173.Docm.ddw.mfqqpa.cn/31757.Docm.ddw.mfqqpa.cn/35553.Docm.ddw.mfqqpa.cn/39773.Docm.ddw.mfqqpa.cn/97197.Docm.ddw.mfqqpa.cn/93771.Docm.ddq.mfqqpa.cn/31115.Docm.ddq.mfqqpa.cn/19137.Docm.ddq.mfqqpa.cn/95595.Docm.ddq.mfqqpa.cn/75559.Docm.ddq.mfqqpa.cn/13975.Docm.ddq.mfqqpa.cn/35953.Docm.ddq.mfqqpa.cn/55597.Docm.ddq.mfqqpa.cn/51595.Docm.ddq.mfqqpa.cn/37719.Docm.ddq.mfqqpa.cn/93755.Docm.dsm.mfqqpa.cn/55757.Docm.dsm.mfqqpa.cn/97333.Docm.dsm.mfqqpa.cn/91779.Docm.dsm.mfqqpa.cn/77559.Docm.dsm.mfqqpa.cn/95599.Docm.dsm.mfqqpa.cn/19739.Docm.dsm.mfqqpa.cn/33791.Docm.dsm.mfqqpa.cn/73779.Docm.dsm.mfqqpa.cn/13537.Docm.dsm.mfqqpa.cn/55713.Docm.dsn.mfqqpa.cn/75951.Docm.dsn.mfqqpa.cn/71937.Docm.dsn.mfqqpa.cn/39577.Docm.dsn.mfqqpa.cn/91313.Docm.dsn.mfqqpa.cn/59519.Docm.dsn.mfqqpa.cn/79155.Docm.dsn.mfqqpa.cn/77177.Docm.dsn.mfqqpa.cn/39771.Docm.dsn.mfqqpa.cn/79191.Docm.dsn.mfqqpa.cn/91395.Docm.dsb.mfqqpa.cn/55953.Docm.dsb.mfqqpa.cn/17977.Docm.dsb.mfqqpa.cn/57591.Docm.dsb.mfqqpa.cn/35735.Docm.dsb.mfqqpa.cn/91319.Docm.dsb.mfqqpa.cn/35197.Docm.dsb.mfqqpa.cn/35793.Docm.dsb.mfqqpa.cn/11151.Docm.dsb.mfqqpa.cn/75953.Docm.dsb.mfqqpa.cn/71131.Doc