vmbus.h (307461) | vmbus.h (307466) |
---|---|
1/*- 2 * Copyright (c) 2016 Microsoft Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2016 Microsoft Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: stable/11/sys/dev/hyperv/include/vmbus.h 307461 2016-10-17 03:24:03Z sephe $ | 26 * $FreeBSD: stable/11/sys/dev/hyperv/include/vmbus.h 307466 2016-10-17 03:48:22Z sephe $ |
27 */ 28 29#ifndef _VMBUS_H_ 30#define _VMBUS_H_ 31 32#include <sys/param.h> | 27 */ 28 29#ifndef _VMBUS_H_ 30#define _VMBUS_H_ 31 32#include <sys/param.h> |
33#include <sys/bus.h> |
|
33 34/* 35 * VMBUS version is 32 bit, upper 16 bit for major_number and lower 36 * 16 bit for minor_number. 37 * 38 * 0.13 -- Windows Server 2008 39 * 1.1 -- Windows 7 40 * 2.4 -- Windows 8 --- 69 unchanged lines hidden (view full) --- 110typedef void (*vmbus_chan_callback_t)(struct vmbus_channel *, void *); 111 112static __inline struct vmbus_channel * 113vmbus_get_channel(device_t dev) 114{ 115 return device_get_ivars(dev); 116} 117 | 34 35/* 36 * VMBUS version is 32 bit, upper 16 bit for major_number and lower 37 * 16 bit for minor_number. 38 * 39 * 0.13 -- Windows Server 2008 40 * 1.1 -- Windows 7 41 * 2.4 -- Windows 8 --- 69 unchanged lines hidden (view full) --- 111typedef void (*vmbus_chan_callback_t)(struct vmbus_channel *, void *); 112 113static __inline struct vmbus_channel * 114vmbus_get_channel(device_t dev) 115{ 116 return device_get_ivars(dev); 117} 118 |
118int vmbus_chan_open(struct vmbus_channel *chan, 119 int txbr_size, int rxbr_size, const void *udata, int udlen, 120 vmbus_chan_callback_t cb, void *cbarg); 121void vmbus_chan_close(struct vmbus_channel *chan); | 119int vmbus_chan_open(struct vmbus_channel *chan, 120 int txbr_size, int rxbr_size, const void *udata, int udlen, 121 vmbus_chan_callback_t cb, void *cbarg); 122void vmbus_chan_close(struct vmbus_channel *chan); |
122 | 123 |
123int vmbus_chan_gpadl_connect(struct vmbus_channel *chan, 124 bus_addr_t paddr, int size, uint32_t *gpadl); 125int vmbus_chan_gpadl_disconnect(struct vmbus_channel *chan, 126 uint32_t gpadl); | 124int vmbus_chan_gpadl_connect(struct vmbus_channel *chan, 125 bus_addr_t paddr, int size, uint32_t *gpadl); 126int vmbus_chan_gpadl_disconnect(struct vmbus_channel *chan, 127 uint32_t gpadl); |
127 | 128 |
128void vmbus_chan_cpu_set(struct vmbus_channel *chan, int cpu); 129void vmbus_chan_cpu_rr(struct vmbus_channel *chan); | 129void vmbus_chan_cpu_set(struct vmbus_channel *chan, int cpu); 130void vmbus_chan_cpu_rr(struct vmbus_channel *chan); |
130struct vmbus_channel * | 131struct vmbus_channel * |
131 vmbus_chan_cpu2chan(struct vmbus_channel *chan, int cpu); 132void vmbus_chan_set_readbatch(struct vmbus_channel *chan, bool on); | 132 vmbus_chan_cpu2chan(struct vmbus_channel *chan, int cpu); 133void vmbus_chan_set_readbatch(struct vmbus_channel *chan, bool on); |
133 134struct vmbus_channel ** | 134 135struct vmbus_channel ** |
135 vmbus_subchan_get(struct vmbus_channel *pri_chan, int subchan_cnt); 136void vmbus_subchan_rel(struct vmbus_channel **subchan, int subchan_cnt); 137void vmbus_subchan_drain(struct vmbus_channel *pri_chan); | 136 vmbus_subchan_get(struct vmbus_channel *pri_chan, 137 int subchan_cnt); 138void vmbus_subchan_rel(struct vmbus_channel **subchan, 139 int subchan_cnt); 140void vmbus_subchan_drain(struct vmbus_channel *pri_chan); |
138 | 141 |
139int vmbus_chan_recv(struct vmbus_channel *chan, void *data, int *dlen, 140 uint64_t *xactid); 141int vmbus_chan_recv_pkt(struct vmbus_channel *chan, 142 struct vmbus_chanpkt_hdr *pkt, int *pktlen); | 142int vmbus_chan_recv(struct vmbus_channel *chan, void *data, int *dlen, 143 uint64_t *xactid); 144int vmbus_chan_recv_pkt(struct vmbus_channel *chan, 145 struct vmbus_chanpkt_hdr *pkt, int *pktlen); |
143 | 146 |
144int vmbus_chan_send(struct vmbus_channel *chan, uint16_t type, 145 uint16_t flags, void *data, int dlen, uint64_t xactid); 146int vmbus_chan_send_sglist(struct vmbus_channel *chan, 147 struct vmbus_gpa sg[], int sglen, void *data, int dlen, 148 uint64_t xactid); 149int vmbus_chan_send_prplist(struct vmbus_channel *chan, 150 struct vmbus_gpa_range *prp, int prp_cnt, void *data, int dlen, 151 uint64_t xactid); | 147int vmbus_chan_send(struct vmbus_channel *chan, uint16_t type, 148 uint16_t flags, void *data, int dlen, uint64_t xactid); 149int vmbus_chan_send_sglist(struct vmbus_channel *chan, 150 struct vmbus_gpa sg[], int sglen, void *data, int dlen, 151 uint64_t xactid); 152int vmbus_chan_send_prplist(struct vmbus_channel *chan, 153 struct vmbus_gpa_range *prp, int prp_cnt, void *data, 154 int dlen, uint64_t xactid); |
152 | 155 |
153uint32_t vmbus_chan_id(const struct vmbus_channel *chan); 154uint32_t vmbus_chan_subidx(const struct vmbus_channel *chan); 155bool vmbus_chan_is_primary(const struct vmbus_channel *chan); | 156uint32_t vmbus_chan_id(const struct vmbus_channel *chan); 157uint32_t vmbus_chan_subidx(const struct vmbus_channel *chan); 158bool vmbus_chan_is_primary(const struct vmbus_channel *chan); |
156const struct hyperv_guid * | 159const struct hyperv_guid * |
157 vmbus_chan_guid_inst(const struct vmbus_channel *chan); | 160 vmbus_chan_guid_inst(const struct vmbus_channel *chan); |
158 159#endif /* !_VMBUS_H_ */ | 161 162#endif /* !_VMBUS_H_ */ |