Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a0465e1 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

srcu: Shrink srcu.h by moving docbook and private function



The call_srcu() docbook entry is currently in include/linux/srcu.h,
which causes needless processing for each include point.  This commit
therefore moves this entry to kernel/rcu/srcutree.c, which the compiler
reads only once.  In addition, the srcu_batches_completed() function is
used only within RCU and its torture-test suites.  This commit therefore
also moves this function's declaration from include/linux/srcutiny.h,
include/linux/srcutree.h, and include/linux/srcuclassic.h to
kernel/rcu/rcu.h.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent c350c008
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -65,32 +65,12 @@ int init_srcu_struct(struct srcu_struct *sp);
#elif defined(CONFIG_SRCU)
#error "Unknown SRCU implementation specified to kernel configuration"
#else

/* Dummy definition for things like notifiers.  Actual use gets link error. */
struct srcu_struct { };

#endif

/**
 * call_srcu() - Queue a callback for invocation after an SRCU grace period
 * @sp: srcu_struct in queue the callback
 * @head: structure to be used for queueing the SRCU callback.
 * @func: function to be invoked after the SRCU grace period
 *
 * The callback function will be invoked some time after a full SRCU
 * grace period elapses, in other words after all pre-existing SRCU
 * read-side critical sections have completed.  However, the callback
 * function might well execute concurrently with other SRCU read-side
 * critical sections that started after call_srcu() was invoked.  SRCU
 * read-side critical sections are delimited by srcu_read_lock() and
 * srcu_read_unlock(), and may be nested.
 *
 * The callback will be invoked from process context, but must nevertheless
 * be fast and must not block.
 */
void call_srcu(struct srcu_struct *sp, struct rcu_head *head,
		void (*func)(struct rcu_head *head));

void cleanup_srcu_struct(struct srcu_struct *sp);
int __srcu_read_lock(struct srcu_struct *sp) __acquires(sp);
void __srcu_read_unlock(struct srcu_struct *sp, int idx) __releases(sp);
+0 −1
Original line number Diff line number Diff line
@@ -96,6 +96,5 @@ void process_srcu(struct work_struct *work);

void synchronize_srcu_expedited(struct srcu_struct *sp);
void srcu_barrier(struct srcu_struct *sp);
unsigned long srcu_batches_completed(struct srcu_struct *sp);

#endif
+0 −5
Original line number Diff line number Diff line
@@ -88,9 +88,4 @@ static inline void srcu_barrier(struct srcu_struct *sp)
	synchronize_srcu(sp);
}

static inline unsigned long srcu_batches_completed(struct srcu_struct *sp)
{
	return 0;
}

#endif
+0 −1
Original line number Diff line number Diff line
@@ -141,6 +141,5 @@ void process_srcu(struct work_struct *work);

void synchronize_srcu_expedited(struct srcu_struct *sp);
void srcu_barrier(struct srcu_struct *sp);
unsigned long srcu_batches_completed(struct srcu_struct *sp);

#endif
+6 −0
Original line number Diff line number Diff line
@@ -492,6 +492,11 @@ static inline unsigned long rcu_exp_batches_completed_sched(void)
	return 0;
}

static inline unsigned long srcu_batches_completed(struct srcu_struct *sp)
{
	return 0;
}

static inline void rcu_force_quiescent_state(void)
{
}
@@ -519,6 +524,7 @@ unsigned long rcu_batches_completed_bh(void);
unsigned long rcu_batches_completed_sched(void);
unsigned long rcu_exp_batches_completed(void);
unsigned long rcu_exp_batches_completed_sched(void);
unsigned long srcu_batches_completed(struct srcu_struct *sp);
void show_rcu_gp_kthreads(void);
void rcu_force_quiescent_state(void);
void rcu_bh_force_quiescent_state(void);
Loading