]>
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 | ||
39 | const char *opt_name; | |
40 | const char *name; | |
f6a1ef64 | 41 | int (*init_machine)(MachineState *ms); |
7a64c17f | 42 | void (*setup_post)(MachineState *ms, AccelState *accel); |
b14a0b74 | 43 | bool *allowed; |
9ffea096 PX |
44 | /* |
45 | * Array of global properties that would be applied when specific | |
46 | * accelerator is chosen. It works like MachineClass.compat_props | |
47 | * but it's for accelerators not machines. Accelerator-provided | |
48 | * global properties may be overridden by machine-type | |
49 | * compat_props or user-provided global properties. | |
50 | */ | |
ea9ce893 | 51 | GPtrArray *compat_props; |
b14a0b74 EH |
52 | } AccelClass; |
53 | ||
54 | #define TYPE_ACCEL "accel" | |
55 | ||
56 | #define ACCEL_CLASS_SUFFIX "-" TYPE_ACCEL | |
57 | #define ACCEL_CLASS_NAME(a) (a ACCEL_CLASS_SUFFIX) | |
58 | ||
59 | #define ACCEL_CLASS(klass) \ | |
60 | OBJECT_CLASS_CHECK(AccelClass, (klass), TYPE_ACCEL) | |
61 | #define ACCEL(obj) \ | |
62 | OBJECT_CHECK(AccelState, (obj), TYPE_ACCEL) | |
63 | #define ACCEL_GET_CLASS(obj) \ | |
64 | OBJECT_GET_CLASS(AccelClass, (obj), TYPE_ACCEL) | |
a1a9cb0c | 65 | |
8b3ae692 | 66 | extern unsigned long tcg_tb_size; |
a1a9cb0c | 67 | |
98e56ae6 | 68 | void configure_accelerator(MachineState *ms, const char *progname); |
7a64c17f IJ |
69 | /* Called just before os_setup_post (ie just before drop OS privs) */ |
70 | void accel_setup_post(MachineState *ms); | |
a1a9cb0c EH |
71 | |
72 | #endif |