]>
Commit | Line | Data |
---|---|---|
a1a9cb0c EH |
1 | /* QEMU accelerator interfaces |
2 | * | |
3 | * Copyright (c) 2014 Red Hat Inc | |
4 | * | |
5 | * Permission is hereby granted, free of charge, to any person obtaining a copy | |
6 | * of this software and associated documentation files (the "Software"), to deal | |
7 | * in the Software without restriction, including without limitation the rights | |
8 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
9 | * copies of the Software, and to permit persons to whom the Software is | |
10 | * furnished to do so, subject to the following conditions: | |
11 | * | |
12 | * The above copyright notice and this permission notice shall be included in | |
13 | * all copies or substantial portions of the Software. | |
14 | * | |
15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
17 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |
18 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
19 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
20 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
21 | * THE SOFTWARE. | |
22 | */ | |
23 | #ifndef HW_ACCEL_H | |
24 | #define HW_ACCEL_H | |
25 | ||
b14a0b74 | 26 | #include "qom/object.h" |
9ffea096 | 27 | #include "hw/qdev-properties.h" |
b14a0b74 EH |
28 | |
29 | typedef struct AccelState { | |
30 | /*< private >*/ | |
31 | Object parent_obj; | |
32 | } AccelState; | |
33 | ||
34 | typedef struct AccelClass { | |
35 | /*< private >*/ | |
36 | ObjectClass parent_class; | |
37 | /*< public >*/ | |
38 | ||
b14a0b74 | 39 | const char *name; |
f6a1ef64 | 40 | int (*init_machine)(MachineState *ms); |
7a64c17f | 41 | void (*setup_post)(MachineState *ms, AccelState *accel); |
b14a0b74 | 42 | bool *allowed; |
9ffea096 PX |
43 | /* |
44 | * Array of global properties that would be applied when specific | |
45 | * accelerator is chosen. It works like MachineClass.compat_props | |
46 | * but it's for accelerators not machines. Accelerator-provided | |
47 | * global properties may be overridden by machine-type | |
48 | * compat_props or user-provided global properties. | |
49 | */ | |
ea9ce893 | 50 | GPtrArray *compat_props; |
b14a0b74 EH |
51 | } AccelClass; |
52 | ||
53 | #define TYPE_ACCEL "accel" | |
54 | ||
55 | #define ACCEL_CLASS_SUFFIX "-" TYPE_ACCEL | |
56 | #define ACCEL_CLASS_NAME(a) (a ACCEL_CLASS_SUFFIX) | |
57 | ||
58 | #define ACCEL_CLASS(klass) \ | |
59 | OBJECT_CLASS_CHECK(AccelClass, (klass), TYPE_ACCEL) | |
60 | #define ACCEL(obj) \ | |
61 | OBJECT_CHECK(AccelState, (obj), TYPE_ACCEL) | |
62 | #define ACCEL_GET_CLASS(obj) \ | |
63 | OBJECT_GET_CLASS(AccelClass, (obj), TYPE_ACCEL) | |
a1a9cb0c | 64 | |
8b3ae692 | 65 | extern unsigned long tcg_tb_size; |
a1a9cb0c | 66 | |
98e56ae6 | 67 | void configure_accelerator(MachineState *ms, const char *progname); |
7a64c17f IJ |
68 | /* Called just before os_setup_post (ie just before drop OS privs) */ |
69 | void accel_setup_post(MachineState *ms); | |
a1a9cb0c EH |
70 | |
71 | #endif |