diff options
| author | Ingo Molnar <mingo@elte.hu> | 2006-06-27 02:54:53 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-27 17:32:47 -0700 | 
| commit | 23f78d4a03c53cbd75d87a795378ea540aa08c86 (patch) | |
| tree | 27dfe06337990911380fe8c5949ae9acd8e9568a /kernel/fork.c | |
| parent | b29739f902ee76a05493fb7d2303490fc75364f4 (diff) | |
| download | olio-linux-3.10-23f78d4a03c53cbd75d87a795378ea540aa08c86.tar.xz olio-linux-3.10-23f78d4a03c53cbd75d87a795378ea540aa08c86.zip  | |
[PATCH] pi-futex: rt mutex core
Core functions for the rt-mutex subsystem.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/fork.c')
| -rw-r--r-- | kernel/fork.c | 16 | 
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 9b4e54ef022..b664a081fff 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -104,6 +104,7 @@ static kmem_cache_t *mm_cachep;  void free_task(struct task_struct *tsk)  {  	free_thread_info(tsk->thread_info); +	rt_mutex_debug_task_free(tsk);  	free_task_struct(tsk);  }  EXPORT_SYMBOL(free_task); @@ -913,6 +914,19 @@ asmlinkage long sys_set_tid_address(int __user *tidptr)  	return current->pid;  } +static inline void rt_mutex_init_task(struct task_struct *p) +{ +#ifdef CONFIG_RT_MUTEXES +	spin_lock_init(&p->pi_lock); +	plist_head_init(&p->pi_waiters, &p->pi_lock); +	p->pi_blocked_on = NULL; +# ifdef CONFIG_DEBUG_RT_MUTEXES +	spin_lock_init(&p->held_list_lock); +	INIT_LIST_HEAD(&p->held_list_head); +# endif +#endif +} +  /*   * This creates a new process as a copy of the old one,   * but does not actually start it yet. @@ -1034,6 +1048,8 @@ static task_t *copy_process(unsigned long clone_flags,  	mpol_fix_fork_child_flag(p);  #endif +	rt_mutex_init_task(p); +  #ifdef CONFIG_DEBUG_MUTEXES  	p->blocked_on = NULL; /* not blocked yet */  #endif  |