• Arnd Bergmann's avatar
    rcuscale: fix building with RCU_TINY · e0a34641
    Arnd Bergmann authored
    Both the CONFIG_TASKS_RCU and CONFIG_TASKS_RUDE_RCU options
    are broken when RCU_TINY is enabled as well, as some functions
    are missing a declaration.
    
    In file included from kernel/rcu/update.c:649:
    kernel/rcu/tasks.h:1271:21: error: no previous prototype for 'get_rcu_tasks_rude_gp_kthread' [-Werror=missing-prototypes]
     1271 | struct task_struct *get_rcu_tasks_rude_gp_kthread(void)
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    kernel/rcu/rcuscale.c:330:27: error: 'get_rcu_tasks_rude_gp_kthread' undeclared here (not in a function); did you mean 'get_rcu_tasks_trace_gp_kthread'?
      330 |         .rso_gp_kthread = get_rcu_tasks_rude_gp_kthread,
          |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                           get_rcu_tasks_trace_gp_kthread
    
    In file included from /home/arnd/arm-soc/kernel/rcu/update.c:649:
    kernel/rcu/tasks.h:1113:21: error: no previous prototype for 'get_rcu_tasks_gp_kthread' [-Werror=missing-prototypes]
     1113 | struct task_struct *get_rcu_tasks_gp_kthread(void)
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~
    
    Also, building with CONFIG_TASKS_RUDE_RCU but not CONFIG_TASKS_RCU is
    broken because of some missing stub functions:
    
    kernel/rcu/rcuscale.c:322:27: error: 'tasks_scale_read_lock' undeclared here (not in a function); did you mean 'srcu_scale_read_lock'?
      322 |         .readlock       = tasks_scale_read_lock,
          |                           ^~~~~~~~~~~~~~~~~~~~~
          |                           srcu_scale_read_lock
    kernel/rcu/rcuscale.c:323:27: error: 'tasks_scale_read_unlock' undeclared here (not in a function); did you mean 'srcu_scale_read_unlock'?
      323 |         .readunlock     = tasks_scale_read_unlock,
          |                           ^~~~~~~~~~~~~~~~~~~~~~~
          |                           srcu_scale_read_unlock
    
    Move the declarations outside of the RCU_TINY #ifdef and duplicate the
    shared stub functions to address all of the above.
    
    Fixes: 88d7ff818f0ce ("rcuscale: Add RCU Tasks Rude testing")
    Fixes: 755f1c5eb416b ("rcuscale: Measure RCU Tasks Trace grace-period kthread CPU time")
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    e0a34641
rcu.h 20.4 KB