discover: Always associate resources with a boot option
[petitboot] / discover / resource.h
1 #ifndef RESOURCE_H
2 #define RESOURCE_H
3
4 #include <stdbool.h>
5
6 struct discover_boot_option;
7 struct discover_device;
8 struct device_handler;
9 struct pb_url;
10
11 /**
12  * Data for local/remote resources. Resources may be "unresolved", in that
13  * they refer to a device that is not yet present. Unresolved resources
14  * simply contain parser-specific data (generally a device string parsed from
15  * the config file), and may be resolved by the parser once new devices appear.
16  */
17 struct resource {
18         bool resolved;
19         union {
20                 struct pb_url   *url;
21                 void            *info;
22         };
23 };
24
25 /**
26  * devpath resources.
27  *
28  * Most resources in config files will be in one of the following formats:
29  *  - URLs
30  *  - device-local filenames (ie, filenames on the currently-discovered dev)
31  *  - other-device filenames (which speficy the device by a string format,
32  *     using a dev:path format).
33  *
34  * The following definitions are a generic resource handler for these types
35  * of resources. By creating resources with create_devpath_resource,
36  * parsers can use resolve_devpath_resource as their resolve_resouce
37  * callback.
38  */
39
40 struct resource *create_devpath_resource(struct discover_boot_option *opt,
41                 struct discover_device *orig_device,
42                 const char *devpath);
43
44 struct resource *create_url_resource(struct discover_boot_option *opt,
45                 struct pb_url *url);
46
47 bool resolve_devpath_resource(struct device_handler *dev,
48                 struct resource *res);
49
50
51
52 #endif /* RESOURCE_H */
53