From bf91bdce5cb5b391b9d3f86900845831da80a5c5 Mon Sep 17 00:00:00 2001 From: Yonit Halperin Date: Mon, 25 Jun 2012 09:34:57 +0300 Subject: char_device: move SpiceCharDeviceState from the header In addition, I also removed the no longer used wakeup callback --- server/char_device.c | 23 +++++++++++++++++++++++ server/char_device.h | 28 ---------------------------- server/reds.c | 8 ++++---- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/server/char_device.c b/server/char_device.c index f4939566..e87c0296 100644 --- a/server/char_device.c +++ b/server/char_device.c @@ -43,6 +43,29 @@ 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; + + int during_read_from_device; + + SpiceCharDeviceCallbacks cbs; + void *opaque; +}; + enum { WRITE_BUFFER_ORIGIN_NONE, WRITE_BUFFER_ORIGIN_CLIENT, diff --git a/server/char_device.h b/server/char_device.h index 72f8abdb..4a70075b 100644 --- a/server/char_device.h +++ b/server/char_device.h @@ -109,34 +109,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; - - int during_read_from_device; - - 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 911564b8..9488237b 100644 --- a/server/reds.c +++ b/server/reds.c @@ -3158,11 +3158,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" -- cgit