Annotate the ESX device driver dummy.
Refactor the udev and hal device driver strcuts to match the
common annotation pattern.
my @srcs;
find({
wanted => sub {
- if (m!$srcdir/.*/\w+_(driver|tmpl)\.c$!) {
+ if (m!$srcdir/.*/\w+_(driver|tmpl|monitor|hal|udev)\.c$!) {
push @srcs, $_ if $_ !~ /vbox_driver\.c/;
}
}, no_chdir => 1}, $srcdir);
my %groups;
my $ingrp;
while (defined($line = <FILE>)) {
- if ($line =~ /struct _(vir\w*Driver)/) {
+ if ($line =~ /struct _(vir\w*(?:Driver|Monitor))/) {
my $grp = $1;
if ($grp ne "virStateDriver" &&
$grp ne "virStreamDriver") {
$groups{$ingrp} = { apis => {}, drivers => {} };
}
} elsif ($ingrp) {
- if ($line =~ /^\s*virDrv(\w+)\s+(\w+);\s*$/) {
+ if ($line =~ /^\s*vir(?:Drv|DevMon)(\w+)\s+(\w+);\s*$/) {
my $field = $2;
my $name = $1;
$api = "vir$name";
} elsif (exists $apis{"virConnect$name"}) {
$api = "virConnect$name";
+ } elsif (exists $apis{"virNode$name"}) {
+ $api = "virNode$name";
} else {
die "driver $name does not have a public API";
}
$line =~ /^\s*(?:static\s+)?$grp\s+NAME\(\w+\)\s*=\s*{/) {
$ingrp = $grp;
$impl = $src;
- $impl =~ s,.*/(\w+?)_((\w+)_)?(\w+)\.c,$1,;
+
+ if ($impl =~ m,.*/node_device_(\w+)\.c,) {
+ $impl = $1;
+ } else {
+ $impl =~ s,.*/(\w+?)_((\w+)_)?(\w+)\.c,$1,;
+ }
+
+ if ($groups{$ingrp}->{drivers}->{$impl}) {
+ die "Group $ingrp already contains $impl";
+ }
+
$groups{$ingrp}->{drivers}->{$impl} = {};
}
}
die "Driver method for $api is NULL in $src" if $meth eq "NULL";
if (!exists($groups{$ingrp}->{apis}->{$api})) {
- die "Found unexpected driver $api in $ingrp\n";
+ die "Found unexpected method $api in $ingrp\n";
}
$groups{$ingrp}->{drivers}->{$impl}->{$api} = $vers;
static virDeviceMonitor esxDeviceMonitor = {
- "ESX", /* name */
- esxDeviceOpen, /* open */
- esxDeviceClose, /* close */
- NULL, /* numOfDevices */
- NULL, /* listDevices */
- NULL, /* deviceLookupByName */
- NULL, /* deviceGetXMLDesc */
- NULL, /* deviceGetParent */
- NULL, /* deviceNumOfCaps */
- NULL, /* deviceListCaps */
- NULL, /* deviceCreateXML */
- NULL, /* deviceDestroy */
+ .name = "ESX",
+ .open = esxDeviceOpen, /* 0.7.6 */
+ .close = esxDeviceClose, /* 0.7.6 */
};
virMutexUnlock(&driver->lock);
}
-static int nodeNumOfDevices(virConnectPtr conn,
- const char *cap,
- unsigned int flags ATTRIBUTE_UNUSED)
+int
+nodeNumOfDevices(virConnectPtr conn,
+ const char *cap,
+ unsigned int flags ATTRIBUTE_UNUSED)
{
virDeviceMonitorStatePtr driver = conn->devMonPrivateData;
int ndevs = 0;
return ndevs;
}
-static int
+int
nodeListDevices(virConnectPtr conn,
const char *cap,
char **const names, int maxnames,
}
-static virNodeDevicePtr nodeDeviceLookupByName(virConnectPtr conn,
- const char *name)
+virNodeDevicePtr
+nodeDeviceLookupByName(virConnectPtr conn, const char *name)
{
virDeviceMonitorStatePtr driver = conn->devMonPrivateData;
virNodeDeviceObjPtr obj;
}
-static char *nodeDeviceGetXMLDesc(virNodeDevicePtr dev,
- unsigned int flags ATTRIBUTE_UNUSED)
+char *
+nodeDeviceGetXMLDesc(virNodeDevicePtr dev,
+ unsigned int flags ATTRIBUTE_UNUSED)
{
virDeviceMonitorStatePtr driver = dev->conn->devMonPrivateData;
virNodeDeviceObjPtr obj;
}
-static char *nodeDeviceGetParent(virNodeDevicePtr dev)
+char *
+nodeDeviceGetParent(virNodeDevicePtr dev)
{
virDeviceMonitorStatePtr driver = dev->conn->devMonPrivateData;
virNodeDeviceObjPtr obj;
}
-static int nodeDeviceNumOfCaps(virNodeDevicePtr dev)
+int
+nodeDeviceNumOfCaps(virNodeDevicePtr dev)
{
virDeviceMonitorStatePtr driver = dev->conn->devMonPrivateData;
virNodeDeviceObjPtr obj;
}
-static int
+int
nodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames)
{
virDeviceMonitorStatePtr driver = dev->conn->devMonPrivateData;
return dev;
}
-static virNodeDevicePtr
+virNodeDevicePtr
nodeDeviceCreateXML(virConnectPtr conn,
const char *xmlDesc,
unsigned int flags ATTRIBUTE_UNUSED)
}
-static int
+int
nodeDeviceDestroy(virNodeDevicePtr dev)
{
int ret = -1;
return ret;
}
-
-void registerCommonNodeFuncs(virDeviceMonitorPtr driver)
-{
- driver->numOfDevices = nodeNumOfDevices;
- driver->listDevices = nodeListDevices;
- driver->deviceLookupByName = nodeDeviceLookupByName;
- driver->deviceGetXMLDesc = nodeDeviceGetXMLDesc;
- driver->deviceGetParent = nodeDeviceGetParent;
- driver->deviceNumOfCaps = nodeDeviceNumOfCaps;
- driver->deviceListCaps = nodeDeviceListCaps;
- driver->deviceCreateXML = nodeDeviceCreateXML;
- driver->deviceDestroy = nodeDeviceDestroy;
-}
-
-
int nodedevRegister(void) {
#if defined(HAVE_HAL) && defined(HAVE_UDEV)
/* Register only one of these two - they conflict */
void nodeDeviceLock(virDeviceMonitorStatePtr driver);
void nodeDeviceUnlock(virDeviceMonitorStatePtr driver);
-void registerCommonNodeFuncs(virDeviceMonitorPtr mon);
-
int nodedevRegister(void);
# ifdef __linux__
# endif /* __linux__ */
+int nodeNumOfDevices(virConnectPtr conn, const char *cap, unsigned int flags);
+int nodeListDevices(virConnectPtr conn, const char *cap, char **const names,
+ int maxnames, unsigned int flags);
+virNodeDevicePtr nodeDeviceLookupByName(virConnectPtr conn, const char *name);
+char *nodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags);
+char *nodeDeviceGetParent(virNodeDevicePtr dev);
+int nodeDeviceNumOfCaps(virNodeDevicePtr dev);
+int nodeDeviceListCaps(virNodeDevicePtr dev, char **const names, int maxnames);
+virNodeDevicePtr nodeDeviceCreateXML(virConnectPtr conn,
+ const char *xmlDesc, unsigned int flags);
+int nodeDeviceDestroy(virNodeDevicePtr dev);
+
#endif /* __VIR_NODE_DEVICE_H__ */
static virDeviceMonitor halDeviceMonitor = {
.name = "halDeviceMonitor",
- .open = halNodeDrvOpen,
- .close = halNodeDrvClose,
+ .open = halNodeDrvOpen, /* 0.5.0 */
+ .close = halNodeDrvClose, /* 0.5.0 */
+ .numOfDevices = nodeNumOfDevices, /* 0.5.0 */
+ .listDevices = nodeListDevices, /* 0.5.0 */
+ .deviceLookupByName = nodeDeviceLookupByName, /* 0.5.0 */
+ .deviceGetXMLDesc = nodeDeviceGetXMLDesc, /* 0.5.0 */
+ .deviceGetParent = nodeDeviceGetParent, /* 0.5.0 */
+ .deviceNumOfCaps = nodeDeviceNumOfCaps, /* 0.5.0 */
+ .deviceListCaps = nodeDeviceListCaps, /* 0.5.0 */
+ .deviceCreateXML = nodeDeviceCreateXML, /* 0.6.5 */
+ .deviceDestroy = nodeDeviceDestroy, /* 0.6.5 */
};
static virStateDriver halStateDriver = {
.name = "HAL",
- .initialize = halDeviceMonitorStartup,
- .cleanup = halDeviceMonitorShutdown,
- .reload = halDeviceMonitorReload,
- .active = halDeviceMonitorActive,
+ .initialize = halDeviceMonitorStartup, /* 0.5.0 */
+ .cleanup = halDeviceMonitorShutdown, /* 0.5.0 */
+ .reload = halDeviceMonitorReload, /* 0.5.0 */
+ .active = halDeviceMonitorActive, /* 0.5.0 */
};
int halNodeRegister(void)
{
- registerCommonNodeFuncs(&halDeviceMonitor);
if (virRegisterDeviceMonitor(&halDeviceMonitor) < 0)
return -1;
return virRegisterStateDriver(&halStateDriver);
static virDeviceMonitor udevDeviceMonitor = {
.name = "udevDeviceMonitor",
- .open = udevNodeDrvOpen,
- .close = udevNodeDrvClose,
+ .open = udevNodeDrvOpen, /* 0.7.3 */
+ .close = udevNodeDrvClose, /* 0.7.3 */
+ .numOfDevices = nodeNumOfDevices, /* 0.7.3 */
+ .listDevices = nodeListDevices, /* 0.7.3 */
+ .deviceLookupByName = nodeDeviceLookupByName, /* 0.7.3 */
+ .deviceGetXMLDesc = nodeDeviceGetXMLDesc, /* 0.7.3 */
+ .deviceGetParent = nodeDeviceGetParent, /* 0.7.3 */
+ .deviceNumOfCaps = nodeDeviceNumOfCaps, /* 0.7.3 */
+ .deviceListCaps = nodeDeviceListCaps, /* 0.7.3 */
+ .deviceCreateXML = nodeDeviceCreateXML, /* 0.7.3 */
+ .deviceDestroy = nodeDeviceDestroy, /* 0.7.3 */
};
static virStateDriver udevStateDriver = {
.name = "udev",
- .initialize = udevDeviceMonitorStartup,
- .cleanup = udevDeviceMonitorShutdown,
- .reload = udevDeviceMonitorReload,
- .active = udevDeviceMonitorActive,
+ .initialize = udevDeviceMonitorStartup, /* 0.7.3 */
+ .cleanup = udevDeviceMonitorShutdown, /* 0.7.3 */
+ .reload = udevDeviceMonitorReload, /* 0.7.3 */
+ .active = udevDeviceMonitorActive, /* 0.7.3 */
};
int udevNodeRegister(void)
{
VIR_DEBUG("Registering udev node device backend");
- registerCommonNodeFuncs(&udevDeviceMonitor);
if (virRegisterDeviceMonitor(&udevDeviceMonitor) < 0) {
return -1;
}