Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/hyperv/include/vmbus.h
Show All 25 Lines | |||||
* $FreeBSD$ | * $FreeBSD$ | ||||
*/ | */ | ||||
#ifndef _VMBUS_H_ | #ifndef _VMBUS_H_ | ||||
#define _VMBUS_H_ | #define _VMBUS_H_ | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/_iovec.h> | |||||
/* | /* | ||||
* VMBUS version is 32 bit, upper 16 bit for major_number and lower | * VMBUS version is 32 bit, upper 16 bit for major_number and lower | ||||
* 16 bit for minor_number. | * 16 bit for minor_number. | ||||
* | * | ||||
* 0.13 -- Windows Server 2008 | * 0.13 -- Windows Server 2008 | ||||
* 1.1 -- Windows 7 | * 1.1 -- Windows 7 | ||||
* 2.4 -- Windows 8 | * 2.4 -- Windows 8 | ||||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | |||||
struct vmbus_channel; | struct vmbus_channel; | ||||
struct vmbus_xact; | struct vmbus_xact; | ||||
struct vmbus_xact_ctx; | struct vmbus_xact_ctx; | ||||
struct hyperv_guid; | struct hyperv_guid; | ||||
struct task; | struct task; | ||||
struct taskqueue; | struct taskqueue; | ||||
typedef void (*vmbus_chan_callback_t)(struct vmbus_channel *, void *); | typedef void (*vmbus_chan_callback_t)(struct vmbus_channel *, void *); | ||||
typedef int (*vmbus_br_copy_callback_t)(void *, int, void *); | |||||
static __inline struct vmbus_channel * | static __inline struct vmbus_channel * | ||||
vmbus_get_channel(device_t dev) | vmbus_get_channel(device_t dev) | ||||
{ | { | ||||
return device_get_ivars(dev); | return device_get_ivars(dev); | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | void vmbus_subchan_rel(struct vmbus_channel **subchan, | ||||
int subchan_cnt); | int subchan_cnt); | ||||
void vmbus_subchan_drain(struct vmbus_channel *pri_chan); | void vmbus_subchan_drain(struct vmbus_channel *pri_chan); | ||||
int vmbus_chan_recv(struct vmbus_channel *chan, void *data, int *dlen, | int vmbus_chan_recv(struct vmbus_channel *chan, void *data, int *dlen, | ||||
uint64_t *xactid); | uint64_t *xactid); | ||||
int vmbus_chan_recv_pkt(struct vmbus_channel *chan, | int vmbus_chan_recv_pkt(struct vmbus_channel *chan, | ||||
struct vmbus_chanpkt_hdr *pkt, int *pktlen); | struct vmbus_chanpkt_hdr *pkt, int *pktlen); | ||||
int vmbus_chan_recv_idxadv(struct vmbus_channel *chan, | |||||
uint32_t advance); | |||||
int vmbus_chan_recv_peek(struct vmbus_channel *chan, | |||||
void *data, int data_len, uint32_t advance); | |||||
int vmbus_chan_recv_peek_call(struct vmbus_channel *chan, | |||||
int data_len, uint32_t skip, | |||||
vmbus_br_copy_callback_t cb, void *cbarg); | |||||
int vmbus_chan_send(struct vmbus_channel *chan, uint16_t type, | int vmbus_chan_send(struct vmbus_channel *chan, uint16_t type, | ||||
uint16_t flags, void *data, int dlen, uint64_t xactid); | uint16_t flags, void *data, int dlen, uint64_t xactid); | ||||
int vmbus_chan_send_sglist(struct vmbus_channel *chan, | int vmbus_chan_send_sglist(struct vmbus_channel *chan, | ||||
struct vmbus_gpa sg[], int sglen, void *data, int dlen, | struct vmbus_gpa sg[], int sglen, void *data, int dlen, | ||||
uint64_t xactid); | uint64_t xactid); | ||||
int vmbus_chan_send_prplist(struct vmbus_channel *chan, | int vmbus_chan_send_prplist(struct vmbus_channel *chan, | ||||
struct vmbus_gpa_range *prp, int prp_cnt, void *data, | struct vmbus_gpa_range *prp, int prp_cnt, void *data, | ||||
int dlen, uint64_t xactid); | int dlen, uint64_t xactid); | ||||
int vmbus_chan_iov_send(struct vmbus_channel *chan, | |||||
const struct iovec iov[], int iovlen, | |||||
vmbus_br_copy_callback_t cb, void *cbarg); | |||||
uint32_t vmbus_chan_write_available(struct vmbus_channel *chan); | |||||
uint32_t vmbus_chan_read_available(struct vmbus_channel *chan); | |||||
bool vmbus_chan_write_signal(struct vmbus_channel *chan, | |||||
int32_t min_signal_size); | |||||
void vmbus_chan_set_pending_send_size(struct vmbus_channel *chan, | |||||
uint32_t size); | |||||
uint32_t vmbus_chan_id(const struct vmbus_channel *chan); | uint32_t vmbus_chan_id(const struct vmbus_channel *chan); | ||||
uint32_t vmbus_chan_subidx(const struct vmbus_channel *chan); | uint32_t vmbus_chan_subidx(const struct vmbus_channel *chan); | ||||
bool vmbus_chan_is_primary(const struct vmbus_channel *chan); | bool vmbus_chan_is_primary(const struct vmbus_channel *chan); | ||||
bool vmbus_chan_is_revoked(const struct vmbus_channel *chan); | bool vmbus_chan_is_revoked(const struct vmbus_channel *chan); | ||||
const struct hyperv_guid * | bool vmbus_chan_is_hvs(const struct vmbus_channel *chan); | ||||
vmbus_chan_guid_inst(const struct vmbus_channel *chan); | bool vmbus_chan_is_hvs_conn_from_host( | ||||
const struct vmbus_channel *chan); | |||||
int vmbus_req_tl_connect(struct hyperv_guid *, | |||||
struct hyperv_guid *); | |||||
struct hyperv_guid * | |||||
vmbus_chan_guid_type(struct vmbus_channel *chan); | |||||
struct hyperv_guid * | |||||
vmbus_chan_guid_inst(struct vmbus_channel *chan); | |||||
int vmbus_chan_prplist_nelem(int br_size, int prpcnt_max, | int vmbus_chan_prplist_nelem(int br_size, int prpcnt_max, | ||||
int dlen_max); | int dlen_max); | ||||
bool vmbus_chan_rx_empty(const struct vmbus_channel *chan); | bool vmbus_chan_rx_empty(const struct vmbus_channel *chan); | ||||
bool vmbus_chan_tx_empty(const struct vmbus_channel *chan); | bool vmbus_chan_tx_empty(const struct vmbus_channel *chan); | ||||
struct taskqueue * | struct taskqueue * | ||||
vmbus_chan_mgmt_tq(const struct vmbus_channel *chan); | vmbus_chan_mgmt_tq(const struct vmbus_channel *chan); | ||||
void vmbus_chan_poll_enable(struct vmbus_channel *chan, | void vmbus_chan_poll_enable(struct vmbus_channel *chan, | ||||
u_int pollhz); | u_int pollhz); | ||||
void vmbus_chan_poll_disable(struct vmbus_channel *chan); | void vmbus_chan_poll_disable(struct vmbus_channel *chan); | ||||
#endif /* !_VMBUS_H_ */ | #endif /* !_VMBUS_H_ */ |