• Cyrill Gorcunov's avatar
    parasite: Prepare structures for daemon mode · 24864ae7
    Cyrill Gorcunov authored
    Parasite daemon mode might be considered as a series
    of network messages sent from main crtools module to
    parasite daemon which spins on a socket waiting for
    command to handle.
    
    Simple command handling session might look as
    
            crtools                     daemon
            |                           |                           |
            | ---> command message ---> |                           |
            |                           | ---> receive command ---> |
            |                           |           ....            |
            |                           |       handle command      |
            |                           |           ....            |
            |                           | <--- send ack       <---  |
            | <--- receive ack     <--- |                           |
            |                           |                           |
            v                           v                           v
          time
    
    where, in case of multithread application [handle command] stage
    includes waking up of children threads via futexes, wait until
    handling complete and only then send ack back to ctrools module.
    
    This patch brings in description of command message as
    
    struct ctl_msg {
        unsigned int    id;     /* command recipient */
        unsigned int    cmd;    /* command itself */
        unsigned int    ack;    /* ack on command */
        int             err;    /* error code on reply */
    };
    
    For example, in case of dumpee being with pid 2 and acquiring
    to handle PARASITE_CMD_DUMP_MISC, the command/ack series will look
    as
    
        cmd-msg
        -------
        .id     = 2,
        .cmd    = PARASITE_CMD_DUMP_MISC,
        .ack    = 0,
        .err    = 0,
    
        ack-msg
        -------
        .id     = 2,
        .cmd    = PARASITE_CMD_DUMP_MISC,
        .ack    = PARASITE_CMD_DUMP_MISC,
        .err    = 0
    
    in case if error happened in parasite, the @err field set accordingly.
    
    For convenience ctl_msg_cmd()/ctl_msg_ack() macros are provided
    for control message generations.
    
    v2: delete futex_t ack from tid_state_s
    Fixed-by: 's avatarAndrew Vagin <avagin@openvz.org>
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
    24864ae7
Name
Last commit
Last update
..
Makefile Loading commit data...
gen-offsets.sh Loading commit data...
log-simple.c Loading commit data...
parasite.c Loading commit data...
pie.lds.S.in Loading commit data...
restorer.c Loading commit data...
util-net.c Loading commit data...