Deleted Added
full compact
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_ */