diff options
Diffstat (limited to 'module.h')
-rw-r--r-- | module.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/module.h b/module.h new file mode 100644 index 0000000000..cd368b1a91 --- /dev/null +++ b/module.h @@ -0,0 +1,35 @@ +/* + * 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_DEVICE +} module_init_type; + +#define block_init(function) module_init(function, MODULE_INIT_BLOCK) +#define device_init(function) module_init(function, MODULE_INIT_DEVICE) + +void register_module_init(void (*fn)(void), module_init_type type); + +void module_call_init(module_init_type type); + +#endif |