sched: Remove the obsolete exit_state/signal hacks
account_group_xxx() functions check ->exit_state to ensure that current->signal is valid and can't go away. This is not needed sinceea6d290c
, task->signal is pinned to task_struct. The comment and another hack in account_group_exec_runtime() refers to task_rq_unlock_wait() which was already removed byb7b8ff63
. Signed-off-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <20100610230952.GA25914@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
c32b4fce79
Коммит
48286d5088
|
@ -295,13 +295,7 @@ sched_info_switch(struct task_struct *prev, struct task_struct *next)
|
||||||
static inline void account_group_user_time(struct task_struct *tsk,
|
static inline void account_group_user_time(struct task_struct *tsk,
|
||||||
cputime_t cputime)
|
cputime_t cputime)
|
||||||
{
|
{
|
||||||
struct thread_group_cputimer *cputimer;
|
struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
|
||||||
|
|
||||||
/* tsk == current, ensure it is safe to use ->signal */
|
|
||||||
if (unlikely(tsk->exit_state))
|
|
||||||
return;
|
|
||||||
|
|
||||||
cputimer = &tsk->signal->cputimer;
|
|
||||||
|
|
||||||
if (!cputimer->running)
|
if (!cputimer->running)
|
||||||
return;
|
return;
|
||||||
|
@ -325,13 +319,7 @@ static inline void account_group_user_time(struct task_struct *tsk,
|
||||||
static inline void account_group_system_time(struct task_struct *tsk,
|
static inline void account_group_system_time(struct task_struct *tsk,
|
||||||
cputime_t cputime)
|
cputime_t cputime)
|
||||||
{
|
{
|
||||||
struct thread_group_cputimer *cputimer;
|
struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
|
||||||
|
|
||||||
/* tsk == current, ensure it is safe to use ->signal */
|
|
||||||
if (unlikely(tsk->exit_state))
|
|
||||||
return;
|
|
||||||
|
|
||||||
cputimer = &tsk->signal->cputimer;
|
|
||||||
|
|
||||||
if (!cputimer->running)
|
if (!cputimer->running)
|
||||||
return;
|
return;
|
||||||
|
@ -355,16 +343,7 @@ static inline void account_group_system_time(struct task_struct *tsk,
|
||||||
static inline void account_group_exec_runtime(struct task_struct *tsk,
|
static inline void account_group_exec_runtime(struct task_struct *tsk,
|
||||||
unsigned long long ns)
|
unsigned long long ns)
|
||||||
{
|
{
|
||||||
struct thread_group_cputimer *cputimer;
|
struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
|
||||||
struct signal_struct *sig;
|
|
||||||
|
|
||||||
sig = tsk->signal;
|
|
||||||
/* see __exit_signal()->task_rq_unlock_wait() */
|
|
||||||
barrier();
|
|
||||||
if (unlikely(!sig))
|
|
||||||
return;
|
|
||||||
|
|
||||||
cputimer = &sig->cputimer;
|
|
||||||
|
|
||||||
if (!cputimer->running)
|
if (!cputimer->running)
|
||||||
return;
|
return;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче