sched: INIT_PREEMPT_COUNT
Pull the initial preempt_count value into a single definition site. Maintainers for: alpha, ia64 and m68k, please have a look, your arch code is funny. The header magic is a bit odd, but similar to the KERNEL_DS one, CPP waits with expanding these macros until the INIT_THREAD_INFO macro itself is expanded, which is in arch/*/kernel/init_task.c where we've already included sched.h so we're good. Cc: tony.luck@intel.com Cc: rth@twiddle.net Cc: geert@linux-m68k.org Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Matt Mackall <mpm@selenic.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
					parent
					
						
							
								2a6f86bc5e
							
						
					
				
			
			
				commit
				
					
						c99e6efe1b
					
				
			
		
					 24 changed files with 29 additions and 40 deletions
				
			
		| 
						 | 
				
			
			@ -37,6 +37,7 @@ struct thread_info {
 | 
			
		|||
	.task		= &tsk,			\
 | 
			
		||||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ struct thread_info {
 | 
			
		|||
	.task		= &tsk,						\
 | 
			
		||||
	.exec_domain	= &default_exec_domain,				\
 | 
			
		||||
	.flags		= 0,						\
 | 
			
		||||
	.preempt_count	= 1,						\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,				\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,					\
 | 
			
		||||
	.cpu_domain	= domain_val(DOMAIN_USER, DOMAIN_MANAGER) |	\
 | 
			
		||||
			  domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) |	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,				\
 | 
			
		||||
	.flags		= 0,						\
 | 
			
		||||
	.cpu		= 0,						\
 | 
			
		||||
	.preempt_count	= 1,						\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,				\
 | 
			
		||||
	.restart_block	= {						\
 | 
			
		||||
		.fn	= do_no_restart_syscall				\
 | 
			
		||||
	}								\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,7 +77,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count  = 1,                    \
 | 
			
		||||
	.preempt_count  = INIT_PREEMPT_COUNT,   \
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,8 +50,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
#define INIT_THREAD_INFO(tsk)				\
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +58,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,		\
 | 
			
		||||
	.flags		= 0,				\
 | 
			
		||||
	.cpu		= 0,				\
 | 
			
		||||
	.preempt_count	= 1,				\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,		\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,			\
 | 
			
		||||
	.restart_block = {				\
 | 
			
		||||
		       .fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,8 +56,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +65,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain =	&default_exec_domain,	\
 | 
			
		||||
	.flags =	0,			\
 | 
			
		||||
	.cpu =		0,			\
 | 
			
		||||
	.preempt_count = 1,			\
 | 
			
		||||
	.preempt_count = INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ struct thread_info {
 | 
			
		|||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.preempt_count	= 0,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,8 +57,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -68,7 +66,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ struct thread_info {
 | 
			
		|||
{						\
 | 
			
		||||
	.task		= &tsk,			\
 | 
			
		||||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -75,8 +75,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#define INIT_THREAD_INFO(tsk)			\
 | 
			
		||||
{						\
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +82,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,8 +39,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#define INIT_THREAD_INFO(tsk)			\
 | 
			
		||||
{						\
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +46,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= _TIF_FIXADE,		\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,8 +65,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +74,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ struct thread_info {
 | 
			
		|||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
  	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall	\
 | 
			
		||||
	}					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,15 +46,13 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#define INIT_THREAD_INFO(tsk)			\
 | 
			
		||||
{						\
 | 
			
		||||
	.task =		&tsk,			\
 | 
			
		||||
	.exec_domain =	&default_exec_domain,	\
 | 
			
		||||
	.cpu =		0,			\
 | 
			
		||||
	.preempt_count = 1,			\
 | 
			
		||||
	.preempt_count = INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,7 +61,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
	},					\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block	= {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,8 +54,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#define INIT_THREAD_INFO(tsk)				\
 | 
			
		||||
{							\
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +62,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	=	&default_exec_domain,	\
 | 
			
		||||
	.flags		=	0,			\
 | 
			
		||||
	.cpu		=	0,			\
 | 
			
		||||
	.preempt_count	=	1,			\
 | 
			
		||||
	.preempt_count	=	INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block	= {				\
 | 
			
		||||
		.fn	=	do_no_restart_syscall,	\
 | 
			
		||||
	},						\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -125,8 +125,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -135,7 +133,7 @@ struct thread_info {
 | 
			
		|||
	.task		=	&tsk,			\
 | 
			
		||||
	.flags		= ((unsigned long)ASI_P) << TI_FLAG_CURRENT_DS_SHIFT,	\
 | 
			
		||||
	.exec_domain	=	&default_exec_domain,	\
 | 
			
		||||
	.preempt_count	=	1,			\
 | 
			
		||||
	.preempt_count	=	INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.restart_block	= {				\
 | 
			
		||||
		.fn	=	do_no_restart_syscall,	\
 | 
			
		||||
	},						\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain =	&default_exec_domain,	\
 | 
			
		||||
	.flags =		0,		\
 | 
			
		||||
	.cpu =		0,			\
 | 
			
		||||
	.preempt_count =	1,		\
 | 
			
		||||
	.preempt_count = INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit =	KERNEL_DS,		\
 | 
			
		||||
	.restart_block =  {			\
 | 
			
		||||
		.fn =  do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,8 +80,6 @@ struct thread_info {
 | 
			
		|||
 | 
			
		||||
/*
 | 
			
		||||
 * macros/functions for gaining access to the thread information structure
 | 
			
		||||
 *
 | 
			
		||||
 * preempt_count needs to be 1 initially, until the scheduler is functional.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __ASSEMBLY__
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +90,7 @@ struct thread_info {
 | 
			
		|||
	.exec_domain	= &default_exec_domain,	\
 | 
			
		||||
	.flags		= 0,			\
 | 
			
		||||
	.cpu		= 0,			\
 | 
			
		||||
	.preempt_count	= 1,			\
 | 
			
		||||
	.preempt_count	= INIT_PREEMPT_COUNT,	\
 | 
			
		||||
	.addr_limit	= KERNEL_DS,		\
 | 
			
		||||
	.restart_block = {			\
 | 
			
		||||
		.fn = do_no_restart_syscall,	\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -498,6 +498,12 @@ struct task_cputime {
 | 
			
		|||
		.sum_exec_runtime = 0,				\
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Disable preemption until the scheduler is running.
 | 
			
		||||
 * Reset by start_kernel()->sched_init()->init_idle().
 | 
			
		||||
 */
 | 
			
		||||
#define INIT_PREEMPT_COUNT	(1)
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * struct thread_group_cputimer - thread group interval timer counts
 | 
			
		||||
 * @cputime:		thread group interval timers.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue