|  | #include "qemu/osdep.h" | 
|  | #include "qemu/nvdimm-utils.h" | 
|  | #include "hw/mem/nvdimm.h" | 
|  |  | 
|  | static int nvdimm_device_list(Object *obj, void *opaque) | 
|  | { | 
|  | GSList **list = opaque; | 
|  |  | 
|  | if (object_dynamic_cast(obj, TYPE_NVDIMM)) { | 
|  | *list = g_slist_append(*list, DEVICE(obj)); | 
|  | } | 
|  |  | 
|  | object_child_foreach(obj, nvdimm_device_list, opaque); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | /* | 
|  | * inquire NVDIMM devices and link them into the list which is | 
|  | * returned to the caller. | 
|  | * | 
|  | * Note: it is the caller's responsibility to free the list to avoid | 
|  | * memory leak. | 
|  | */ | 
|  | GSList *nvdimm_get_device_list(void) | 
|  | { | 
|  | GSList *list = NULL; | 
|  |  | 
|  | object_child_foreach(qdev_get_machine(), nvdimm_device_list, &list); | 
|  | return list; | 
|  | } |