L4Re - L4 Runtime Environment
ipc.h
1
7
/*
8
* (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
9
* Alexander Warg <warg@os.inf.tu-dresden.de>,
10
* Frank Mehnert <fm3@os.inf.tu-dresden.de>,
11
* Torsten Frenzel <frenzel@os.inf.tu-dresden.de>
12
* economic rights: Technische Universität Dresden (Germany)
13
*
14
* This file is part of TUD:OS and distributed under the terms of the
15
* GNU General Public License 2.
16
* Please see the COPYING-GPL-2 file for details.
17
*
18
* As a special exception, you may use this file as part of a free software
19
* library without restriction. Specifically, if other files instantiate
20
* templates or use macros or inline functions from this file, or you compile
21
* this file and link it with other files to produce an executable, this
22
* file does not by itself cause the resulting executable to be covered by
23
* the GNU General Public License. This exception does not however
24
* invalidate any other reasons why the executable file might be covered by
25
* the GNU General Public License.
26
*/
27
#ifndef __L4SYS__INCLUDE__ARCH_AMD64__L4API_L4F__IPC_H__
28
#define __L4SYS__INCLUDE__ARCH_AMD64__L4API_L4F__IPC_H__
29
30
#include_next <l4/sys/ipc.h>
31
32
L4_INLINE
l4_msgtag_t
33
l4_ipc
(
l4_cap_idx_t
dest,
l4_utcb_t
*utcb,
34
l4_umword_t
flags,
35
l4_umword_t
slabel,
36
l4_msgtag_t
tag,
37
l4_umword_t
*rlabel,
38
l4_timeout_t
timeout)
L4_NOTHROW
39
{
40
l4_umword_t
dummy, dummy2;
41
register
l4_umword_t
to __asm__(
"r8"
) = timeout.raw;
42
43
(void)utcb;
44
45
__asm__ __volatile__
46
(
"syscall"
47
:
48
"=d"
(dummy2),
49
"=S"
(slabel),
50
"=D"
(dummy),
51
"=a"
(tag.raw)
52
:
53
"S"
(slabel),
54
"r"
(to),
55
"a"
(tag.raw),
56
"d"
(dest | flags)
57
:
58
"memory"
,
"cc"
,
"rcx"
,
"r11"
,
"r15"
59
);
60
61
if
(rlabel)
62
*rlabel = slabel;
63
64
return
tag;
65
}
66
67
#endif
/* ! __L4SYS__INCLUDE__ARCH_AMD64__L4API_L4F__IPC_H__ */
l4_cap_idx_t
unsigned long l4_cap_idx_t
L4 Capability selector Type.
Definition:
types.h:342
l4_utcb_t
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
Definition:
utcb.h:67
l4_timeout_t
Timeout pair.
Definition:
__timeout.h:57
l4_ipc
L4_ALWAYS_INLINE l4_msgtag_t l4_ipc(l4_cap_idx_t dest, l4_utcb_t *utcb, l4_umword_t flags, l4_umword_t slabel, l4_msgtag_t tag, l4_umword_t *rlabel, l4_timeout_t timeout) L4_NOTHROW
Generic L4 object invocation.
Definition:
ipc.h:34
l4_umword_t
unsigned long l4_umword_t
Unsigned machine word.
Definition:
l4int.h:52
l4_msgtag_t
Message tag data structure.
Definition:
types.h:159
L4_NOTHROW
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
Definition:
compiler.h:185
amd64
l4f
l4
sys
ipc.h
Generated on Sun Nov 25 2018 13:34:52 for L4Re - L4 Runtime Environment by
1.8.13