diff options
Diffstat (limited to 'server/vd_interface.h')
-rw-r--r-- | server/vd_interface.h | 359 |
1 files changed, 0 insertions, 359 deletions
diff --git a/server/vd_interface.h b/server/vd_interface.h deleted file mode 100644 index fc81a246..00000000 --- a/server/vd_interface.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - Copyright (C) 2009 Red Hat, Inc. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef _H_VD_INTERFACE -#define _H_VD_INTERFACE - -#include <stdint.h> - -typedef struct SpiceBaseInterface SpiceBaseInterface; -typedef struct SpiceBaseInstance SpiceBaseInstance; - -struct SpiceBaseInterface { - const char *type; - const char *description; - uint32_t major_version; - uint32_t minor_version; -}; -struct SpiceBaseInstance { - const SpiceBaseInterface *sif; -}; - -#define SPICE_INTERFACE_CORE "core" -#define SPICE_INTERFACE_CORE_MAJOR 1 -#define SPICE_INTERFACE_CORE_MINOR 2 -typedef struct SpiceCoreInterface SpiceCoreInterface; - -#define SPICE_WATCH_EVENT_READ (1 << 0) -#define SPICE_WATCH_EVENT_WRITE (1 << 1) - -typedef struct SpiceWatch SpiceWatch; -typedef void (*SpiceWatchFunc)(int fd, int event, void *opaque); - -typedef struct SpiceTimer SpiceTimer; -typedef void (*SpiceTimerFunc)(void *opaque); - -struct SpiceCoreInterface { - SpiceBaseInterface base; - - SpiceTimer *(*timer_add)(SpiceTimerFunc func, void *opaque); - void (*timer_start)(SpiceTimer *timer, uint32_t ms); - void (*timer_cancel)(SpiceTimer *timer); - void (*timer_remove)(SpiceTimer *timer); - - SpiceWatch *(*watch_add)(int fd, int event_mask, SpiceWatchFunc func, void *opaque); - void (*watch_update_mask)(SpiceWatch *watch, int event_mask); - void (*watch_remove)(SpiceWatch *watch); - -}; - -#define SPICE_INTERFACE_QXL "qxl" -#define SPICE_INTERFACE_QXL_MAJOR 3 -#define SPICE_INTERFACE_QXL_MINOR 0 -typedef struct QXLInterface QXLInterface; -typedef struct QXLInstance QXLInstance; -typedef struct QXLState QXLState; -typedef struct QXLWorker QXLWorker; -typedef struct QXLDevMemSlot QXLDevMemSlot; -typedef struct QXLDevSurfaceCreate QXLDevSurfaceCreate; -union QXLReleaseInfo; -struct QXLReleaseInfoExt; -struct QXLCommand; -struct QXLCommandExt; -struct SpiceRect; -struct QXLWorker { - uint32_t minor_version; - uint32_t major_version; - void (*wakeup)(QXLWorker *worker); - void (*oom)(QXLWorker *worker); - void (*start)(QXLWorker *worker); - void (*stop)(QXLWorker *worker); - void (*update_area)(QXLWorker *qxl_worker, uint32_t surface_id, - struct SpiceRect *area, struct SpiceRect *dirty_rects, - uint32_t num_dirty_rects, uint32_t clear_dirty_region); - void (*add_memslot)(QXLWorker *worker, QXLDevMemSlot *slot); - void (*del_memslot)(QXLWorker *worker, uint32_t slot_group_id, uint32_t slot_id); - void (*reset_memslots)(QXLWorker *worker); - void (*destroy_surfaces)(QXLWorker *worker); - void (*destroy_primary_surface)(QXLWorker *worker, uint32_t surface_id); - void (*create_primary_surface)(QXLWorker *worker, uint32_t surface_id, - QXLDevSurfaceCreate *surface); - void (*reset_image_cache)(QXLWorker *worker); - void (*reset_cursor)(QXLWorker *worker); - void (*destroy_surface_wait)(QXLWorker *worker, uint32_t surface_id); - void (*loadvm_commands)(QXLWorker *worker, struct QXLCommandExt *ext, uint32_t count); -}; - -typedef struct QXLDrawArea { - uint8_t *buf; - uint32_t size; - uint8_t *line_0; - uint32_t width; - uint32_t heigth; - int stride; -} QXLDrawArea; - -typedef struct QXLDevInfo { - uint32_t x_res; - uint32_t y_res; - uint32_t bits; - uint32_t use_hardware_cursor; - - QXLDrawArea draw_area; - - uint32_t ram_size; -} QXLDevInfo; - -typedef struct QXLDevInitInfo { - uint32_t num_memslots_groups; - uint32_t num_memslots; - uint8_t memslot_gen_bits; - uint8_t memslot_id_bits; - uint32_t qxl_ram_size; - uint8_t internal_groupslot_id; - uint32_t n_surfaces; -} QXLDevInitInfo; - -struct QXLDevMemSlot { - uint32_t slot_group_id; - uint32_t slot_id; - uint32_t generation; - unsigned long virt_start; - unsigned long virt_end; - uint64_t addr_delta; - uint32_t qxl_ram_size; -}; - -struct QXLDevSurfaceCreate { - uint32_t width; - uint32_t height; - int32_t stride; - uint32_t format; - uint32_t position; - uint32_t mouse_mode; - uint32_t flags; - uint32_t type; - uint64_t mem; - uint32_t group_id; -}; - -struct SpiceRect; - -struct QXLInterface { - SpiceBaseInterface base; - - uint16_t pci_vendor; - uint16_t pci_id; - uint8_t pci_revision; - - void (*attache_worker)(QXLInstance *qin, QXLWorker *qxl_worker); - void (*set_compression_level)(QXLInstance *qin, int level); - void (*set_mm_time)(QXLInstance *qin, uint32_t mm_time); - - void (*get_init_info)(QXLInstance *qin, QXLDevInitInfo *info); - int (*get_command)(QXLInstance *qin, struct QXLCommandExt *cmd); - int (*req_cmd_notification)(QXLInstance *qin); - int (*has_command)(QXLInstance *qin); - void (*release_resource)(QXLInstance *qin, struct QXLReleaseInfoExt release_info); - int (*get_cursor_command)(QXLInstance *qin, struct QXLCommandExt *cmd); - int (*req_cursor_notification)(QXLInstance *qin); - void (*notify_update)(QXLInstance *qin, uint32_t update_id); - int (*flush_resources)(QXLInstance *qin); -}; - -struct QXLInstance { - SpiceBaseInstance base; - int id; - QXLState *st; -}; - -#define SPICE_INTERFACE_KEYBOARD "keyboard" -#define SPICE_INTERFACE_KEYBOARD_MAJOR 1 -#define SPICE_INTERFACE_KEYBOARD_MINOR 1 -typedef struct SpiceKbdInterface SpiceKbdInterface; -typedef struct SpiceKbdInstance SpiceKbdInstance; -typedef struct SpiceKbdState SpiceKbdState; - -struct SpiceKbdInterface { - SpiceBaseInterface base; - - void (*push_scan_freg)(SpiceKbdInstance *sin, uint8_t frag); - uint8_t (*get_leds)(SpiceKbdInstance *sin); -}; - -struct SpiceKbdInstance { - SpiceBaseInstance base; - SpiceKbdState *st; -}; - -#define SPICE_INTERFACE_MOUSE "mouse" -#define SPICE_INTERFACE_MOUSE_MAJOR 1 -#define SPICE_INTERFACE_MOUSE_MINOR 1 -typedef struct SpiceMouseInterface SpiceMouseInterface; -typedef struct SpiceMouseInstance SpiceMouseInstance; -typedef struct SpiceMouseState SpiceMouseState; - -struct SpiceMouseInterface { - SpiceBaseInterface base; - - void (*motion)(SpiceMouseInstance *sin, int dx, int dy, int dz, - uint32_t buttons_state); - void (*buttons)(SpiceMouseInstance *sin, uint32_t buttons_state); -}; - -struct SpiceMouseInstance { - SpiceBaseInstance base; - SpiceMouseState *st; -}; - -#define SPICE_INTERFACE_TABLET "tablet" -#define SPICE_INTERFACE_TABLET_MAJOR 1 -#define SPICE_INTERFACE_TABLET_MINOR 1 -typedef struct SpiceTabletInterface SpiceTabletInterface; -typedef struct SpiceTabletInstance SpiceTabletInstance; -typedef struct SpiceTabletState SpiceTabletState; - -struct SpiceTabletInterface { - SpiceBaseInterface base; - - void (*set_logical_size)(SpiceTabletInstance* tablet, int width, int height); - void (*position)(SpiceTabletInstance* tablet, int x, int y, uint32_t buttons_state); - void (*wheel)(SpiceTabletInstance* tablet, int wheel_moution, uint32_t buttons_state); - void (*buttons)(SpiceTabletInstance* tablet, uint32_t buttons_state); -}; - -struct SpiceTabletInstance { - SpiceBaseInstance base; - SpiceTabletState *st; -}; - -#define SPICE_INTERFACE_PLAYBACK "playback" -#define SPICE_INTERFACE_PLAYBACK_MAJOR 1 -#define SPICE_INTERFACE_PLAYBACK_MINOR 1 -typedef struct SpicePlaybackInterface SpicePlaybackInterface; -typedef struct SpicePlaybackInstance SpicePlaybackInstance; -typedef struct SpicePlaybackState SpicePlaybackState; - -enum { - SPICE_INTERFACE_AUDIO_FMT_S16 = 1, -}; - -#define SPICE_INTERFACE_PLAYBACK_FREQ 44100 -#define SPICE_INTERFACE_PLAYBACK_CHAN 2 -#define SPICE_INTERFACE_PLAYBACK_FMT SPICE_INTERFACE_AUDIO_FMT_S16 - -struct SpicePlaybackInterface { - SpiceBaseInterface base; -}; - -struct SpicePlaybackInstance { - SpiceBaseInstance base; - SpicePlaybackState *st; -}; - -void spice_server_playback_start(SpicePlaybackInstance *sin); -void spice_server_playback_stop(SpicePlaybackInstance *sin); -void spice_server_playback_get_buffer(SpicePlaybackInstance *sin, - uint32_t **samples, uint32_t *nsamples); -void spice_server_playback_put_samples(SpicePlaybackInstance *sin, - uint32_t *samples); - -#define SPICE_INTERFACE_RECORD "record" -#define SPICE_INTERFACE_RECORD_MAJOR 2 -#define SPICE_INTERFACE_RECORD_MINOR 1 -typedef struct SpiceRecordInterface SpiceRecordInterface; -typedef struct SpiceRecordInstance SpiceRecordInstance; -typedef struct SpiceRecordState SpiceRecordState; - -#define SPICE_INTERFACE_RECORD_FREQ 44100 -#define SPICE_INTERFACE_RECORD_CHAN 2 -#define SPICE_INTERFACE_RECORD_FMT SPICE_INTERFACE_AUDIO_FMT_S16 - -struct SpiceRecordInterface { - SpiceBaseInterface base; -}; - -struct SpiceRecordInstance { - SpiceBaseInstance base; - SpiceRecordState *st; -}; - -void spice_server_record_start(SpiceRecordInstance *sin); -void spice_server_record_stop(SpiceRecordInstance *sin); -uint32_t spice_server_record_get_samples(SpiceRecordInstance *sin, - uint32_t *samples, uint32_t bufsize); - -#define SPICE_INTERFACE_VDI_PORT "vdi_port" -#define SPICE_INTERFACE_VDI_PORT_MAJOR 1 -#define SPICE_INTERFACE_VDI_PORT_MINOR 1 -typedef struct SpiceVDIPortInterface SpiceVDIPortInterface; -typedef struct SpiceVDIPortInstance SpiceVDIPortInstance; -typedef struct SpiceVDIPortState SpiceVDIPortState; - -struct SpiceVDIPortInterface { - SpiceBaseInterface base; - - void (*state)(SpiceVDIPortInstance *sin, int connected); - int (*write)(SpiceVDIPortInstance *sin, const uint8_t *buf, int len); - int (*read)(SpiceVDIPortInstance *sin, uint8_t *buf, int len); -}; - -struct SpiceVDIPortInstance { - SpiceBaseInstance base; - SpiceVDIPortState *st; -}; - -void spice_server_vdi_port_wakeup(SpiceVDIPortInstance *sin); - -#define SPICE_INTERFACE_NET_WIRE "net_wire" -#define SPICE_INTERFACE_NET_WIRE_MAJOR 1 -#define SPICE_INTERFACE_NET_WIRE_MINOR 1 -typedef struct SpiceNetWireInterface SpiceNetWireInterface; -typedef struct SpiceNetWireInstance SpiceNetWireInstance; -typedef struct SpiceNetWireState SpiceNetWireState; - -struct NetWireInterface { - SpiceBaseInterface base; - - struct in_addr (*get_ip)(SpiceNetWireInterface *sin); - int (*can_send_packet)(SpiceNetWireInterface *sin); - void (*send_packet)(SpiceNetWireInterface *sin, const uint8_t *pkt, int len); -}; - -struct SpiceNetWireInstance { - SpiceBaseInstance base; - SpiceNetWireState *st; -}; - -void spice_server_net_wire_recv_packet(SpiceNetWireInstance *sin, - const uint8_t *pkt, int len); - -#endif - |