tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev head: 3981406d6621b8a72a873bdc88d0a95d2e928c9e commit: 3981406d6621b8a72a873bdc88d0a95d2e928c9e [117/117] rcu: Define RCU-sched API in terms of RCU for Tree RCU PREEMPT builds config: x86_64-randconfig-x018-201826 (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: git checkout 3981406d6621b8a72a873bdc88d0a95d2e928c9e # save the attached .config to linux build tree make ARCH=x86_64
All error/warnings (new ones prefixed by >>): >> kernel//rcu/tree.c:2996:6: error: redefinition of 'call_rcu_sched' void call_rcu_sched(struct rcu_head *head, rcu_callback_t func) ^~~~~~~~~~~~~~ In file included from include/linux/rcupdate_wait.h:9:0, from kernel//rcu/tree.c:38: include/linux/rcupdate.h:53:18: note: previous definition of 'call_rcu_sched' was here #define call_rcu call_rcu_sched ^ >> kernel//rcu/tree.c:2983:6: note: in expansion of macro 'call_rcu' void call_rcu(struct rcu_head *head, rcu_callback_t func) ^~~~~~~~ vim +/call_rcu_sched +2996 kernel//rcu/tree.c 64db4cff kernel/rcutree.c Paul E. McKenney 2008-12-18 2950 a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2951 /** 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2952 * call_rcu() - Queue an RCU callback for invocation after a grace period. a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2953 * @head: structure to be used for queueing the RCU updates. a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2954 * @func: actual callback function to be invoked after the grace period a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2955 * a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2956 * The callback function will be invoked some time after a full grace 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2957 * period elapses, in other words after all pre-existing RCU read-side 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2958 * critical sections have completed. However, the callback function 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2959 * might well execute concurrently with RCU read-side critical sections 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2960 * that started after call_rcu() was invoked. RCU read-side critical 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2961 * sections are delimited by rcu_read_lock() and rcu_read_unlock(), 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2962 * and may be nested. 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2963 * 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2964 * Note that all CPUs must agree that the grace period extended beyond 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2965 * all pre-existing RCU read-side critical section. On systems with more 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2966 * than one CPU, this means that when "func()" is invoked, each CPU is 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2967 * guaranteed to have executed a full memory barrier since the end of its 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2968 * last RCU read-side critical section whose beginning preceded the call 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2969 * to call_rcu(). It also means that each CPU executing an RCU read-side 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2970 * critical section that continues beyond the start of "func()" must have 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2971 * executed a memory barrier after the call_rcu() but before the beginning 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2972 * of that RCU read-side critical section. Note that these guarantees 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2973 * include CPUs that are offline, idle, or executing in user mode, as 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2974 * well as CPUs that are executing in the kernel. 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2975 * 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2976 * Furthermore, if CPU A invoked call_rcu() and CPU B invoked the 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2977 * resulting RCU callback function "func()", then both CPU A and CPU B are 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2978 * guaranteed to execute a full memory barrier during the time interval 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2979 * between the call to call_rcu() and the invocation of "func()" -- even 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2980 * if CPU A and CPU B are the same CPU (but again only if the system has 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2981 * more than one CPU). 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2982 */ 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 @2983 void call_rcu(struct rcu_head *head, rcu_callback_t func) 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2984 { 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2985 __call_rcu(head, func, rcu_state_p, -1, 0); 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2986 } 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2987 EXPORT_SYMBOL_GPL(call_rcu); 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2988 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2989 /** 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2990 * call_rcu_sched() - Queue an RCU for invocation after sched grace period. 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2991 * @head: structure to be used for queueing the RCU updates. 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2992 * @func: actual callback function to be invoked after the grace period a68a2bb2 kernel/rcu/tree.c Paul E. McKenney 2017-05-03 2993 * 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2994 * This is transitional. 64db4cff kernel/rcutree.c Paul E. McKenney 2008-12-18 2995 */ b6a4ae76 kernel/rcu/tree.c Boqun Feng 2015-07-29 @2996 void call_rcu_sched(struct rcu_head *head, rcu_callback_t func) 64db4cff kernel/rcutree.c Paul E. McKenney 2008-12-18 2997 { 3981406d kernel/rcu/tree.c Paul E. McKenney 2018-07-02 2998 call_rcu(head, func); 64db4cff kernel/rcutree.c Paul E. McKenney 2008-12-18 2999 } d6714c22 kernel/rcutree.c Paul E. McKenney 2009-08-22 3000 EXPORT_SYMBOL_GPL(call_rcu_sched); 64db4cff kernel/rcutree.c Paul E. McKenney 2008-12-18 3001 :::::: The code at line 2996 was first introduced by commit :::::: b6a4ae766e3133a4db73fabc81e522d1601cb623 rcu: Use rcu_callback_t in call_rcu*() and friends :::::: TO: Boqun Feng <boqun.f...@gmail.com> :::::: CC: Paul E. McKenney <paul...@linux.vnet.ibm.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip