[Accel-config] Re: [PATCH v1 04/11] accel-config: Add mdev json support
Jiang, Dave <dave.jiang at intel.com>
| Newsgroups | dev.linux.lists.accel-config |
|---|---|
| Message-ID | <[email protected]> |
> -----Original Message-----
> From: ramesh.thomas(a)intel.com <ramesh.thomas(a)intel.com>
> Sent: Wednesday, December 2, 2020 12:31 PM
> To: accel-config(a)lists.01.org
> Cc: Thomas, Ramesh <ramesh.thomas(a)intel.com>; Luck, Tony
> <tony.luck(a)intel.com>; Jiang, Dave <dave.jiang(a)intel.com>
> Subject: [PATCH v1 04/11] accel-config: Add mdev json support
>
> From: Ramesh Thomas <ramesh.thomas(a)intel.com>
>
> Load the mdevs stored in device contexts into json objects as array of mdev
> structures containing uuid and types
>
> "list" command will list the mdevs structures under each device
>
> Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
Reviewed-by: Dave Jiang <dave.jiang(a)intel.com>
> ---
> util/json.c | 38 ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/util/json.c b/util/json.c
> index 6f4b4d1..8ff89d0 100644
> --- a/util/json.c
> +++ b/util/json.c
> @@ -153,6 +153,12 @@ struct json_object *util_device_to_json(struct
> accfg_device *device,
> unsigned long ulong_val;
> unsigned long long ullong_val;
> bool new_bool;
> + struct accfg_device_mdev *mdev;
> + struct json_object *json_uuid;
> + struct json_object *json_mtype;
> + char uuid_string[UUID_STR_LEN];
> + int mdev_found = 0;
> + struct json_object *json_mdev;
>
> if (!jdevice)
> return NULL;
> @@ -339,6 +345,38 @@ struct json_object *util_device_to_json(struct
> accfg_device *device,
> goto err;
> json_object_object_add(jdevice, "clients", jobj);
>
> + jobj = json_object_new_array();
> + accfg_device_mdev_foreach(device, mdev) {
> + uuid_t uuid;
> + const char *mdev_type;
> +
> + accfg_mdev_get_uuid(mdev, uuid);
> + uuid_unparse(uuid, uuid_string);
> + json_uuid = json_object_new_string(uuid_string);
> + if (!json_uuid)
> + break;
> + mdev_type =
> accfg_mdev_basenames[accfg_mdev_get_type(mdev)];
> + json_mtype = json_object_new_string(mdev_type);
> + if (!json_mtype) {
> + json_object_put(json_uuid);
> + break;
> + }
> + json_mdev = json_object_new_object();
> + if (!json_mdev) {
> + json_object_put(json_uuid);
> + json_object_put(json_mtype);
> + break;
> + }
> + json_object_object_add(json_mdev, "uuid", json_uuid);
> + json_object_object_add(json_mdev, "type", json_mtype);
> + json_object_array_add(jobj, json_mdev);
> + mdev_found++;
> + }
> + if (mdev_found)
> + json_object_object_add(jdevice, "mdevs", jobj);
> + else
> + json_object_put(jobj);
> +
> free(error);
> return jdevice;
> err:
> --
> 2.26.2