]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * QEMU Module Infrastructure | |
3 | * | |
4 | * Copyright IBM, Corp. 2009 | |
5 | * | |
6 | * Authors: | |
7 | * Anthony Liguori <[email protected]> | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2. See | |
10 | * the COPYING file in the top-level directory. | |
11 | * | |
12 | */ | |
13 | ||
14 | #ifndef QEMU_MODULE_H | |
15 | #define QEMU_MODULE_H | |
16 | ||
17 | /* This should not be used directly. Use block_init etc. instead. */ | |
18 | #define module_init(function, type) \ | |
19 | static void __attribute__((constructor)) do_qemu_init_ ## function(void) { \ | |
20 | register_module_init(function, type); \ | |
21 | } | |
22 | ||
23 | typedef enum { | |
24 | MODULE_INIT_BLOCK, | |
25 | MODULE_INIT_DEVICE, | |
26 | MODULE_INIT_MACHINE, | |
27 | MODULE_INIT_MAX | |
28 | } module_init_type; | |
29 | ||
30 | #define block_init(function) module_init(function, MODULE_INIT_BLOCK) | |
31 | #define device_init(function) module_init(function, MODULE_INIT_DEVICE) | |
32 | #define machine_init(function) module_init(function, MODULE_INIT_MACHINE) | |
33 | ||
34 | void register_module_init(void (*fn)(void), module_init_type type); | |
35 | ||
36 | void module_call_init(module_init_type type); | |
37 | ||
38 | #endif |