xref: /qemu/include/hw/core/resetcontainer.h (revision a8b5c10c7147ebc992de12fdc3f25a219f5c742f)
14c046ce3SPeter Maydell /*
24c046ce3SPeter Maydell  * Reset container
34c046ce3SPeter Maydell  *
44c046ce3SPeter Maydell  * Copyright (c) 2024 Linaro, Ltd
54c046ce3SPeter Maydell  *
64c046ce3SPeter Maydell  * This work is licensed under the terms of the GNU GPL, version 2 or later.
74c046ce3SPeter Maydell  * See the COPYING file in the top-level directory.
84c046ce3SPeter Maydell  */
94c046ce3SPeter Maydell 
104c046ce3SPeter Maydell #ifndef HW_RESETCONTAINER_H
114c046ce3SPeter Maydell #define HW_RESETCONTAINER_H
124c046ce3SPeter Maydell 
134c046ce3SPeter Maydell /*
144c046ce3SPeter Maydell  * The "reset container" is an object which implements the Resettable
154c046ce3SPeter Maydell  * interface. It contains a list of arbitrary other objects which also
164c046ce3SPeter Maydell  * implement Resettable. Resetting the reset container resets all the
174c046ce3SPeter Maydell  * objects in it.
184c046ce3SPeter Maydell  */
194c046ce3SPeter Maydell 
204c046ce3SPeter Maydell #include "qom/object.h"
214c046ce3SPeter Maydell 
224c046ce3SPeter Maydell #define TYPE_RESETTABLE_CONTAINER "resettable-container"
23*17612f97SZhao Liu OBJECT_DECLARE_SIMPLE_TYPE(ResettableContainer, RESETTABLE_CONTAINER)
244c046ce3SPeter Maydell 
254c046ce3SPeter Maydell /**
264c046ce3SPeter Maydell  * resettable_container_add: Add a resettable object to the container
274c046ce3SPeter Maydell  * @rc: container
284c046ce3SPeter Maydell  * @obj: object to add to the container
294c046ce3SPeter Maydell  *
304c046ce3SPeter Maydell  * Add @obj to the ResettableContainer @rc. @obj must implement the
314c046ce3SPeter Maydell  * Resettable interface.
324c046ce3SPeter Maydell  *
334c046ce3SPeter Maydell  * When @rc is reset, it will reset every object that has been added
344c046ce3SPeter Maydell  * to it, in the order they were added.
354c046ce3SPeter Maydell  */
364c046ce3SPeter Maydell void resettable_container_add(ResettableContainer *rc, Object *obj);
374c046ce3SPeter Maydell 
384c046ce3SPeter Maydell /**
394c046ce3SPeter Maydell  * resettable_container_remove: Remove an object from the container
404c046ce3SPeter Maydell  * @rc: container
414c046ce3SPeter Maydell  * @obj: object to remove from the container
424c046ce3SPeter Maydell  *
434c046ce3SPeter Maydell  * Remove @obj from the ResettableContainer @rc. @obj must have been
444c046ce3SPeter Maydell  * previously added to this container.
454c046ce3SPeter Maydell  */
464c046ce3SPeter Maydell void resettable_container_remove(ResettableContainer *rc, Object *obj);
474c046ce3SPeter Maydell 
484c046ce3SPeter Maydell #endif
49