Il 15/10/2012 21:34, Anthony Liguori ha scritto:
> +static char *chardev_file_get_path(Object *obj, Error **errp)
> +{
> + CharDriverState *chr = CHARDEV(obj);
> + FDCharDriver *s = chr->opaque;
> +
> + return s->path ? g_strdup(s->path) : g_strdup("");
> +}
> +
> +static void chardev_file_set_path(Object *obj, const char *value, Error
> **errp)
> +{
> + CharDriverState *chr = CHARDEV(obj);
> + FDCharDriver *s = chr->opaque;
> +
> + if (chr->realized) {
> + error_set(errp, QERR_PERMISSION_DENIED);
> + return;
> + }
> +
> + if (s->path) {
> + g_free(s->path);
> + }
> +
> + s->path = g_strdup(value);
> +}
> +
> +static void chardev_file_initfn(Object *obj)
> +{
> + CharDriverState *chr = CHARDEV(obj);
> +
> + object_property_add_str(obj, "path", chardev_file_get_path,
> chardev_file_set_path, NULL);
> +#ifndef _WIN32
> + chr->opaque = CHARDEV_FILE(obj);
> +#endif
> +}
> +
IMHO this really really calls for pushing static properties and realized
up to Object...
Paolo