lkml.org 
[lkml]   [2010]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 1/1] fix-task-states-in-sched_switch-event.patch
    From
    Date
    On Mon, 2010-05-17 at 00:18 +0200, Carsten Emde wrote:
    > #define TASK_RUNNING 0
    > +#define TASK_STATE_0 "R"
    > +#define TASK_STATE_NAME_0 "running"
    > +
    > #define TASK_INTERRUPTIBLE 1
    > +#define TASK_STATE_1 "S"
    > +#define TASK_STATE_NAME_1 "sleeping"
    > +
    > #define TASK_UNINTERRUPTIBLE 2
    > +#define TASK_STATE_2 "D"
    > +#define TASK_STATE_NAME_2 "disk sleep"
    > +
    > #define __TASK_STOPPED 4
    > +#define TASK_STATE_4 "T"
    > +#define TASK_STATE_NAME_4 "stopped"
    > +
    > #define __TASK_TRACED 8
    > +#define TASK_STATE_8 "t"
    > +#define TASK_STATE_NAME_8 "tracing stop"
    > +
    > /* in tsk->exit_state */
    > #define EXIT_ZOMBIE 16
    > +#define TASK_STATE_16 "Z"
    > +#define TASK_STATE_NAME_16 "zombie"
    > +
    > #define EXIT_DEAD 32
    > +#define TASK_STATE_32 "X"
    > +#define TASK_STATE_NAME_32 "dead"
    > +
    > /* in tsk->state again */
    > #define TASK_DEAD 64
    > +#define TASK_STATE_64 "x"
    > +#define TASK_STATE_NAME_64 "dead"
    > +
    > #define TASK_WAKEKILL 128
    > +#define TASK_STATE_128 "K"
    > +#define TASK_STATE_NAME_128 "wakekill"
    > +
    > #define TASK_WAKING 256
    > +#define TASK_STATE_256 "W"
    > +#define TASK_STATE_NAME_256 "waking"

    Since we all love vile macro magic, is the below any better?

    include/linux/task_states.h

    TASK_STATE(RUNNING, "R", "running")
    TASK_STATE(INTERRUPTIBLE, "S", "sleeping")
    ...

    include/linux/sched.h

    enum {
    #define TASK_STATE(tstate, tstate_c, tstate_s) __TASK_##tstate,
    #include <linux/task_states.h>
    #undef TASK_STATE
    };

    enum {
    #define TASK_STATE(tstate, tstate_c, tstate_s) \
    TASK_##tstate = 1 << __TASK_##tstate,
    #include <linux/task_states.h>
    #undef TASK_STATE
    };

    const char *task_state_to_char =
    #define TASK_STATE(tstate, tstate_c, tstate_s) tstate_c
    #include <linux/task_states.h>
    #undef TASK_STATE
    ;

    const char *task_state_to_string[] = {
    #define TASK_STATE(tstate, tstate_c, tstate_s) tstate_s,
    #include <linux/task_states.h>
    #undef TASK_STATE
    };




    \
     
     \ /
      Last update: 2010-05-17 14:25    [W:0.024 / U:0.348 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site