/* SPDX-License-Identifier: GPL-2.0+ */ /* * Uclass implementation for boot schema * * Copyright 2025 Canonical Ltd * Written by Simon Glass */ #ifndef __bootctl_oslist_h #define __bootctl_oslist_h #include struct udevice; /** * struct osinfo - Information about an OS which is available for booting * * @bflow: Bootflow for this OS */ struct osinfo { struct bootflow bflow; }; /** * struct oslist_iter - Iterator * * @active: true if the scan has started * @bf_iter: bootstd iterator being used */ struct oslist_iter { bool active; struct bootflow_iter bf_iter; }; /** * struct bc_oslist_ops - Operations for displays */ struct bc_oslist_ops { /** * next() - Find the next available OS * * @info: Returns info on success * Return 0 if OK, -ENOENT if there are no more */ int (*next)(struct udevice *dev, struct oslist_iter *iter, struct osinfo *info); }; #define bc_oslist_get_ops(dev) ((struct bc_oslist_ops *)(dev)->driver->ops) /** * bc_oslist_setup_iter() - Set up a new iterator ready for use * * This must be called before using the iterator with bc_oslist_next() * * @iter: Pointer to iterator to set up */ void bc_oslist_setup_iter(struct oslist_iter *iter); /** * bc_oslist_next() - Find the next available OS * * @info: Returns info on success * Return 0 if OK, -ENOENT if there are no more */ int bc_oslist_next(struct udevice *dev, struct oslist_iter *iter, struct osinfo *info); #endif