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