[trusty_app_manifest] Added new START_PORT config option
This option allows applications to specify ports that when connected
to will start the application if it was not already running. The option
takes a port name and port flags that determine the types of connections
allowed. Additionally, a new MGMT_FLAG is available for applications that
do not wish to be started at boot (and will presumably be started later
with a port connection)
Change-Id: Ica1e61a4482674d1b21ae74d675fa6f1c082fa66
diff --git a/include/user/trusty_app_manifest.h b/include/user/trusty_app_manifest.h
index 49ee249..fc4cefa 100644
--- a/include/user/trusty_app_manifest.h
+++ b/include/user/trusty_app_manifest.h
@@ -37,17 +37,31 @@
uint32_t config_options[];
} trusty_app_manifest_t;
+
+struct trusty_app_manifest_entry_port {
+ uint32_t config_key;
+ uint32_t port_flags;
+ uint32_t port_name_size;
+ char port_name[];
+};
+
+#define CONCAT(x, y) x##y
+#define XCONCAT(x, y) CONCAT(x, y)
+
enum {
TRUSTY_APP_CONFIG_KEY_MIN_STACK_SIZE = 1,
TRUSTY_APP_CONFIG_KEY_MIN_HEAP_SIZE = 2,
TRUSTY_APP_CONFIG_KEY_MAP_MEM = 3,
TRUSTY_APP_CONFIG_KEY_MGMT_FLAGS = 4,
+ TRUSTY_APP_CONFIG_KEY_START_PORT = 5,
};
enum trusty_app_mgmt_flags {
TRUSTY_APP_MGMT_FLAGS_NONE = 0x0,
/* Restart the application on exit */
TRUSTY_APP_MGMT_FLAGS_RESTART_ON_EXIT = 0x1,
+ /* Don't start the application at boot */
+ TRUSTY_APP_MGMT_FLAGS_DEFERRED_START = 0x2,
};
#define TRUSTY_APP_CONFIG_MIN_STACK_SIZE(sz) \
@@ -62,6 +76,16 @@
#define TRUSTY_APP_CONFIG_MGMT_FLAGS(mgmt_flags) \
TRUSTY_APP_CONFIG_KEY_MGMT_FLAGS, mgmt_flags
+/* Valid flags: IPC_PORT_ALLOW_* */
+#define TRUSTY_APP_START_PORT(name, flags) \
+ struct trusty_app_manifest_entry_port \
+ __attribute((section(".trusty_app.manifest.entry"))) \
+ XCONCAT(trusty_app_manifest_entry_port_, __COUNTER__) = { \
+ .config_key = TRUSTY_APP_CONFIG_KEY_START_PORT, \
+ .port_flags = flags, \
+ .port_name_size = sizeof(name), \
+ .port_name = name, \
+ };
/* manifest section attributes */
#define TRUSTY_APP_MANIFEST_ATTRS \