1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: #include <hurd.h>
20:
21: static error_t
22: getbootstrap (mach_port_t *result)
23: {
24: return __task_get_special_port (__mach_task_self (),
25: TASK_BOOTSTRAP_PORT,
26: result);
27: }
28:
29: error_t (*_hurd_ports_getters[INIT_PORT_MAX]) (mach_port_t *result) =
30: {
31: [INIT_PORT_BOOTSTRAP] = getbootstrap,
32: };
33:
34: error_t
35: _hurd_ports_get (unsigned int which, mach_port_t *result)
36: {
37: if (which >= _hurd_nports)
38: return EINVAL;
39: if (which >= INIT_PORT_MAX || _hurd_ports_getters[which] == NULL)
40: return HURD_PORT_USE (&_hurd_ports[which],
41: (*result = port) == MACH_PORT_NULL ? 0
42: : __mach_port_mod_refs (__mach_task_self (),
43: port, MACH_PORT_RIGHT_SEND,
44: +1));
45: return (*_hurd_ports_getters[which]) (result);
46: }