hyperv/ic: Pass the channel callback to hv_util_attach()
The saved channel callback in util softc is actually never used. MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D7424
This commit is contained in:
parent
9b6306f287
commit
f077729dbd
@ -109,11 +109,7 @@ hv_heartbeat_probe(device_t dev)
|
||||
static int
|
||||
hv_heartbeat_attach(device_t dev)
|
||||
{
|
||||
hv_util_sc *softc = (hv_util_sc*)device_get_softc(dev);
|
||||
|
||||
softc->callback = hv_heartbeat_cb;
|
||||
|
||||
return hv_util_attach(dev);
|
||||
return hv_util_attach(dev, hv_heartbeat_cb);
|
||||
}
|
||||
|
||||
static device_method_t heartbeat_methods[] = {
|
||||
|
@ -892,7 +892,6 @@ hv_kvp_attach(device_t dev)
|
||||
|
||||
hv_kvp_sc *sc = (hv_kvp_sc*)device_get_softc(dev);
|
||||
|
||||
sc->util_sc.callback = hv_kvp_callback;
|
||||
sc->dev = dev;
|
||||
sema_init(&sc->dev_sema, 0, "hv_kvp device semaphore");
|
||||
mtx_init(&sc->pending_mutex, "hv-kvp pending mutex",
|
||||
@ -920,7 +919,7 @@ hv_kvp_attach(device_t dev)
|
||||
return (error);
|
||||
sc->hv_kvp_dev->si_drv1 = sc;
|
||||
|
||||
return hv_util_attach(dev);
|
||||
return hv_util_attach(dev, hv_kvp_callback);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -131,11 +131,7 @@ hv_shutdown_probe(device_t dev)
|
||||
static int
|
||||
hv_shutdown_attach(device_t dev)
|
||||
{
|
||||
hv_util_sc *softc = (hv_util_sc*)device_get_softc(dev);
|
||||
|
||||
softc->callback = hv_shutdown_cb;
|
||||
|
||||
return hv_util_attach(dev);
|
||||
return hv_util_attach(dev, hv_shutdown_cb);
|
||||
}
|
||||
|
||||
static device_method_t shutdown_methods[] = {
|
||||
|
@ -189,18 +189,16 @@ hv_timesync_attach(device_t dev)
|
||||
{
|
||||
hv_timesync_sc *softc = device_get_softc(dev);
|
||||
|
||||
softc->util_sc.callback = hv_timesync_cb;
|
||||
TASK_INIT(&softc->task, 1, hv_set_host_time, softc);
|
||||
|
||||
return hv_util_attach(dev);
|
||||
return hv_util_attach(dev, hv_timesync_cb);
|
||||
}
|
||||
|
||||
static int
|
||||
hv_timesync_detach(device_t dev)
|
||||
{
|
||||
hv_timesync_sc *softc = device_get_softc(dev);
|
||||
taskqueue_drain(taskqueue_thread, &softc->task);
|
||||
|
||||
taskqueue_drain(taskqueue_thread, &softc->task);
|
||||
return hv_util_detach(dev);
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ hv_negotiate_version(struct hv_vmbus_icmsg_hdr *icmsghdrp, uint8_t *buf)
|
||||
}
|
||||
|
||||
int
|
||||
hv_util_attach(device_t dev)
|
||||
hv_util_attach(device_t dev, vmbus_chan_callback_t cb)
|
||||
{
|
||||
struct hv_util_sc *sc = device_get_softc(dev);
|
||||
struct vmbus_channel *chan = vmbus_get_channel(dev);
|
||||
@ -95,7 +95,7 @@ hv_util_attach(device_t dev)
|
||||
vmbus_chan_set_readbatch(chan, false);
|
||||
|
||||
error = vmbus_chan_open(chan, VMBUS_IC_BRSIZE, VMBUS_IC_BRSIZE, NULL, 0,
|
||||
sc->callback, sc);
|
||||
cb, sc);
|
||||
if (error) {
|
||||
free(sc->receive_buffer, M_DEVBUF);
|
||||
return (error);
|
||||
|
@ -31,22 +31,20 @@
|
||||
#ifndef _HVUTIL_H_
|
||||
#define _HVUTIL_H_
|
||||
|
||||
#include <dev/hyperv/include/vmbus.h>
|
||||
|
||||
/**
|
||||
* hv_util related structures
|
||||
*
|
||||
*/
|
||||
typedef struct hv_util_sc {
|
||||
/*
|
||||
* function to process Hyper-V messages
|
||||
*/
|
||||
void (*callback)(struct vmbus_channel *, void *);
|
||||
uint8_t *receive_buffer;
|
||||
int ic_buflen;
|
||||
} hv_util_sc;
|
||||
|
||||
void hv_negotiate_version(struct hv_vmbus_icmsg_hdr *icmsghdrp, uint8_t *buf);
|
||||
|
||||
int hv_util_attach(device_t dev);
|
||||
int hv_util_attach(device_t dev, vmbus_chan_callback_t cb);
|
||||
int hv_util_detach(device_t dev);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user