#define pr_fmt(fmt) …
#include <linux/net.h>
#include <linux/nls.h>
#include <linux/connector.h>
#include <linux/workqueue.h>
#include <linux/hyperv.h>
#include <asm/hyperv-tlfs.h>
#include "hyperv_vmbus.h"
#include "hv_utils_transport.h"
#define VSS_MAJOR …
#define VSS_MINOR …
#define VSS_VERSION …
#define VSS_VER_COUNT …
static const int vss_versions[] = …;
#define FW_VER_COUNT …
static const int fw_versions[] = …;
#define VSS_MAX_PKT_SIZE …
#define VSS_FREEZE_TIMEOUT …
static struct { … } vss_transaction;
static void vss_respond_to_host(int error);
static int dm_reg_value;
static const char vss_devname[] = …;
static __u8 *recv_buffer;
static struct hvutil_transport *hvt;
static void vss_timeout_func(struct work_struct *dummy);
static void vss_handle_request(struct work_struct *dummy);
static DECLARE_DELAYED_WORK(vss_timeout_work, vss_timeout_func);
static DECLARE_WORK(vss_handle_request_work, vss_handle_request);
static void vss_poll_wrapper(void *channel)
{ … }
static void vss_timeout_func(struct work_struct *dummy)
{ … }
static void vss_register_done(void)
{ … }
static int vss_handle_handshake(struct hv_vss_msg *vss_msg)
{ … }
static int vss_on_msg(void *msg, int len)
{ … }
static void vss_send_op(void)
{ … }
static void vss_handle_request(struct work_struct *dummy)
{ … }
static void
vss_respond_to_host(int error)
{ … }
void hv_vss_onchannelcallback(void *context)
{ … }
static void vss_on_reset(void)
{ … }
int
hv_vss_init(struct hv_util_service *srv)
{ … }
static void hv_vss_cancel_work(void)
{ … }
int hv_vss_pre_suspend(void)
{ … }
int hv_vss_pre_resume(void)
{ … }
void hv_vss_deinit(void)
{ … }