mirror of https://github.com/xemu-project/xemu.git
modules: add modinfo macros
Add macros for module info annotations. Instead of having that module meta-data stored in lists in util/module.c place directly in the module source code. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Jose R. Ziviani <jziviani@suse.de> Message-Id: <20210624103836.2382472-2-kraxel@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7db492a1b6
commit
22524c10c4
|
@ -73,4 +73,65 @@ bool module_load_one(const char *prefix, const char *lib_name, bool mayfail);
|
|||
void module_load_qom_one(const char *type);
|
||||
void module_load_qom_all(void);
|
||||
|
||||
/**
|
||||
* DOC: module info annotation macros
|
||||
*
|
||||
* `scripts/modinfo-collect.py` will collect module info,
|
||||
* using the preprocessor and -DQEMU_MODINFO.
|
||||
*
|
||||
* `scripts/modinfo-generate.py` will create a module meta-data database
|
||||
* from the collected information so qemu knows about module
|
||||
* dependencies and QOM objects implemented by modules.
|
||||
*
|
||||
* See `*.modinfo` and `modinfo.c` in the build directory to check the
|
||||
* script results.
|
||||
*/
|
||||
#ifdef QEMU_MODINFO
|
||||
# define modinfo(kind, value) \
|
||||
MODINFO_START kind value MODINFO_END
|
||||
#else
|
||||
# define modinfo(kind, value)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* module_obj
|
||||
*
|
||||
* @name: QOM type.
|
||||
*
|
||||
* This module implements QOM type @name.
|
||||
*/
|
||||
#define module_obj(name) modinfo(obj, name)
|
||||
|
||||
/**
|
||||
* module_dep
|
||||
*
|
||||
* @name: module name
|
||||
*
|
||||
* This module depends on module @name.
|
||||
*/
|
||||
#define module_dep(name) modinfo(dep, name)
|
||||
|
||||
/**
|
||||
* module_arch
|
||||
*
|
||||
* @name: target architecture
|
||||
*
|
||||
* This module is for target architecture @arch.
|
||||
*
|
||||
* Note that target-dependent modules are tagged automatically, so
|
||||
* this is only needed in case target-independent modules should be
|
||||
* restricted. Use case example: the ccw bus is implemented by s390x
|
||||
* only.
|
||||
*/
|
||||
#define module_arch(name) modinfo(arch, name)
|
||||
|
||||
/**
|
||||
* module_opts
|
||||
*
|
||||
* @name: QemuOpts name
|
||||
*
|
||||
* This module registers QemuOpts @name.
|
||||
*/
|
||||
#define module_opts(name) modinfo(opts, name)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue