X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=discover%2Fplatform.h;fp=discover%2Fplatform.h;h=44315fa4f0b40a5cc1575d7898e15489993e257d;hb=c14b12980885edd035322cd3bc87efff444c39b1;hp=0000000000000000000000000000000000000000;hpb=dea7842fb28ff055b4e0f43a6a1fdaf3c4b5ba89;p=petitboot diff --git a/discover/platform.h b/discover/platform.h new file mode 100644 index 0000000..44315fa --- /dev/null +++ b/discover/platform.h @@ -0,0 +1,34 @@ +#ifndef PLATFORM_H +#define PLATFORM_H + +#include + +struct platform { + const char *name; + bool (*probe)(struct platform *, void *); + int (*load_config)(struct platform *, struct config *); + int (*save_config)(struct platform *, struct config *); + void *platform_data; +}; + +int platform_init(void *ctx); +int platform_fini(void); + +/* configuration interface */ +const struct config *config_get(void); +int config_set(struct config *config); +void config_set_autoboot(bool autoboot_enabled); + +/* for use by the platform-specific storage code */ +void config_set_defaults(struct config *config); + +#define __platform_ptrname(_n) __platform_ ## _n +#define _platform_ptrname(_n) __platform_ptrname(_n) + +#define register_platform(p) \ + static __attribute__((section("platforms"))) \ + __attribute__((used)) \ + struct platform * _platform_ptrname(__COUNTER__) = &p; + +#endif /* PLATFORM_H */ +