| #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; | 
 | } |