Warning: This file is not a C or C++ file. It does not have highlighting.

1#ifndef _HURD_PORT_H
2#include_next <hurd/port.h>
3
4#ifndef _ISOMAC
5#include <libc-lock.h>
6
7struct _hurd_port_use_data
8 {
9 struct hurd_port *p;
10 struct hurd_userlink link;
11 mach_port_t port;
12 };
13
14extern void _hurd_port_use_cleanup (void *arg);
15
16/* Like HURD_PORT_USE, but cleans fd on cancel. */
17#define HURD_PORT_USE_CANCEL(portcell, expr) \
18 ({ struct _hurd_port_use_data __d; \
19 mach_port_t port; \
20 __typeof(expr) __result; \
21 void *__crit; \
22 __d.p = (portcell); \
23 __crit = _hurd_critical_section_lock (); \
24 __d.port = port = _hurd_port_get (__d.p, &__d.link); \
25 __libc_cleanup_push (_hurd_port_use_cleanup, &__d); \
26 _hurd_critical_section_unlock (__crit); \
27 __result = (expr); \
28 __libc_cleanup_pop (1); \
29 __result; })
30
31libc_hidden_proto (_hurd_port_locked_get)
32libc_hidden_proto (_hurd_port_locked_set)
33#ifdef _HURD_PORT_H_HIDDEN_DEF
34libc_hidden_def (_hurd_port_locked_get)
35libc_hidden_def (_hurd_port_locked_set)
36#endif
37#endif
38#endif
39

Warning: This file is not a C or C++ file. It does not have highlighting.

source code of glibc/sysdeps/hurd/include/hurd/port.h