VirtualBox

Changeset 75755 in vbox for trunk/include


Ignore:
Timestamp:
Nov 27, 2018 1:36:00 AM (6 years ago)
Author:
vboxsync
Message:

GuestControlSvc: Defined 4 new commands that will succeed GUEST_MSG_WAIT - completely untested.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/HostServices/GuestControlSvc.h

    r71364 r75755  
    221221     *       when used in the first capacity.
    222222     *
    223      * @todo r=bird: Next time this interface gets a major adjustment, please split
    224      *       this function up into two calls and, for heavens sake, make them return
    225      *       VINF_SUCCESS on success.
     223     * @note Has a problem if the guest kernel module cancels the HGCM call, as the
     224     *       guest cannot resume waiting till the host issues a message for it and
     225     *       the cancelled call returns.  The new message may potentially end up in
     226     *       /dev/null depending and hang the message conversation between the guest
     227     *       and the host (SIGCHLD).
     228     *
     229     * @deprecated Replaced by GUEST_MSG_PEEK_WAIT, GUEST_MSG_GET and
     230     *             GUEST_MSG_CANCEL.
    226231     */
    227232    GUEST_MSG_WAIT = 1,
     
    263268     */
    264269    GUEST_MSG_PROGRESS_UPDATE = 12,
     270
     271    /** Peeks at the next message, returning immediately.
     272     *
     273     * Returns two 32-bit parameters, first is the message ID and the second the
     274     * parameter count.  May optionally return additional 32-bit parameters with the
     275     * sizes of respective message parameters.  To distinguish buffer sizes from
     276     * integer parameters, the latter gets their sizes inverted (uint32_t is ~4U,
     277     * uint64_t is ~8U).
     278     *
     279     * @retval  VINF_SUCCESS if a message was pending and is being returned.
     280     * @retval  VERR_TRY_AGAIN if no message pending.
     281     * @retval  VERR_INVALID_HANDLE if invalid client ID.
     282     * @retval  VERR_INVALID_PARAMETER if incorrect parameter count or types.
     283     * @since   6.0
     284     */
     285    GUEST_MSG_PEEK_NOWAIT,
     286    /** Peeks at the next message, waiting for one to arrive.
     287     *
     288     * Returns two 32-bit parameters, first is the message ID and the second the
     289     * parameter count.  May optionally return additional 32-bit parameters with the
     290     * sizes of respective message parameters.  To distinguish buffer sizes from
     291     * integer parameters, the latter gets their sizes inverted (uint32_t is ~4U,
     292     * uint64_t is ~8U).
     293     *
     294     * @retval  VINF_SUCCESS if info about an pending message is being returned.
     295     * @retval  VINF_TRY_AGAIN and message set to HOST_CANCEL_PENDING_WAITS if
     296     *          cancelled by GUEST_MSG_CANCEL or GUEST_CANCEL_PENDING_WAITS.
     297     * @retval  VERR_RESOURCE_BUSY if another thread already made a waiting call.
     298     * @retval  VERR_INVALID_HANDLE if invalid client ID.
     299     * @retval  VERR_INVALID_PARAMETER if incorrect parameter count or types.
     300     * @note    This replaces GUEST_MSG_WAIT.
     301     * @since   6.0
     302     */
     303    GUEST_MSG_PEEK_WAIT,
     304    /** Gets the next message, returning immediately.
     305     *
     306     * First argument is the message ID returned by the peek and which the caller
     307     * expects to retrieve (holds actual message ID when VERR_MISMATCH is returned).
     308     * Second argument is the parameter count (output only) and exist for
     309     * compatibility with GUEST_MSG_WAIT.  Any subsequent parameters are specific to
     310     * the message being retrieved.
     311     *
     312     * @retval  VINF_SUCCESS if message retrieved and removed from the pending queue.
     313     * @retval  VERR_TRY_AGAIN if no message pending.
     314     * @retval  VERR_MISMATCH if the incoming message ID does not match the pending.
     315     * @retval  VERR_OUT_OF_RANGE if the wrong parameter count.
     316     * @retval  VERR_WRONG_TYPE if a parameter has the wrong type.
     317     * @retval  VERR_BUFFER_OVERFLOW if a parmeter buffer is too small.  The buffer
     318     *          size was updated to reflect the required size.
     319     * @retval  VERR_INVALID_HANDLE if invalid client ID.
     320     * @note    This replaces GUEST_MSG_WAIT.
     321     * @since   6.0
     322     */
     323    GUEST_MSG_GET,
     324    /** Cancels pending calls for this client session.
     325     *
     326     * This should be used if a GUEST_MSG_PEEK_WAIT or GUEST_MSG_WAIT call gets
     327     * interrupted on the client end, so as to prevent being rebuffed with
     328     * VERR_RESOURCE_BUSY when restarting the call.
     329     *
     330     * @retval  VINF_SUCCESS if cancelled any calls.
     331     * @retval  VWRN_NOT_FOUND if no callers.
     332     * @retval  VERR_INVALID_PARAMETER if any parameters specified (expects zero).
     333     * @retval  VERR_INVALID_HANDLE if invalid client ID.
     334     * @since   6.0
     335     */
     336    GUEST_MSG_CANCEL,
     337
    265338    /**
    266339     * Guest reports back a guest session status.
     
    271344     */
    272345    GUEST_SESSION_CLOSE = 21,
     346
    273347    /**
    274348     * Guests sends output from an executed process.
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette