[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