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