4 #include <types/types.h>
5 #include <param_list/param_list.h>
9 bool (*probe)(struct platform *, void *);
10 int (*load_config)(struct platform *, struct config *);
11 int (*save_config)(struct platform *, struct config *);
12 void (*pre_boot)(struct platform *,
13 const struct config *);
14 int (*get_sysinfo)(struct platform *, struct system_info *);
15 uint16_t dhcp_arch_id;
19 int platform_init(void *ctx);
20 int platform_fini(void);
21 const struct platform *platform_get(void);
22 int platform_get_sysinfo(struct system_info *info);
23 void platform_pre_boot(void);
25 /* configuration interface */
26 const struct config *config_get(void);
27 int config_set(struct config *config);
28 void config_set_defaults(struct config *config);
29 void config_set_autoboot(bool autoboot_enabled);
30 void config_populate_all(struct config *config, const struct param_list *pl);
32 void params_update_network_values(struct param_list *pl,
33 const char *param_name, const struct config *config);
34 void params_update_bootdev_values(struct param_list *pl,
35 const char *param_name, const struct config *config);
37 #define __platform_ptrname(_n) __platform_ ## _n
38 #define _platform_ptrname(_n) __platform_ptrname(_n)
40 #define register_platform(p) \
41 static __attribute__((section("platforms"))) \
42 __attribute__((used)) \
43 struct platform * _platform_ptrname(__COUNTER__) = &p;
45 #endif /* PLATFORM_H */