[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 \