Revision 4e4fa398
b/hw/qdev-properties.c | ||
---|---|---|
885 | 885 |
.set = set_generic, |
886 | 886 |
}; |
887 | 887 |
|
888 |
|
|
889 |
/* --- lost tick policy --- */ |
|
890 |
|
|
891 |
static const struct { |
|
892 |
const char *name; |
|
893 |
LostTickPolicy code; |
|
894 |
} lost_tick_policy_table[] = { |
|
895 |
{ .name = "discard", .code = LOST_TICK_DISCARD }, |
|
896 |
{ .name = "delay", .code = LOST_TICK_DELAY }, |
|
897 |
{ .name = "merge", .code = LOST_TICK_MERGE }, |
|
898 |
{ .name = "slew", .code = LOST_TICK_SLEW }, |
|
899 |
}; |
|
900 |
|
|
901 |
static int parse_lost_tick_policy(DeviceState *dev, Property *prop, |
|
902 |
const char *str) |
|
903 |
{ |
|
904 |
LostTickPolicy *ptr = qdev_get_prop_ptr(dev, prop); |
|
905 |
int i; |
|
906 |
|
|
907 |
for (i = 0; i < ARRAY_SIZE(lost_tick_policy_table); i++) { |
|
908 |
if (!strcasecmp(str, lost_tick_policy_table[i].name)) { |
|
909 |
*ptr = lost_tick_policy_table[i].code; |
|
910 |
break; |
|
911 |
} |
|
912 |
} |
|
913 |
if (i == ARRAY_SIZE(lost_tick_policy_table)) { |
|
914 |
return -EINVAL; |
|
915 |
} |
|
916 |
return 0; |
|
917 |
} |
|
918 |
|
|
919 |
static int print_lost_tick_policy(DeviceState *dev, Property *prop, char *dest, |
|
920 |
size_t len) |
|
921 |
{ |
|
922 |
LostTickPolicy *ptr = qdev_get_prop_ptr(dev, prop); |
|
923 |
|
|
924 |
return snprintf(dest, len, "%s", lost_tick_policy_table[*ptr].name); |
|
925 |
} |
|
926 |
|
|
927 |
PropertyInfo qdev_prop_losttickpolicy = { |
|
928 |
.name = "lost_tick_policy", |
|
929 |
.type = PROP_TYPE_LOSTTICKPOLICY, |
|
930 |
.size = sizeof(LostTickPolicy), |
|
931 |
.parse = parse_lost_tick_policy, |
|
932 |
.print = print_lost_tick_policy, |
|
933 |
.get = get_generic, |
|
934 |
.set = set_generic, |
|
935 |
}; |
|
936 |
|
|
888 | 937 |
/* --- pci address --- */ |
889 | 938 |
|
890 | 939 |
/* |
... | ... | |
1127 | 1176 |
qdev_prop_set(dev, name, value, PROP_TYPE_MACADDR); |
1128 | 1177 |
} |
1129 | 1178 |
|
1179 |
void qdev_prop_set_losttickpolicy(DeviceState *dev, const char *name, |
|
1180 |
LostTickPolicy *value) |
|
1181 |
{ |
|
1182 |
qdev_prop_set(dev, name, value, PROP_TYPE_LOSTTICKPOLICY); |
|
1183 |
} |
|
1184 |
|
|
1130 | 1185 |
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value) |
1131 | 1186 |
{ |
1132 | 1187 |
qdev_prop_set(dev, name, &value, PROP_TYPE_PTR); |
b/hw/qdev.h | ||
---|---|---|
158 | 158 |
PROP_TYPE_UINT64, |
159 | 159 |
PROP_TYPE_TADDR, |
160 | 160 |
PROP_TYPE_MACADDR, |
161 |
PROP_TYPE_LOSTTICKPOLICY, |
|
161 | 162 |
PROP_TYPE_DRIVE, |
162 | 163 |
PROP_TYPE_CHR, |
163 | 164 |
PROP_TYPE_STRING, |
... | ... | |
307 | 308 |
extern PropertyInfo qdev_prop_chr; |
308 | 309 |
extern PropertyInfo qdev_prop_ptr; |
309 | 310 |
extern PropertyInfo qdev_prop_macaddr; |
311 |
extern PropertyInfo qdev_prop_losttickpolicy; |
|
310 | 312 |
extern PropertyInfo qdev_prop_drive; |
311 | 313 |
extern PropertyInfo qdev_prop_netdev; |
312 | 314 |
extern PropertyInfo qdev_prop_vlan; |
... | ... | |
367 | 369 |
DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockDriverState *) |
368 | 370 |
#define DEFINE_PROP_MACADDR(_n, _s, _f) \ |
369 | 371 |
DEFINE_PROP(_n, _s, _f, qdev_prop_macaddr, MACAddr) |
372 |
#define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \ |
|
373 |
DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_losttickpolicy, \ |
|
374 |
LostTickPolicy) |
|
370 | 375 |
|
371 | 376 |
#define DEFINE_PROP_END_OF_LIST() \ |
372 | 377 |
{} |
... | ... | |
389 | 394 |
int qdev_prop_set_drive(DeviceState *dev, const char *name, BlockDriverState *value) QEMU_WARN_UNUSED_RESULT; |
390 | 395 |
void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name, BlockDriverState *value); |
391 | 396 |
void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value); |
397 |
void qdev_prop_set_losttickpolicy(DeviceState *dev, const char *name, |
|
398 |
LostTickPolicy *value); |
|
392 | 399 |
/* FIXME: Remove opaque pointer properties. */ |
393 | 400 |
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value); |
394 | 401 |
void qdev_prop_set_defaults(DeviceState *dev, Property *props); |
b/qemu-common.h | ||
---|---|---|
250 | 250 |
|
251 | 251 |
typedef uint64_t pcibus_t; |
252 | 252 |
|
253 |
typedef enum LostTickPolicy { |
|
254 |
LOST_TICK_DISCARD, |
|
255 |
LOST_TICK_DELAY, |
|
256 |
LOST_TICK_MERGE, |
|
257 |
LOST_TICK_SLEW, |
|
258 |
} LostTickPolicy; |
|
259 |
|
|
253 | 260 |
void tcg_exec_init(unsigned long tb_size); |
254 | 261 |
bool tcg_enabled(void); |
255 | 262 |
|
Also available in: Unified diff