lkml.org 
[lkml]   [2005]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 7/12] UML - Turn literal numbers into symbolic constants
    Date
    From
    So, there I was, looking at my own code, wondering what the magic setjmp
    return values did. This patch turns the constants that are used to make
    requests of the initial thread into meaningful symbols.

    Signed-off-by: Jeff Dike <jdike@addtoit.com>

    Index: linux-2.6.11/arch/um/kernel/skas/process.c
    ===================================================================
    --- linux-2.6.11.orig/arch/um/kernel/skas/process.c 2005-04-29 15:03:57.000000000 -0400
    +++ linux-2.6.11/arch/um/kernel/skas/process.c 2005-04-29 15:08:28.000000000 -0400
    @@ -201,6 +201,11 @@
    }
    }
    }
    +#define INIT_JMP_NEW_THREAD 0
    +#define INIT_JMP_REMOVE_SIGSTACK 1
    +#define INIT_JMP_CALLBACK 2
    +#define INIT_JMP_HALT 3
    +#define INIT_JMP_REBOOT 4

    void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr,
    void (*handler)(int))
    @@ -236,7 +241,7 @@
    *switch_buf = &buf;
    fork_buf = fb;
    if(sigsetjmp(buf, 1) == 0)
    - siglongjmp(*fork_buf, 1);
    + siglongjmp(*fork_buf, INIT_JMP_REMOVE_SIGSTACK);
    }

    void switch_threads(void *me, void *next)
    @@ -266,21 +271,25 @@

    *fork_buf_ptr = &initial_jmpbuf;
    n = sigsetjmp(initial_jmpbuf, 1);
    - if(n == 0)
    - new_thread_proc((void *) stack, new_thread_handler);
    - else if(n == 1)
    - remove_sigstack();
    - else if(n == 2){
    + switch(n){
    + case INIT_JMP_NEW_THREAD:
    + new_thread_proc((void *) stack, new_thread_handler);
    + break;
    + case INIT_JMP_REMOVE_SIGSTACK:
    + remove_sigstack();
    + break;
    + case INIT_JMP_CALLBACK:
    (*cb_proc)(cb_arg);
    siglongjmp(*cb_back, 1);
    - }
    - else if(n == 3){
    + break;
    + case INIT_JMP_HALT:
    kmalloc_ok = 0;
    return(0);
    - }
    - else if(n == 4){
    + case INIT_JMP_REBOOT:
    kmalloc_ok = 0;
    return(1);
    + default:
    + panic("Bad sigsetjmp return in start_idle_thread - %d\n", n);
    }
    siglongjmp(**switch_buf, 1);
    }
    @@ -305,7 +314,7 @@

    block_signals();
    if(sigsetjmp(here, 1) == 0)
    - siglongjmp(initial_jmpbuf, 2);
    + siglongjmp(initial_jmpbuf, INIT_JMP_CALLBACK);
    unblock_signals();

    cb_proc = NULL;
    @@ -316,13 +325,13 @@
    void halt_skas(void)
    {
    block_signals();
    - siglongjmp(initial_jmpbuf, 3);
    + siglongjmp(initial_jmpbuf, INIT_JMP_HALT);
    }

    void reboot_skas(void)
    {
    block_signals();
    - siglongjmp(initial_jmpbuf, 4);
    + siglongjmp(initial_jmpbuf, INIT_JMP_REBOOT);
    }

    void switch_mm_skas(int mm_fd)
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-05-07 01:30    [W:0.027 / U:58.760 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site