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

Yonit Halperin yhalperi at redhat.com
Tue Jul 3 04:34:06 PDT 2012


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 f493956..e87c029 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 72f8abd..4a70075 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 911564b..9488237 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"
-- 
1.7.7.6



More information about the Spice-devel mailing list