nodedev: driver: Introduce internal mdevctl commands enum

This is not a 1:1 mapping to mdevctl commands because mdevctl doesn't
support a separate 'create' command. mdevctl uses 'start' for both
starting a pre-defined device as well as for creating and starting a new
transient device. The libvirt code will be more readable if we treat
these as separate commands. When we need to actually execute mdevctl,
the 'create' command will be translated into the appropriate 'mdevctl
start' command.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
Erik Skultety 2021-03-31 15:20:50 +02:00 committed by Jonathon Jongsma
parent 123ea7d51c
commit 92fdc1f0cb
3 changed files with 28 additions and 10 deletions

View File

@ -50,6 +50,13 @@ VIR_LOG_INIT("node_device.node_device_driver");
virNodeDeviceDriverState *driver; virNodeDeviceDriverState *driver;
VIR_ENUM_IMPL(virMdevctlCommand,
MDEVCTL_CMD_LAST,
"start", "stop", "define", "undefine", "create"
);
virDrvOpenStatus virDrvOpenStatus
nodeConnectOpen(virConnectPtr conn, nodeConnectOpen(virConnectPtr conn,
virConnectAuthPtr auth G_GNUC_UNUSED, virConnectAuthPtr auth G_GNUC_UNUSED,

View File

@ -33,6 +33,25 @@ int
udevNodeRegister(void); udevNodeRegister(void);
#endif #endif
typedef enum {
MDEVCTL_CMD_START,
MDEVCTL_CMD_STOP,
MDEVCTL_CMD_DEFINE,
MDEVCTL_CMD_UNDEFINE,
/* mdevctl actually doesn't have a 'create' command, it will be replaced
* with 'start' eventually in nodeDeviceGetMdevctlCommand, but this clear
* separation makes our code more readable in terms of knowing when we're
* starting a defined device and when we're creating a transient one */
MDEVCTL_CMD_CREATE,
MDEVCTL_CMD_LAST,
} virMdevctlCommand;
VIR_ENUM_DECL(virMdevctlCommand);
void void
nodeDeviceLock(void); nodeDeviceLock(void);

View File

@ -10,19 +10,11 @@
#define VIR_FROM_THIS VIR_FROM_NODEDEV #define VIR_FROM_THIS VIR_FROM_NODEDEV
typedef enum {
MDEVCTL_CMD_START,
MDEVCTL_CMD_STOP,
MDEVCTL_CMD_DEFINE,
MDEVCTL_CMD_UNDEFINE,
MDEVCTL_CMD_CREATE,
} MdevctlCmd;
struct startTestInfo { struct startTestInfo {
const char *virt_type; const char *virt_type;
int create; int create;
const char *filename; const char *filename;
MdevctlCmd command; virMdevctlCommand command;
}; };
/* capture stdin passed to command */ /* capture stdin passed to command */
@ -126,7 +118,7 @@ testMdevctlCreateOrDefineHelper(const void *data)
typedef virCommand* (*GetStopUndefineCmdFunc)(const char *uuid, char **errbuf); typedef virCommand* (*GetStopUndefineCmdFunc)(const char *uuid, char **errbuf);
struct UuidCommandTestInfo { struct UuidCommandTestInfo {
const char *filename; const char *filename;
MdevctlCmd command; virMdevctlCommand command;
}; };
static int static int