Revision 4e4fa398 hw/qdev-properties.c
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); |
Also available in: Unified diff