[Spice-devel] [PATCH spice-server 14/14] char_device: move SpiceCharDeviceState from the header

Hans de Goede hdegoede at redhat.com
Mon Jul 2 07:17:28 PDT 2012


Looks good, ack.

Regards,

Hans



On 06/27/2012 05:16 PM, Yonit Halperin wrote:
> In addition, I also removed the no longer used wakeup callback
> ---
>   server/char_device.c |   21 +++++++++++++++++++++
>   server/char_device.h |   26 --------------------------
>   server/reds.c        |    8 ++++----
>   3 files changed, 25 insertions(+), 30 deletions(-)
>
> diff --git a/server/char_device.c b/server/char_device.c
> index 13a3a58..a0a0208 100644
> --- a/server/char_device.c
> +++ b/server/char_device.c
> @@ -43,6 +43,27 @@ struct SpiceCharDeviceClientState {
>       uint32_t max_send_queue_size;
>   };
>
> +struct SpiceCharDeviceState {
> +    int running;
> +    uint32_t refs;
> +
> +    Ring write_queue;
> +    Ring write_bufs_pool;
> +    SpiceCharDeviceWriteBuffer *cur_write_buf;
> +    uint8_t *cur_write_buf_pos;
> +    SpiceTimer *write_to_dev_timer;
> +    uint64_t num_self_tokens;
> +
> +    Ring clients; /* list of SpiceCharDeviceClientState */
> +    uint32_t num_clients;
> +
> +    uint64_t client_tokens_interval; /* frequency of returning tokens to the client */
> +    SpiceCharDeviceInstance *sin;
> +
> +    SpiceCharDeviceCallbacks cbs;
> +    void *opaque;
> +};
> +
>   /* Holding references for avoiding access violation if the char device was
>    * destroyed during a callback */
>   static void spice_char_device_state_ref(SpiceCharDeviceState *char_dev);
> diff --git a/server/char_device.h b/server/char_device.h
> index d355a2f..7046cd4 100644
> --- a/server/char_device.h
> +++ b/server/char_device.h
> @@ -108,32 +108,6 @@ typedef struct SpiceCharDeviceCallbacks {
>
>   typedef struct SpiceCharDeviceState SpiceCharDeviceState;
>
> -struct SpiceCharDeviceState {
> -    int running;
> -    uint32_t refs;
> -
> -    Ring write_queue;
> -    Ring write_bufs_pool;
> -    SpiceCharDeviceWriteBuffer *cur_write_buf;
> -    uint8_t *cur_write_buf_pos;
> -    SpiceTimer *write_to_dev_timer;
> -    uint64_t num_self_tokens;
> -
> -    Ring clients;
> -    uint32_t num_clients;
> -
> -    uint64_t client_tokens_interval; /* frequency of returning tokens to the client */
> -    SpiceCharDeviceInstance *sin;
> -
> -    SpiceCharDeviceCallbacks cbs;
> -    void *opaque;
> -    /* tmp till all spice char devices will employ the new SpiceCharDeviceState
> -     * implementation. Then, SpiceCharDeviceState will be moved to char_device.c and
> -     * this callback will be removed */
> -    void (*wakeup)(SpiceCharDeviceInstance *sin);
> -};
> -
> -
>   SpiceCharDeviceState *spice_char_device_state_create(SpiceCharDeviceInstance *sin,
>                                                        uint32_t client_tokens_interval,
>                                                        uint32_t self_tokens,
> diff --git a/server/reds.c b/server/reds.c
> index f0f4040..256e7a6 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3157,11 +3157,11 @@ static SpiceCharDeviceState *attach_to_red_agent(SpiceCharDeviceInstance *sin)
>
>   SPICE_GNUC_VISIBLE void spice_server_char_device_wakeup(SpiceCharDeviceInstance* sin)
>   {
> -    if (sin->st->wakeup) {
> -        sin->st->wakeup(sin);
> -    } else {
> -        spice_char_device_wakeup(sin->st);
> +    if (!sin->st) {
> +        spice_error("no SpiceCharDeviceState attached to instance %p", sin);
> +        return;
>       }
> +    spice_char_device_wakeup(sin->st);
>   }
>
>   #define SUBTYPE_VDAGENT "vdagent"
>



More information about the Spice-devel mailing list