summaryrefslogtreecommitdiff
path: root/include/env.h
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-08-01 09:47:05 -0600
committerTom Rini <trini@konsulko.com>2019-08-11 16:43:41 -0400
commit02cf9334280046e6b07ba304e7da2a273e445d5b (patch)
treec6d1384beaafab012864f1d1d2629f96d9b60380 /include/env.h
parentdb19701039bc78b5870d74e0d7ecaf4f9e4d8d87 (diff)
env: Move callback definitions to env.h
These definitions are effectively part of the 'public' API of the environment implementation since they do not require access to any internal variables. Move them to the env.h header. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'include/env.h')
-rw-r--r--include/env.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/env.h b/include/env.h
index b59c3c36f2..271cb3e888 100644
--- a/include/env.h
+++ b/include/env.h
@@ -21,6 +21,40 @@ enum env_valid {
ENV_REDUND, /* Redundant environment is valid */
};
+/** enum env_op - environment callback operation */
+enum env_op {
+ env_op_create,
+ env_op_delete,
+ env_op_overwrite,
+};
+
+/** struct env_clbk_tbl - declares a new callback */
+struct env_clbk_tbl {
+ const char *name; /* Callback name */
+ int (*callback)(const char *name, const char *value, enum env_op op,
+ int flags);
+};
+
+/*
+ * Define a callback that can be associated with variables.
+ * when associated through the ".callbacks" environment variable, the callback
+ * will be executed any time the variable is inserted, overwritten, or deleted.
+ *
+ * For SPL these are silently dropped to reduce code size, since environment
+ * callbacks are not supported with SPL.
+ */
+#ifdef CONFIG_SPL_BUILD
+#define U_BOOT_ENV_CALLBACK(name, callback) \
+ static inline __maybe_unused void _u_boot_env_noop_##name(void) \
+ { \
+ (void)callback; \
+ }
+#else
+#define U_BOOT_ENV_CALLBACK(name, callback) \
+ ll_entry_declare(struct env_clbk_tbl, name, env_clbk) = \
+ {#name, callback}
+#endif
+
/**
* env_get_id() - Gets a sequence number for the environment
*