diff options
Diffstat (limited to 'contrib/qemu/include/qemu/module.h')
| -rw-r--r-- | contrib/qemu/include/qemu/module.h | 40 | 
1 files changed, 40 insertions, 0 deletions
diff --git a/contrib/qemu/include/qemu/module.h b/contrib/qemu/include/qemu/module.h new file mode 100644 index 00000000000..c4ccd571664 --- /dev/null +++ b/contrib/qemu/include/qemu/module.h @@ -0,0 +1,40 @@ +/* + * QEMU Module Infrastructure + * + * Copyright IBM, Corp. 2009 + * + * Authors: + *  Anthony Liguori   <aliguori@us.ibm.com> + * + * This work is licensed under the terms of the GNU GPL, version 2.  See + * the COPYING file in the top-level directory. + * + */ + +#ifndef QEMU_MODULE_H +#define QEMU_MODULE_H + +/* This should not be used directly.  Use block_init etc. instead.  */ +#define module_init(function, type)                                         \ +static void __attribute__((constructor)) do_qemu_init_ ## function(void) {  \ +    register_module_init(function, type);                                   \ +} + +typedef enum { +    MODULE_INIT_BLOCK, +    MODULE_INIT_MACHINE, +    MODULE_INIT_QAPI, +    MODULE_INIT_QOM, +    MODULE_INIT_MAX +} module_init_type; + +#define block_init(function) module_init(function, MODULE_INIT_BLOCK) +#define machine_init(function) module_init(function, MODULE_INIT_MACHINE) +#define qapi_init(function) module_init(function, MODULE_INIT_QAPI) +#define type_init(function) module_init(function, MODULE_INIT_QOM) + +void register_module_init(void (*fn)(void), module_init_type type); + +void module_call_init(module_init_type type); + +#endif  | 
