1.1 --- a/libipc/lib/src/server.c Sun Jun 05 21:30:59 2022 +0200
1.2 +++ b/libipc/lib/src/server.c Mon Jun 06 00:36:14 2022 +0200
1.3 @@ -166,24 +166,38 @@
1.4 return err;
1.5 }
1.6
1.7 - ipc_server_init_config(&config);
1.8 - config.expected_items = expected_items;
1.9 - config.handler = handler;
1.10 - config.handler_obj = handler_obj;
1.11 + _ipc_server_init_for(&config, expected_items, handler_obj, handler);
1.12
1.13 return ipc_server_start_config(&config);
1.14 }
1.15
1.16 +/* Initialise a server for a given object. */
1.17 +
1.18 +long _ipc_server_init_for(ipc_server_config_type *config, int expected_items,
1.19 + void *handler_obj, ipc_server_handler_type handler)
1.20 +{
1.21 + ipc_server_init_config(config);
1.22 +
1.23 + config->expected_items = expected_items;
1.24 + config->handler = handler;
1.25 + config->handler_obj = handler_obj;
1.26 +}
1.27 +
1.28 /* Associate a new configuration with an existing server endpoint. */
1.29
1.30 long _ipc_server_add_config(ipc_server_config_type *config, int expected_items,
1.31 void *handler_obj, ipc_server_handler_type handler,
1.32 l4_cap_idx_t thread)
1.33 {
1.34 - ipc_server_init_config(config);
1.35 - config->expected_items = expected_items;
1.36 - config->handler = handler;
1.37 - config->handler_obj = handler_obj;
1.38 + _ipc_server_init_for(config, expected_items, handler_obj, handler);
1.39 + return ipc_server_start_config_thread(config, thread);
1.40 +}
1.41 +
1.42 +/* Complete initialisation of a server in the given thread. */
1.43 +
1.44 +long ipc_server_start_config_thread(ipc_server_config_type *config,
1.45 + l4_cap_idx_t thread)
1.46 +{
1.47 config->thread = thread;
1.48 config->config_thread = 1;
1.49