hyperv/vmbus: Constify channel message
MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D6708
This commit is contained in:
parent
12ea25ae4f
commit
43926ba13f
@ -40,23 +40,29 @@
|
||||
* Internal functions
|
||||
*/
|
||||
|
||||
typedef void (*vmbus_msg_handler)(hv_vmbus_channel_msg_header *msg);
|
||||
typedef void (*vmbus_msg_handler)(const hv_vmbus_channel_msg_header *msg);
|
||||
|
||||
typedef struct hv_vmbus_channel_msg_table_entry {
|
||||
hv_vmbus_channel_msg_type messageType;
|
||||
|
||||
vmbus_msg_handler messageHandler;
|
||||
} hv_vmbus_channel_msg_table_entry;
|
||||
|
||||
static void vmbus_channel_on_offer(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_offer_internal(void* context);
|
||||
static void vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_offer_rescind(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_offer_rescind_internal(void* context);
|
||||
static void vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_offers_delivered(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr);
|
||||
static void vmbus_channel_on_offer_internal(void *context);
|
||||
static void vmbus_channel_on_offer_rescind_internal(void *context);
|
||||
|
||||
static void vmbus_channel_on_offer(const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_open_result(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_offer_rescind(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_gpadl_created(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_gpadl_torndown(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_offers_delivered(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
static void vmbus_channel_on_version_response(
|
||||
const hv_vmbus_channel_msg_header *hdr);
|
||||
|
||||
/**
|
||||
* Channel message dispatch table
|
||||
@ -392,12 +398,12 @@ vmbus_channel_select_defcpu(struct hv_vmbus_channel *channel)
|
||||
* object to process the offer synchronously
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_offer(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_offer(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_offer_channel* offer;
|
||||
hv_vmbus_channel_offer_channel* copied;
|
||||
const hv_vmbus_channel_offer_channel *offer;
|
||||
hv_vmbus_channel_offer_channel *copied;
|
||||
|
||||
offer = (hv_vmbus_channel_offer_channel*) hdr;
|
||||
offer = (const hv_vmbus_channel_offer_channel *)hdr;
|
||||
|
||||
// copy offer data
|
||||
copied = malloc(sizeof(*copied), M_DEVBUF, M_NOWAIT);
|
||||
@ -470,12 +476,12 @@ vmbus_channel_on_offer_internal(void* context)
|
||||
* synchronously
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_offer_rescind(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_offer_rescind(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_rescind_offer* rescind;
|
||||
const hv_vmbus_channel_rescind_offer *rescind;
|
||||
hv_vmbus_channel* channel;
|
||||
|
||||
rescind = (hv_vmbus_channel_rescind_offer*) hdr;
|
||||
rescind = (const hv_vmbus_channel_rescind_offer *)hdr;
|
||||
|
||||
channel = hv_vmbus_g_connection.channels[rescind->child_rel_id];
|
||||
if (channel == NULL)
|
||||
@ -502,7 +508,8 @@ vmbus_channel_on_offer_rescind_internal(void *context)
|
||||
* @brief Invoked when all offers have been delivered.
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_offers_delivered(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_offers_delivered(
|
||||
const hv_vmbus_channel_msg_header *hdr __unused)
|
||||
{
|
||||
|
||||
mtx_lock(&vmbus_chwait_lock);
|
||||
@ -519,14 +526,14 @@ vmbus_channel_on_offers_delivered(hv_vmbus_channel_msg_header* hdr)
|
||||
* response and signal the requesting thread.
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_open_result(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_open_result* result;
|
||||
const hv_vmbus_channel_open_result *result;
|
||||
hv_vmbus_channel_msg_info* msg_info;
|
||||
hv_vmbus_channel_msg_header* requestHeader;
|
||||
hv_vmbus_channel_open_channel* openMsg;
|
||||
|
||||
result = (hv_vmbus_channel_open_result*) hdr;
|
||||
result = (const hv_vmbus_channel_open_result *)hdr;
|
||||
|
||||
/*
|
||||
* Find the open msg, copy the result and signal/unblock the wait event
|
||||
@ -561,14 +568,14 @@ vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr)
|
||||
* response and signal the requesting thread.
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_gpadl_created(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_gpadl_created* gpadl_created;
|
||||
const hv_vmbus_channel_gpadl_created *gpadl_created;
|
||||
hv_vmbus_channel_msg_info* msg_info;
|
||||
hv_vmbus_channel_msg_header* request_header;
|
||||
hv_vmbus_channel_gpadl_header* gpadl_header;
|
||||
|
||||
gpadl_created = (hv_vmbus_channel_gpadl_created*) hdr;
|
||||
gpadl_created = (const hv_vmbus_channel_gpadl_created *)hdr;
|
||||
|
||||
/* Find the establish msg, copy the result and signal/unblock
|
||||
* the wait event
|
||||
@ -603,14 +610,14 @@ vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr)
|
||||
* response and signal the requesting thread
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_gpadl_torndown(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_gpadl_torndown* gpadl_torndown;
|
||||
const hv_vmbus_channel_gpadl_torndown *gpadl_torndown;
|
||||
hv_vmbus_channel_msg_info* msg_info;
|
||||
hv_vmbus_channel_msg_header* requestHeader;
|
||||
hv_vmbus_channel_gpadl_teardown* gpadlTeardown;
|
||||
|
||||
gpadl_torndown = (hv_vmbus_channel_gpadl_torndown*)hdr;
|
||||
gpadl_torndown = (const hv_vmbus_channel_gpadl_torndown *)hdr;
|
||||
|
||||
/*
|
||||
* Find the open msg, copy the result and signal/unblock the
|
||||
@ -648,14 +655,14 @@ vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr)
|
||||
* response and signal the requesting thread.
|
||||
*/
|
||||
static void
|
||||
vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr)
|
||||
vmbus_channel_on_version_response(const hv_vmbus_channel_msg_header *hdr)
|
||||
{
|
||||
hv_vmbus_channel_msg_info* msg_info;
|
||||
hv_vmbus_channel_msg_header* requestHeader;
|
||||
hv_vmbus_channel_initiate_contact* initiate;
|
||||
hv_vmbus_channel_version_response* versionResponse;
|
||||
const hv_vmbus_channel_version_response *versionResponse;
|
||||
|
||||
versionResponse = (hv_vmbus_channel_version_response*)hdr;
|
||||
versionResponse = (const hv_vmbus_channel_version_response *)hdr;
|
||||
|
||||
mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor,
|
||||
@ -841,14 +848,13 @@ vmbus_rel_subchan(struct hv_vmbus_channel **subchan, int subchan_cnt __unused)
|
||||
}
|
||||
|
||||
void
|
||||
vmbus_chan_msgproc(struct vmbus_softc *sc, volatile struct vmbus_message *msg)
|
||||
vmbus_chan_msgproc(struct vmbus_softc *sc, const struct vmbus_message *msg)
|
||||
{
|
||||
const hv_vmbus_channel_msg_table_entry *entry;
|
||||
hv_vmbus_channel_msg_header *hdr;
|
||||
const hv_vmbus_channel_msg_header *hdr;
|
||||
hv_vmbus_channel_msg_type msg_type;
|
||||
|
||||
/* XXX: update messageHandler interface */
|
||||
hdr = __DEVOLATILE(hv_vmbus_channel_msg_header *, msg->msg_data);
|
||||
hdr = (const hv_vmbus_channel_msg_header *)msg->msg_data;
|
||||
msg_type = hdr->message_type;
|
||||
|
||||
if (msg_type >= HV_CHANNEL_MESSAGE_COUNT) {
|
||||
|
@ -86,7 +86,8 @@ vmbus_msg_task(void *xsc, int pending __unused)
|
||||
break;
|
||||
} else if (msg->msg_type == VMBUS_MSGTYPE_CHANNEL) {
|
||||
/* Channel message */
|
||||
vmbus_chan_msgproc(sc, msg);
|
||||
vmbus_chan_msgproc(sc,
|
||||
__DEVOLATILE(const struct vmbus_message *, msg));
|
||||
}
|
||||
|
||||
msg->msg_type = VMBUS_MSGTYPE_NONE;
|
||||
|
@ -102,7 +102,6 @@ void vmbus_handle_intr(struct trapframe *);
|
||||
|
||||
void vmbus_et_intr(struct trapframe *);
|
||||
|
||||
void vmbus_chan_msgproc(struct vmbus_softc *,
|
||||
volatile struct vmbus_message *);
|
||||
void vmbus_chan_msgproc(struct vmbus_softc *, const struct vmbus_message *);
|
||||
|
||||
#endif /* !_VMBUS_VAR_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user