• Oleg Nesterov's avatar
    proc: cleanup/simplify get_task_state/task_state_array · 74e37200
    Oleg Nesterov authored
    get_task_state() and task_state_array[] look confusing and suboptimal, it
    is not clear what it can actually report to user-space and
    task_state_array[] blows .data for no reason.
    
    1. state = (tsk->state & TASK_REPORT) | tsk->exit_state is not
       clear. TASK_REPORT is self-documenting but it is not clear
       what ->exit_state can add.
    
       Move the potential exit_state's (EXIT_ZOMBIE and EXIT_DEAD)
       into TASK_REPORT and use it to calculate the final result.
    
    2. With the change above it is obvious that task_state_array[]
       has the unused entries just to make BUILD_BUG_ON() happy.
    
       Change this BUILD_BUG_ON() to use TASK_REPORT rather than
       TASK_STATE_MAX and shrink task_state_array[].
    
    3. Turn the "while (state)" loop into fls(state).
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Tejun Heo <tj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    74e37200
array.c 18.3 KB