[Spice-devel] [spice-server 1/2] reds: Move RedsState typedef to red-common.h
Jonathon Jongsma
jjongsma at redhat.com
Tue Apr 5 18:24:28 UTC 2016
On Tue, 2016-04-05 at 15:37 +0200, Christophe Fergeau wrote:
> This allows to stop using struct RedsState * rather than RedsState * in
> headers which cannot include reds.h. This also allows to remove the
> duplicate RedsState typedef in reds.h and reds-stream.h which is causing
> issues with older gcc versions.
> ---
> server/char-device.h | 8 +++-----
> server/main-channel.h | 4 +---
> server/red-channel.h | 14 ++++++--------
> server/red-common.h | 2 ++
> server/reds-stream.h | 2 +-
> server/reds.h | 2 --
> 6 files changed, 13 insertions(+), 19 deletions(-)
>
> diff --git a/server/char-device.h b/server/char-device.h
> index 0a4ae5d..88961cc 100644
> --- a/server/char-device.h
> +++ b/server/char-device.h
> @@ -119,8 +119,6 @@ void red_char_device_set_callbacks(RedCharDevice *dev,
> *
> * */
>
> -struct RedsState;
> -
> /* buffer that is used for writing to the device */
> typedef struct RedCharDeviceWriteBuffer {
> RingItem link;
> @@ -170,7 +168,7 @@ struct RedCharDeviceCallbacks {
> };
>
> RedCharDevice *red_char_device_create(SpiceCharDeviceInstance *sin,
> - struct RedsState *reds,
> + RedsState *reds,
> uint32_t client_tokens_interval,
> uint32_t self_tokens,
> RedCharDeviceCallbacks *cbs,
> @@ -253,10 +251,10 @@ void red_char_device_write_buffer_release(RedCharDevice
> *dev,
>
> /* api for specific char devices */
>
> -RedCharDevice *spicevmc_device_connect(struct RedsState *reds,
> +RedCharDevice *spicevmc_device_connect(RedsState *reds,
> SpiceCharDeviceInstance *sin,
> uint8_t channel_type);
> -void spicevmc_device_disconnect(struct RedsState *reds,
> +void spicevmc_device_disconnect(RedsState *reds,
> SpiceCharDeviceInstance *char_device);
>
> SpiceCharDeviceInterface
> *spice_char_device_get_interface(SpiceCharDeviceInstance *instance);
> diff --git a/server/main-channel.h b/server/main-channel.h
> index 26e2129..fd16c94 100644
> --- a/server/main-channel.h
> +++ b/server/main-channel.h
> @@ -32,8 +32,6 @@
> #define MAIN_CHANNEL_RECEIVE_BUF_SIZE \
> (4096 + (REDS_AGENT_WINDOW_SIZE + REDS_NUM_INTERNAL_AGENT_MESSAGES) *
> SPICE_AGENT_MAX_DATA_SIZE)
>
> -struct RedsState;
> -
> struct RedsMigSpice {
> char *host;
> char *cert_subject;
> @@ -50,7 +48,7 @@ typedef struct MainChannel {
> } MainChannel;
>
>
> -MainChannel *main_channel_new(struct RedsState *reds);
> +MainChannel *main_channel_new(RedsState *reds);
> RedClient *main_channel_get_client_by_link_id(MainChannel *main_chan,
> uint32_t link_id);
> /* This is a 'clone' from the reds.h Channel.link callback to allow passing
> link_id */
> MainChannelClient *main_channel_link(MainChannel *, RedClient *client,
> diff --git a/server/red-channel.h b/server/red-channel.h
> index c3aeda6..94b09eb 100644
> --- a/server/red-channel.h
> +++ b/server/red-channel.h
> @@ -47,8 +47,6 @@
> The intention is to move towards one channel interface gradually.
> At the final stage, this interface shouldn't be exposed. Only RedChannel
> will use it. */
>
> -struct RedsState;
> -
> typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque;
>
> typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header);
> @@ -339,7 +337,7 @@ struct RedChannel {
>
> // TODO: when different channel_clients are in different threads from
> Channel -> need to protect!
> pthread_t thread_id;
> - struct RedsState *reds;
> + RedsState *reds;
> #ifdef RED_STATISTICS
> StatNodeRef stat;
> uint64_t *out_bytes_counter;
> @@ -362,7 +360,7 @@ struct RedChannel {
> /* if one of the callbacks should cause disconnect, use red_channel_shutdown
> and don't
> * explicitly destroy the channel */
> RedChannel *red_channel_create(int size,
> - struct RedsState *reds,
> + RedsState *reds,
> const SpiceCoreInterfaceInternal *core,
> uint32_t type, uint32_t id,
> int handle_acks,
> @@ -373,7 +371,7 @@ RedChannel *red_channel_create(int size,
> /* alternative constructor, meant for marshaller based (inputs,main)
> channels,
> * will become default eventually */
> RedChannel *red_channel_create_parser(int size,
> - struct RedsState *reds,
> + RedsState *reds,
> const SpiceCoreInterfaceInternal *core,
> uint32_t type, uint32_t id,
> int handle_acks,
> @@ -396,7 +394,7 @@ RedChannelClient *red_channel_client_create(int size,
> RedChannel *channel, RedCl
> // TODO: tmp, for channels that don't use RedChannel yet (e.g., snd channel),
> but
> // do use the client callbacks. So the channel clients are not connected (the
> channel doesn't
> // have list of them, but they do have a link to the channel, and the client
> has a list of them)
> -RedChannel *red_channel_create_dummy(int size, struct RedsState *reds,
> uint32_t type, uint32_t id);
> +RedChannel *red_channel_create_dummy(int size, RedsState *reds, uint32_t
> type, uint32_t id);
> RedChannelClient *red_channel_client_create_dummy(int size,
> RedChannel *channel,
> RedClient *client,
> @@ -569,7 +567,7 @@ void red_channel_apply_clients(RedChannel *channel,
> channel_client_callback v);
> struct RedsState* red_channel_get_server(RedChannel *channel);
>
> struct RedClient {
> - struct RedsState *reds;
> + RedsState *reds;
> RingItem link;
> Ring channels;
> int channels_num;
> @@ -591,7 +589,7 @@ struct RedClient {
> int refs;
> };
>
> -RedClient *red_client_new(struct RedsState *reds, int migrated);
> +RedClient *red_client_new(RedsState *reds, int migrated);
>
> /*
> * disconnects all the client's channels (should be called from the client's
> thread)
> diff --git a/server/red-common.h b/server/red-common.h
> index 90a7d20..a9339fb 100644
> --- a/server/red-common.h
> +++ b/server/red-common.h
> @@ -58,4 +58,6 @@ struct SpiceCoreInterfaceInternal {
>
> extern SpiceCoreInterfaceInternal event_loop_core;
>
> +typedef struct RedsState RedsState;
> +
> #endif
> diff --git a/server/reds-stream.h b/server/reds-stream.h
> index 1123048..705d7fd 100644
> --- a/server/reds-stream.h
> +++ b/server/reds-stream.h
> @@ -20,6 +20,7 @@
>
> #include "spice.h"
> #include "common/mem.h"
> +#include "red-common.h"
>
> #include <stdbool.h>
>
> @@ -28,7 +29,6 @@
> typedef void (*AsyncReadDone)(void *opaque);
> typedef void (*AsyncReadError)(void *opaque, int err);
>
> -typedef struct RedsState RedsState;
> typedef struct RedsStream RedsStream;
> typedef struct RedsStreamPrivate RedsStreamPrivate;
>
> diff --git a/server/reds.h b/server/reds.h
> index 83618e9..2cfd451 100644
> --- a/server/reds.h
> +++ b/server/reds.h
> @@ -32,8 +32,6 @@
> #include "main-dispatcher.h"
> #include "migration-protocol.h"
>
> -typedef struct RedsState RedsState;
> -
> static inline QXLInterface * qxl_get_interface(QXLInstance *qxl)
> {
> return SPICE_CONTAINEROF(qxl->base.sif, QXLInterface, base);
Acked-by: Jonathon Jongsma <jjongsma at redhat.com>
More information about the Spice-devel
mailing list