Loading kernel/rcutree.c +5 −5 Original line number Diff line number Diff line Loading @@ -290,8 +290,8 @@ static int rcu_implicit_offline_qs(struct rcu_data *rdp) return 1; } /* If preemptable RCU, no point in sending reschedule IPI. */ if (rdp->preemptable) /* If preemptible RCU, no point in sending reschedule IPI. */ if (rdp->preemptible) return 0; /* The CPU is online, so send it a reschedule IPI. */ Loading Loading @@ -1982,7 +1982,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) * or RCU-bh, force a local reschedule. */ rdp->n_rp_qs_pending++; if (!rdp->preemptable && if (!rdp->preemptible && ULONG_CMP_LT(ACCESS_ONCE(rsp->jiffies_force_qs) - 1, jiffies)) set_need_resched(); Loading Loading @@ -2159,7 +2159,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) * that this CPU cannot possibly have any RCU callbacks in flight yet. */ static void __cpuinit rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptable) rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) { unsigned long flags; unsigned long mask; Loading @@ -2171,7 +2171,7 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptable) rdp->passed_quiesc = 0; /* We could be racing with new GP, */ rdp->qs_pending = 1; /* so set up to respond to current GP. */ rdp->beenonline = 1; /* We have now been online. */ rdp->preemptable = preemptable; rdp->preemptible = preemptible; rdp->qlen_last_fqs_check = 0; rdp->n_force_qs_snap = rsp->n_force_qs; rdp->blimit = blimit; Loading kernel/rcutree.h +1 −1 Original line number Diff line number Diff line Loading @@ -239,7 +239,7 @@ struct rcu_data { bool passed_quiesc; /* User-mode/idle loop etc. */ bool qs_pending; /* Core waits for quiesc state. */ bool beenonline; /* CPU online at least once. */ bool preemptable; /* Preemptable RCU? */ bool preemptible; /* Preemptible RCU? */ struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ unsigned long grpmask; /* Mask to apply to leaf qsmask. */ Loading kernel/rcutree_plugin.h +31 −31 Original line number Diff line number Diff line /* * Read-Copy Update mechanism for mutual exclusion (tree-based version) * Internal non-public definitions that provide either classic * or preemptable semantics. * or preemptible semantics. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -75,7 +75,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp); */ static void __init rcu_bootup_announce(void) { printk(KERN_INFO "Preemptable hierarchical RCU implementation.\n"); printk(KERN_INFO "Preemptible hierarchical RCU implementation.\n"); rcu_bootup_announce_oddness(); } Loading Loading @@ -108,7 +108,7 @@ void rcu_force_quiescent_state(void) EXPORT_SYMBOL_GPL(rcu_force_quiescent_state); /* * Record a preemptable-RCU quiescent state for the specified CPU. Note * Record a preemptible-RCU quiescent state for the specified CPU. Note * that this just means that the task currently running on the CPU is * not in a quiescent state. There might be any number of tasks blocked * while in an RCU read-side critical section. Loading Loading @@ -207,7 +207,7 @@ static void rcu_preempt_note_context_switch(int cpu) } /* * Tree-preemptable RCU implementation for rcu_read_lock(). * Tree-preemptible RCU implementation for rcu_read_lock(). * Just increment ->rcu_read_lock_nesting, shared state will be updated * if we block. */ Loading Loading @@ -376,7 +376,7 @@ static void rcu_read_unlock_special(struct task_struct *t) } /* * Tree-preemptable RCU implementation for rcu_read_unlock(). * Tree-preemptible RCU implementation for rcu_read_unlock(). * Decrement ->rcu_read_lock_nesting. If the result is zero (outermost * rcu_read_unlock()) and ->rcu_read_unlock_special is non-zero, then * invoke rcu_read_unlock_special() to clean up after a context switch Loading Loading @@ -565,7 +565,7 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp, } /* * Do CPU-offline processing for preemptable RCU. * Do CPU-offline processing for preemptible RCU. */ static void rcu_preempt_offline_cpu(int cpu) { Loading Loading @@ -594,7 +594,7 @@ static void rcu_preempt_check_callbacks(int cpu) } /* * Process callbacks for preemptable RCU. * Process callbacks for preemptible RCU. */ static void rcu_preempt_process_callbacks(void) { Loading @@ -603,7 +603,7 @@ static void rcu_preempt_process_callbacks(void) } /* * Queue a preemptable-RCU callback for invocation after a grace period. * Queue a preemptible-RCU callback for invocation after a grace period. */ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) { Loading Loading @@ -795,7 +795,7 @@ void synchronize_rcu_expedited(void) EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); /* * Check to see if there is any immediate preemptable-RCU-related work * Check to see if there is any immediate preemptible-RCU-related work * to be done. */ static int rcu_preempt_pending(int cpu) Loading @@ -805,7 +805,7 @@ static int rcu_preempt_pending(int cpu) } /* * Does preemptable RCU need the CPU to stay out of dynticks mode? * Does preemptible RCU need the CPU to stay out of dynticks mode? */ static int rcu_preempt_needs_cpu(int cpu) { Loading @@ -822,7 +822,7 @@ void rcu_barrier(void) EXPORT_SYMBOL_GPL(rcu_barrier); /* * Initialize preemptable RCU's per-CPU data. * Initialize preemptible RCU's per-CPU data. */ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) { Loading @@ -830,7 +830,7 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) } /* * Move preemptable RCU's callbacks from dying CPU to other online CPU. * Move preemptible RCU's callbacks from dying CPU to other online CPU. */ static void rcu_preempt_send_cbs_to_online(void) { Loading @@ -838,7 +838,7 @@ static void rcu_preempt_send_cbs_to_online(void) } /* * Initialize preemptable RCU's state structures. * Initialize preemptible RCU's state structures. */ static void __init __rcu_init_preempt(void) { Loading @@ -846,7 +846,7 @@ static void __init __rcu_init_preempt(void) } /* * Check for a task exiting while in a preemptable-RCU read-side * Check for a task exiting while in a preemptible-RCU read-side * critical section, clean up if so. No need to issue warnings, * as debug_check_no_locks_held() already does this if lockdep * is enabled. Loading Loading @@ -894,7 +894,7 @@ void rcu_force_quiescent_state(void) EXPORT_SYMBOL_GPL(rcu_force_quiescent_state); /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * CPUs being in quiescent states. */ static void rcu_preempt_note_context_switch(int cpu) Loading @@ -902,7 +902,7 @@ static void rcu_preempt_note_context_switch(int cpu) } /* * Because preemptable RCU does not exist, there are never any preempted * Because preemptible RCU does not exist, there are never any preempted * RCU readers. */ static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp) Loading @@ -921,7 +921,7 @@ static void rcu_report_unblock_qs_rnp(struct rcu_node *rnp, unsigned long flags) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * tasks blocked within RCU read-side critical sections. */ static void rcu_print_detail_task_stall(struct rcu_state *rsp) Loading @@ -929,7 +929,7 @@ static void rcu_print_detail_task_stall(struct rcu_state *rsp) } /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * tasks blocked within RCU read-side critical sections. */ static void rcu_print_task_stall(struct rcu_node *rnp) Loading @@ -945,7 +945,7 @@ static void rcu_preempt_stall_reset(void) } /* * Because there is no preemptable RCU, there can be no readers blocked, * Because there is no preemptible RCU, there can be no readers blocked, * so there is no need to check for blocked tasks. So check only for * bogus qsmask values. */ Loading @@ -957,7 +957,7 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp) #ifdef CONFIG_HOTPLUG_CPU /* * Because preemptable RCU does not exist, it never needs to migrate * Because preemptible RCU does not exist, it never needs to migrate * tasks that were blocked within RCU read-side critical sections, and * such non-existent tasks cannot possibly have been blocking the current * grace period. Loading @@ -970,7 +970,7 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp, } /* * Because preemptable RCU does not exist, it never needs CPU-offline * Because preemptible RCU does not exist, it never needs CPU-offline * processing. */ static void rcu_preempt_offline_cpu(int cpu) Loading @@ -980,7 +980,7 @@ static void rcu_preempt_offline_cpu(int cpu) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, it never has any callbacks * Because preemptible RCU does not exist, it never has any callbacks * to check. */ static void rcu_preempt_check_callbacks(int cpu) Loading @@ -988,7 +988,7 @@ static void rcu_preempt_check_callbacks(int cpu) } /* * Because preemptable RCU does not exist, it never has any callbacks * Because preemptible RCU does not exist, it never has any callbacks * to process. */ static void rcu_preempt_process_callbacks(void) Loading @@ -997,7 +997,7 @@ static void rcu_preempt_process_callbacks(void) /* * Wait for an rcu-preempt grace period, but make it happen quickly. * But because preemptable RCU does not exist, map to rcu-sched. * But because preemptible RCU does not exist, map to rcu-sched. */ void synchronize_rcu_expedited(void) { Loading @@ -1008,7 +1008,7 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); #ifdef CONFIG_HOTPLUG_CPU /* * Because preemptable RCU does not exist, there is never any need to * Because preemptible RCU does not exist, there is never any need to * report on tasks preempted in RCU read-side critical sections during * expedited RCU grace periods. */ Loading @@ -1020,7 +1020,7 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, it never has any work to do. * Because preemptible RCU does not exist, it never has any work to do. */ static int rcu_preempt_pending(int cpu) { Loading @@ -1028,7 +1028,7 @@ static int rcu_preempt_pending(int cpu) } /* * Because preemptable RCU does not exist, it never needs any CPU. * Because preemptible RCU does not exist, it never needs any CPU. */ static int rcu_preempt_needs_cpu(int cpu) { Loading @@ -1036,7 +1036,7 @@ static int rcu_preempt_needs_cpu(int cpu) } /* * Because preemptable RCU does not exist, rcu_barrier() is just * Because preemptible RCU does not exist, rcu_barrier() is just * another name for rcu_barrier_sched(). */ void rcu_barrier(void) Loading @@ -1046,7 +1046,7 @@ void rcu_barrier(void) EXPORT_SYMBOL_GPL(rcu_barrier); /* * Because preemptable RCU does not exist, there is no per-CPU * Because preemptible RCU does not exist, there is no per-CPU * data to initialize. */ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) Loading @@ -1054,14 +1054,14 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) } /* * Because there is no preemptable RCU, there are no callbacks to move. * Because there is no preemptible RCU, there are no callbacks to move. */ static void rcu_preempt_send_cbs_to_online(void) { } /* * Because preemptable RCU does not exist, it need not be initialized. * Because preemptible RCU does not exist, it need not be initialized. */ static void __init __rcu_init_preempt(void) { Loading Loading
kernel/rcutree.c +5 −5 Original line number Diff line number Diff line Loading @@ -290,8 +290,8 @@ static int rcu_implicit_offline_qs(struct rcu_data *rdp) return 1; } /* If preemptable RCU, no point in sending reschedule IPI. */ if (rdp->preemptable) /* If preemptible RCU, no point in sending reschedule IPI. */ if (rdp->preemptible) return 0; /* The CPU is online, so send it a reschedule IPI. */ Loading Loading @@ -1982,7 +1982,7 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) * or RCU-bh, force a local reschedule. */ rdp->n_rp_qs_pending++; if (!rdp->preemptable && if (!rdp->preemptible && ULONG_CMP_LT(ACCESS_ONCE(rsp->jiffies_force_qs) - 1, jiffies)) set_need_resched(); Loading Loading @@ -2159,7 +2159,7 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp) * that this CPU cannot possibly have any RCU callbacks in flight yet. */ static void __cpuinit rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptable) rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible) { unsigned long flags; unsigned long mask; Loading @@ -2171,7 +2171,7 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptable) rdp->passed_quiesc = 0; /* We could be racing with new GP, */ rdp->qs_pending = 1; /* so set up to respond to current GP. */ rdp->beenonline = 1; /* We have now been online. */ rdp->preemptable = preemptable; rdp->preemptible = preemptible; rdp->qlen_last_fqs_check = 0; rdp->n_force_qs_snap = rsp->n_force_qs; rdp->blimit = blimit; Loading
kernel/rcutree.h +1 −1 Original line number Diff line number Diff line Loading @@ -239,7 +239,7 @@ struct rcu_data { bool passed_quiesc; /* User-mode/idle loop etc. */ bool qs_pending; /* Core waits for quiesc state. */ bool beenonline; /* CPU online at least once. */ bool preemptable; /* Preemptable RCU? */ bool preemptible; /* Preemptible RCU? */ struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ unsigned long grpmask; /* Mask to apply to leaf qsmask. */ Loading
kernel/rcutree_plugin.h +31 −31 Original line number Diff line number Diff line /* * Read-Copy Update mechanism for mutual exclusion (tree-based version) * Internal non-public definitions that provide either classic * or preemptable semantics. * or preemptible semantics. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Loading Loading @@ -75,7 +75,7 @@ static int rcu_preempted_readers_exp(struct rcu_node *rnp); */ static void __init rcu_bootup_announce(void) { printk(KERN_INFO "Preemptable hierarchical RCU implementation.\n"); printk(KERN_INFO "Preemptible hierarchical RCU implementation.\n"); rcu_bootup_announce_oddness(); } Loading Loading @@ -108,7 +108,7 @@ void rcu_force_quiescent_state(void) EXPORT_SYMBOL_GPL(rcu_force_quiescent_state); /* * Record a preemptable-RCU quiescent state for the specified CPU. Note * Record a preemptible-RCU quiescent state for the specified CPU. Note * that this just means that the task currently running on the CPU is * not in a quiescent state. There might be any number of tasks blocked * while in an RCU read-side critical section. Loading Loading @@ -207,7 +207,7 @@ static void rcu_preempt_note_context_switch(int cpu) } /* * Tree-preemptable RCU implementation for rcu_read_lock(). * Tree-preemptible RCU implementation for rcu_read_lock(). * Just increment ->rcu_read_lock_nesting, shared state will be updated * if we block. */ Loading Loading @@ -376,7 +376,7 @@ static void rcu_read_unlock_special(struct task_struct *t) } /* * Tree-preemptable RCU implementation for rcu_read_unlock(). * Tree-preemptible RCU implementation for rcu_read_unlock(). * Decrement ->rcu_read_lock_nesting. If the result is zero (outermost * rcu_read_unlock()) and ->rcu_read_unlock_special is non-zero, then * invoke rcu_read_unlock_special() to clean up after a context switch Loading Loading @@ -565,7 +565,7 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp, } /* * Do CPU-offline processing for preemptable RCU. * Do CPU-offline processing for preemptible RCU. */ static void rcu_preempt_offline_cpu(int cpu) { Loading Loading @@ -594,7 +594,7 @@ static void rcu_preempt_check_callbacks(int cpu) } /* * Process callbacks for preemptable RCU. * Process callbacks for preemptible RCU. */ static void rcu_preempt_process_callbacks(void) { Loading @@ -603,7 +603,7 @@ static void rcu_preempt_process_callbacks(void) } /* * Queue a preemptable-RCU callback for invocation after a grace period. * Queue a preemptible-RCU callback for invocation after a grace period. */ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) { Loading Loading @@ -795,7 +795,7 @@ void synchronize_rcu_expedited(void) EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); /* * Check to see if there is any immediate preemptable-RCU-related work * Check to see if there is any immediate preemptible-RCU-related work * to be done. */ static int rcu_preempt_pending(int cpu) Loading @@ -805,7 +805,7 @@ static int rcu_preempt_pending(int cpu) } /* * Does preemptable RCU need the CPU to stay out of dynticks mode? * Does preemptible RCU need the CPU to stay out of dynticks mode? */ static int rcu_preempt_needs_cpu(int cpu) { Loading @@ -822,7 +822,7 @@ void rcu_barrier(void) EXPORT_SYMBOL_GPL(rcu_barrier); /* * Initialize preemptable RCU's per-CPU data. * Initialize preemptible RCU's per-CPU data. */ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) { Loading @@ -830,7 +830,7 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) } /* * Move preemptable RCU's callbacks from dying CPU to other online CPU. * Move preemptible RCU's callbacks from dying CPU to other online CPU. */ static void rcu_preempt_send_cbs_to_online(void) { Loading @@ -838,7 +838,7 @@ static void rcu_preempt_send_cbs_to_online(void) } /* * Initialize preemptable RCU's state structures. * Initialize preemptible RCU's state structures. */ static void __init __rcu_init_preempt(void) { Loading @@ -846,7 +846,7 @@ static void __init __rcu_init_preempt(void) } /* * Check for a task exiting while in a preemptable-RCU read-side * Check for a task exiting while in a preemptible-RCU read-side * critical section, clean up if so. No need to issue warnings, * as debug_check_no_locks_held() already does this if lockdep * is enabled. Loading Loading @@ -894,7 +894,7 @@ void rcu_force_quiescent_state(void) EXPORT_SYMBOL_GPL(rcu_force_quiescent_state); /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * CPUs being in quiescent states. */ static void rcu_preempt_note_context_switch(int cpu) Loading @@ -902,7 +902,7 @@ static void rcu_preempt_note_context_switch(int cpu) } /* * Because preemptable RCU does not exist, there are never any preempted * Because preemptible RCU does not exist, there are never any preempted * RCU readers. */ static int rcu_preempt_blocked_readers_cgp(struct rcu_node *rnp) Loading @@ -921,7 +921,7 @@ static void rcu_report_unblock_qs_rnp(struct rcu_node *rnp, unsigned long flags) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * tasks blocked within RCU read-side critical sections. */ static void rcu_print_detail_task_stall(struct rcu_state *rsp) Loading @@ -929,7 +929,7 @@ static void rcu_print_detail_task_stall(struct rcu_state *rsp) } /* * Because preemptable RCU does not exist, we never have to check for * Because preemptible RCU does not exist, we never have to check for * tasks blocked within RCU read-side critical sections. */ static void rcu_print_task_stall(struct rcu_node *rnp) Loading @@ -945,7 +945,7 @@ static void rcu_preempt_stall_reset(void) } /* * Because there is no preemptable RCU, there can be no readers blocked, * Because there is no preemptible RCU, there can be no readers blocked, * so there is no need to check for blocked tasks. So check only for * bogus qsmask values. */ Loading @@ -957,7 +957,7 @@ static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp) #ifdef CONFIG_HOTPLUG_CPU /* * Because preemptable RCU does not exist, it never needs to migrate * Because preemptible RCU does not exist, it never needs to migrate * tasks that were blocked within RCU read-side critical sections, and * such non-existent tasks cannot possibly have been blocking the current * grace period. Loading @@ -970,7 +970,7 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp, } /* * Because preemptable RCU does not exist, it never needs CPU-offline * Because preemptible RCU does not exist, it never needs CPU-offline * processing. */ static void rcu_preempt_offline_cpu(int cpu) Loading @@ -980,7 +980,7 @@ static void rcu_preempt_offline_cpu(int cpu) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, it never has any callbacks * Because preemptible RCU does not exist, it never has any callbacks * to check. */ static void rcu_preempt_check_callbacks(int cpu) Loading @@ -988,7 +988,7 @@ static void rcu_preempt_check_callbacks(int cpu) } /* * Because preemptable RCU does not exist, it never has any callbacks * Because preemptible RCU does not exist, it never has any callbacks * to process. */ static void rcu_preempt_process_callbacks(void) Loading @@ -997,7 +997,7 @@ static void rcu_preempt_process_callbacks(void) /* * Wait for an rcu-preempt grace period, but make it happen quickly. * But because preemptable RCU does not exist, map to rcu-sched. * But because preemptible RCU does not exist, map to rcu-sched. */ void synchronize_rcu_expedited(void) { Loading @@ -1008,7 +1008,7 @@ EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); #ifdef CONFIG_HOTPLUG_CPU /* * Because preemptable RCU does not exist, there is never any need to * Because preemptible RCU does not exist, there is never any need to * report on tasks preempted in RCU read-side critical sections during * expedited RCU grace periods. */ Loading @@ -1020,7 +1020,7 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp) #endif /* #ifdef CONFIG_HOTPLUG_CPU */ /* * Because preemptable RCU does not exist, it never has any work to do. * Because preemptible RCU does not exist, it never has any work to do. */ static int rcu_preempt_pending(int cpu) { Loading @@ -1028,7 +1028,7 @@ static int rcu_preempt_pending(int cpu) } /* * Because preemptable RCU does not exist, it never needs any CPU. * Because preemptible RCU does not exist, it never needs any CPU. */ static int rcu_preempt_needs_cpu(int cpu) { Loading @@ -1036,7 +1036,7 @@ static int rcu_preempt_needs_cpu(int cpu) } /* * Because preemptable RCU does not exist, rcu_barrier() is just * Because preemptible RCU does not exist, rcu_barrier() is just * another name for rcu_barrier_sched(). */ void rcu_barrier(void) Loading @@ -1046,7 +1046,7 @@ void rcu_barrier(void) EXPORT_SYMBOL_GPL(rcu_barrier); /* * Because preemptable RCU does not exist, there is no per-CPU * Because preemptible RCU does not exist, there is no per-CPU * data to initialize. */ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) Loading @@ -1054,14 +1054,14 @@ static void __cpuinit rcu_preempt_init_percpu_data(int cpu) } /* * Because there is no preemptable RCU, there are no callbacks to move. * Because there is no preemptible RCU, there are no callbacks to move. */ static void rcu_preempt_send_cbs_to_online(void) { } /* * Because preemptable RCU does not exist, it need not be initialized. * Because preemptible RCU does not exist, it need not be initialized. */ static void __init __rcu_init_preempt(void) { Loading