• Stefano Stabellini's avatar
    xen/pvcalls: implement frontend disconnect · aa7ba376
    Stefano Stabellini authored
    Introduce a data structure named pvcalls_bedata. It contains pointers to
    the command ring, the event channel, a list of active sockets and a list
    of passive sockets. Lists accesses are protected by a spin_lock.
    
    Introduce a waitqueue to allow waiting for a response on commands sent
    to the backend.
    
    Introduce an array of struct xen_pvcalls_response to store commands
    responses.
    
    Introduce a new struct sock_mapping to keep track of sockets.  In this
    patch the struct sock_mapping is minimal, the fields will be added by
    the next patches.
    
    pvcalls_refcount is used to keep count of the outstanding pvcalls users.
    Only remove connections once the refcount is zero.
    
    Implement pvcalls frontend removal function. Go through the list of
    active and passive sockets and free them all, one at a time.
    Signed-off-by: default avatarStefano Stabellini <stefano@aporeto.com>
    Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
    CC: boris.ostrovsky@oracle.com
    CC: jgross@suse.com
    Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
    aa7ba376
pvcalls-front.c 3.3 KB