[lkml]   [2002]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] compatibility syscall layer (lets try again)

    I just pushed my version of the system call restart code to the BK trees.
    It's losely based on Georges code, but subtly different. Also, I didn't
    actually update any actual system calls to use it, I just did the

    Non-x86 architectures need to be updated to work with this: they need to
    update their thread structures, the additional do_signal() support in
    their signal.c, and add the actual system call itself somewhere. For x86,
    this was about 15 lines of changes.

    The basic premise is very simple: if you want to restart a system call,
    you can do

    restart = &current_thread()->restart_block;
    restart->fn = my_continuation_function;
    restart->arg0 = my_arg0_for_continuation;
    restart->arg1 = my_arg1_for_continuation;

    which will cause the system call to either return -EINTR (if a signal
    handler was actually invoced) or for "benign" signals (SIGSTOP etc) it
    will end up restarting the system call at the continuation function (with
    the "restart" block as the argument).

    We could extend this to allow restarting even over signal handlers, but
    that would have some re-entrancy issues (ie what happens if a signal
    handler itself wants to use a system call that may want restarting), so at
    least for now restarting is only done when no handler is invoced (*).


    (*) The nesting case is by no means impossible to handle gracefully
    (adding a "restart even if handler is called" error number and returning
    -EINTR if nesting, for example), but I don't know of any system calls that
    would really want to try to restart anyway, so..

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:31    [W:0.020 / U:36.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site