]>
Commit | Line | Data |
---|---|---|
0bfe3ca5 AL |
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) { \ | |
f7897430 | 20 | register_module_init(function, type); \ |
0bfe3ca5 AL |
21 | } |
22 | ||
23 | typedef enum { | |
24 | MODULE_INIT_BLOCK, | |
f80f9ec9 | 25 | MODULE_INIT_MACHINE, |
c7aa841e | 26 | MODULE_INIT_QAPI, |
83f7d43a | 27 | MODULE_INIT_QOM, |
f7897430 | 28 | MODULE_INIT_MAX |
0bfe3ca5 AL |
29 | } module_init_type; |
30 | ||
31 | #define block_init(function) module_init(function, MODULE_INIT_BLOCK) | |
f80f9ec9 | 32 | #define machine_init(function) module_init(function, MODULE_INIT_MACHINE) |
c7aa841e | 33 | #define qapi_init(function) module_init(function, MODULE_INIT_QAPI) |
83f7d43a | 34 | #define type_init(function) module_init(function, MODULE_INIT_QOM) |
0bfe3ca5 AL |
35 | |
36 | void register_module_init(void (*fn)(void), module_init_type type); | |
37 | ||
38 | void module_call_init(module_init_type type); | |
39 | ||
40 | #endif |