mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
qom: move user_creatable_add_opts logic to vl.c and QAPIfy it
Emulators are currently using OptsVisitor (via user_creatable_add_opts) to parse the -object command line option. This has one extra feature, compared to keyval, which is automatic conversion of integers to lists as well as support for lists as repeated options: -object memory-backend-ram,id=pc.ram,size=1048576000,host-nodes=0,policy=bind So we cannot replace OptsVisitor with keyval right now. Still, this patch moves the user_creatable_add_opts logic to vl.c since it is not needed anywhere else, and makes it go through user_creatable_add_qapi. In order to minimize code changes, the predicate still takes a string. This can be changed later to use the ObjectType QAPI enum directly. Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20210312173547.1283477-3-pbonzini@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
53c9956d8b
commit
bc2f4fcb1d
3 changed files with 57 additions and 119 deletions
|
@ -94,56 +94,9 @@ Object *user_creatable_add_type(const char *type, const char *id,
|
|||
*
|
||||
* Create an instance of the user creatable object according to the
|
||||
* options passed in @opts as described in the QAPI schema documentation.
|
||||
*
|
||||
* Returns: the newly created object or NULL on error
|
||||
*/
|
||||
void user_creatable_add_qapi(ObjectOptions *options, Error **errp);
|
||||
|
||||
/**
|
||||
* user_creatable_add_opts:
|
||||
* @opts: the object definition
|
||||
* @errp: if an error occurs, a pointer to an area to store the error
|
||||
*
|
||||
* Create an instance of the user creatable object whose type
|
||||
* is defined in @opts by the 'qom-type' option, placing it
|
||||
* in the object composition tree with name provided by the
|
||||
* 'id' field. The remaining options in @opts are used to
|
||||
* initialize the object properties.
|
||||
*
|
||||
* Returns: the newly created object or NULL on error
|
||||
*/
|
||||
Object *user_creatable_add_opts(QemuOpts *opts, Error **errp);
|
||||
|
||||
|
||||
/**
|
||||
* user_creatable_add_opts_predicate:
|
||||
* @type: the QOM type to be added
|
||||
*
|
||||
* A callback function to determine whether an object
|
||||
* of type @type should be created. Instances of this
|
||||
* callback should be passed to user_creatable_add_opts_foreach
|
||||
*/
|
||||
typedef bool (*user_creatable_add_opts_predicate)(const char *type);
|
||||
|
||||
/**
|
||||
* user_creatable_add_opts_foreach:
|
||||
* @opaque: a user_creatable_add_opts_predicate callback or NULL
|
||||
* @opts: options to create
|
||||
* @errp: unused
|
||||
*
|
||||
* An iterator callback to be used in conjunction with
|
||||
* the qemu_opts_foreach() method for creating a list of
|
||||
* objects from a set of QemuOpts
|
||||
*
|
||||
* The @opaque parameter can be passed a user_creatable_add_opts_predicate
|
||||
* callback to filter which types of object are created during iteration.
|
||||
* When it fails, report the error.
|
||||
*
|
||||
* Returns: 0 on success, -1 when an error was reported.
|
||||
*/
|
||||
int user_creatable_add_opts_foreach(void *opaque,
|
||||
QemuOpts *opts, Error **errp);
|
||||
|
||||
/**
|
||||
* user_creatable_parse_str:
|
||||
* @optarg: the object definition string as passed on the command line
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue