• Kirill Tkhai's avatar
    files: Implement {set,clear,wait}_fds_event() · 735461e1
    Kirill Tkhai authored
    The idea is symilar to kernel's wake_up() and wait_event().
    One task needs some event. It checks the event has not
    happened yet (fle hasn't received, unix peer hasn't bound, etc)
    and calls get_fds_event(). Other task makes the event
    (sends a fle, binds the peer to a name, etc) and calls set_fds_event().
    
    So, while there is no an event, the first task is sleeping,
    and the second wakes it up later:
    
    Task A:      clear_fds_event();
                 if (!socket_bound)
                         wait_fds_event(); /* sleep */
    
    Task B:      bind_socket();
                 set_fds_event();         /* wake up */
    
    For the details of using see next patches.
    
    v5: Use bit operations.
        Split clear_fds_event from wait function.
    
    v2: Do not wait for foreign transport sock is ready,
    as it's guarantied by we create it before CR_STATE_FORKING.
    
    travis-ci: success for Rework file opening scheme to make it asynchronous (rev5)
    Signed-off-by: 's avatarKirill Tkhai <ktkhai@virtuozzo.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    735461e1
Name
Last commit
Last update
..
arch Loading commit data...
asm-generic Loading commit data...
bitops.h Loading commit data...
bitsperlong.h Loading commit data...
bug.h Loading commit data...
compiler.h Loading commit data...
err.h Loading commit data...
list.h Loading commit data...
lock.h Loading commit data...
page.h Loading commit data...
scm-code.c Loading commit data...
scm.h Loading commit data...
xmalloc.h Loading commit data...