L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
thread.h
Go to the documentation of this file.
1
5/*
6 * (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
7 * Alexander Warg <warg@os.inf.tu-dresden.de>,
8 * Björn Döbel <doebel@os.inf.tu-dresden.de>,
9 * Torsten Frenzel <frenzel@os.inf.tu-dresden.de>
10 * economic rights: Technische Universität Dresden (Germany)
11 *
12 * This file is part of TUD:OS and distributed under the terms of the
13 * GNU General Public License 2.
14 * Please see the COPYING-GPL-2 file for details.
15 *
16 * As a special exception, you may use this file as part of a free software
17 * library without restriction. Specifically, if other files instantiate
18 * templates or use macros or inline functions from this file, or you compile
19 * this file and link it with other files to produce an executable, this
20 * file does not by itself cause the resulting executable to be covered by
21 * the GNU General Public License. This exception does not however
22 * invalidate any other reasons why the executable file might be covered by
23 * the GNU General Public License.
24 */
25#pragma once
26
27#include <l4/sys/types.h>
28#include <l4/sys/utcb.h>
29#include <l4/sys/ipc.h>
30
93
102 l4_umword_t flags, l4_utcb_t *utcb) L4_NOTHROW;
103
136 l4_umword_t *flags) L4_NOTHROW;
137
146 l4_umword_t *flags, l4_utcb_t *utcb) L4_NOTHROW;
147
148
149
196L4_INLINE void
198
203L4_INLINE void
204l4_thread_control_start_u(l4_utcb_t *utcb) L4_NOTHROW;
205
215L4_INLINE void
217
222L4_INLINE void
223l4_thread_control_pager_u(l4_cap_idx_t pager, l4_utcb_t *utcb) L4_NOTHROW;
224
234L4_INLINE void
236
241L4_INLINE void
242l4_thread_control_exc_handler_u(l4_cap_idx_t exc_handler,
243 l4_utcb_t *utcb) L4_NOTHROW;
244
267L4_INLINE void
270
275L4_INLINE void
276l4_thread_control_bind_u(l4_utcb_t *thread_utcb,
277 l4_cap_idx_t task, l4_utcb_t *utcb) L4_NOTHROW;
278
302L4_INLINE void
304
309L4_INLINE void
310l4_thread_control_alien_u(l4_utcb_t *utcb, int on) L4_NOTHROW;
311
322L4_INLINE void
324
329L4_INLINE void
330l4_thread_control_ux_host_syscall_u(l4_utcb_t *utcb, int on) L4_NOTHROW;
331
332
333
349
355l4_thread_control_commit_u(l4_cap_idx_t thread, l4_utcb_t *utcb) L4_NOTHROW;
356
365
376
382l4_thread_switch_u(l4_cap_idx_t to_thread, l4_utcb_t *utcb) L4_NOTHROW;
383
384
385
397
403l4_thread_stats_time_u(l4_cap_idx_t thread, l4_kernel_clock_t *us,
404 l4_utcb_t *utcb) L4_NOTHROW;
405
406
419
425l4_thread_vcpu_resume_start_u(l4_utcb_t *utcb) L4_NOTHROW;
426
468
474l4_thread_vcpu_resume_commit_u(l4_cap_idx_t thread,
475 l4_msgtag_t tag, l4_utcb_t *utcb) L4_NOTHROW;
476
477
499
509 l4_utcb_t *utcb) L4_NOTHROW;
510
544
554 l4_utcb_t *utcb) L4_NOTHROW;
555
556
580
586l4_thread_register_del_irq_u(l4_cap_idx_t thread, l4_cap_idx_t irq,
587 l4_utcb_t *utcb) L4_NOTHROW;
588
612
618l4_thread_modify_sender_start_u(l4_utcb_t *u) L4_NOTHROW;
619
644L4_INLINE int
646 l4_umword_t match,
647 l4_umword_t del_bits,
648 l4_umword_t add_bits,
650
655L4_INLINE int
656l4_thread_modify_sender_add_u(l4_umword_t match_mask,
657 l4_umword_t match,
658 l4_umword_t del_bits,
659 l4_umword_t add_bits,
661
678
684l4_thread_modify_sender_commit_u(l4_cap_idx_t thread, l4_msgtag_t tag,
686
710
734
753
766
767
768/* IMPLEMENTATION -----------------------------------------------------------*/
769
770#include <l4/sys/ipc.h>
771#include <l4/sys/types.h>
772
775 l4_umword_t flags, l4_utcb_t *utcb) L4_NOTHROW
776{
777 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
778 v->mr[0] = L4_THREAD_EX_REGS_OP | flags;
779 v->mr[1] = ip;
780 v->mr[2] = sp;
781 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 3, 0, 0), L4_IPC_NEVER);
782}
783
786 l4_umword_t *flags, l4_utcb_t *utcb) L4_NOTHROW
787{
788 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
789 l4_msgtag_t ret = l4_thread_ex_regs_u(thread, *ip, *sp, *flags, utcb);
790 if (l4_error_u(ret, utcb))
791 return ret;
792
793 *flags = v->mr[0];
794 *ip = v->mr[1];
795 *sp = v->mr[2];
796 return ret;
797}
798
799L4_INLINE void
800l4_thread_control_start_u(l4_utcb_t *utcb) L4_NOTHROW
801{
802 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
804}
805
806L4_INLINE void
807l4_thread_control_pager_u(l4_cap_idx_t pager, l4_utcb_t *utcb) L4_NOTHROW
808{
809 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
812}
813
814L4_INLINE void
815l4_thread_control_exc_handler_u(l4_cap_idx_t exc_handler,
816 l4_utcb_t *utcb) L4_NOTHROW
817{
818 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
821}
822
823L4_INLINE void
824l4_thread_control_bind_u(l4_utcb_t *thread_utcb, l4_cap_idx_t task,
825 l4_utcb_t *utcb) L4_NOTHROW
826{
827 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
832}
833
834L4_INLINE void
835l4_thread_control_alien_u(l4_utcb_t *utcb, int on) L4_NOTHROW
836{
837 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
840}
841
842L4_INLINE void
843l4_thread_control_ux_host_syscall_u(l4_utcb_t *utcb, int on) L4_NOTHROW
844{
845 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
848}
849
851l4_thread_control_commit_u(l4_cap_idx_t thread, l4_utcb_t *utcb) L4_NOTHROW
852{
853 int items = 0;
855 items = 1;
856 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 6, items, 0), L4_IPC_NEVER);
857}
858
859
862{
864 return l4_msgtag(0, 0, 0, 0);
865}
866
867/* Preliminary, to be changed */
869l4_thread_switch_u(l4_cap_idx_t to_thread, l4_utcb_t *utcb) L4_NOTHROW
870{
871 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
872 v->mr[0] = L4_THREAD_SWITCH_OP;
873 return l4_ipc_call(to_thread, utcb, l4_msgtag(L4_PROTO_THREAD, 1, 0, 0), L4_IPC_NEVER);
874}
875
876
878l4_thread_stats_time_u(l4_cap_idx_t thread, l4_kernel_clock_t *us,
879 l4_utcb_t *utcb) L4_NOTHROW
880{
881 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
882 l4_msgtag_t res;
883
884 v->mr[0] = L4_THREAD_STATS_OP;
885
886 res = l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 1, 0, 0), L4_IPC_NEVER);
887
888 if (l4_msgtag_has_error(res))
889 return res;
890
891 *us = v->mr64[l4_utcb_mr64_idx(0)];
892
893 return res;
894}
895
897l4_thread_vcpu_resume_start_u(l4_utcb_t *utcb) L4_NOTHROW
898{
899 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
901 return l4_msgtag(L4_PROTO_THREAD, 1, 0, 0);
902}
903
905l4_thread_vcpu_resume_commit_u(l4_cap_idx_t thread,
907{
908 return l4_ipc_call(thread, utcb, tag, L4_IPC_NEVER);
909}
910
914{
915 return l4_thread_ex_regs_u(thread, ip, sp, flags, l4_utcb());
916}
917
920 l4_umword_t *flags) L4_NOTHROW
921{
922 return l4_thread_ex_regs_ret_u(thread, ip, sp, flags, l4_utcb());
923}
924
925L4_INLINE void
927{
928 l4_thread_control_start_u(l4_utcb());
929}
930
931L4_INLINE void
933{
934 l4_thread_control_pager_u(pager, l4_utcb());
935}
936
937L4_INLINE void
939{
940 l4_thread_control_exc_handler_u(exc_handler, l4_utcb());
941}
942
943
944L4_INLINE void
946{
947 l4_thread_control_bind_u(thread_utcb, task, l4_utcb());
948}
949
950L4_INLINE void
952{
953 l4_thread_control_alien_u(l4_utcb(), on);
954}
955
956L4_INLINE void
958{
959 l4_thread_control_ux_host_syscall_u(l4_utcb(), on);
960}
961
964{
965 return l4_thread_control_commit_u(thread, l4_utcb());
966}
967
968
969
970
973{
974 return l4_thread_switch_u(to_thread, l4_utcb());
975}
976
977
978
979
982{
983 return l4_thread_stats_time_u(thread, us, l4_utcb());
984}
985
988{
989 return l4_thread_vcpu_resume_start_u(l4_utcb());
990}
991
995{
996 return l4_thread_vcpu_resume_commit_u(thread, tag, l4_utcb());
997}
998
999
1001l4_thread_register_del_irq_u(l4_cap_idx_t thread, l4_cap_idx_t irq,
1003{
1004 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1006 m->mr[1] = l4_map_obj_control(0,0);
1007 m->mr[2] = l4_obj_fpage(irq, 0, L4_CAP_FPAGE_RWS).raw;
1008 return l4_ipc_call(thread, u, l4_msgtag(L4_PROTO_THREAD, 1, 1, 0), L4_IPC_NEVER);
1009
1010}
1011
1014{
1015 return l4_thread_register_del_irq_u(thread, irq, l4_utcb());
1016}
1017
1018
1021 l4_utcb_t *utcb) L4_NOTHROW
1022{
1023 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
1025 v->mr[1] = vcpu_state;
1026 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 2, 0, 0), L4_IPC_NEVER);
1027}
1028
1031{ return l4_thread_vcpu_control_u(thread, vcpu_state, l4_utcb()); }
1032
1033
1036 l4_utcb_t *utcb) L4_NOTHROW
1037{
1038 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
1039 v->mr[0] = L4_THREAD_VCPU_CONTROL_EXT_OP;
1040 v->mr[1] = ext_vcpu_state;
1041 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 2, 0, 0), L4_IPC_NEVER);
1042}
1043
1046{ return l4_thread_vcpu_control_ext_u(thread, ext_vcpu_state, l4_utcb()); }
1047
1049l4_thread_modify_sender_start_u(l4_utcb_t *u) L4_NOTHROW
1050{
1051 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1053 return l4_msgtag(L4_PROTO_THREAD, 1, 0, 0);
1054}
1055
1056L4_INLINE int
1057l4_thread_modify_sender_add_u(l4_umword_t match_mask,
1058 l4_umword_t match,
1059 l4_umword_t del_bits,
1060 l4_umword_t add_bits,
1062{
1063 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1064 unsigned w = l4_msgtag_words(*tag);
1065 if (w >= L4_UTCB_GENERIC_DATA_SIZE - 4)
1066 return -L4_ENOMEM;
1067
1068 m->mr[w] = match_mask;
1069 m->mr[w+1] = match;
1070 m->mr[w+2] = del_bits;
1071 m->mr[w+3] = add_bits;
1072
1073 *tag = l4_msgtag(l4_msgtag_label(*tag), w + 4, 0, 0);
1074
1075 return 0;
1076}
1077
1079l4_thread_modify_sender_commit_u(l4_cap_idx_t thread, l4_msgtag_t tag,
1081{
1082 return l4_ipc_call(thread, u, tag, L4_IPC_NEVER);
1083}
1084
1087{
1088 return l4_thread_modify_sender_start_u(l4_utcb());
1089}
1090
1091L4_INLINE int
1093 l4_umword_t match,
1094 l4_umword_t del_bits,
1095 l4_umword_t add_bits,
1097{
1098 return l4_thread_modify_sender_add_u(match_mask, match,
1099 del_bits, add_bits, tag, l4_utcb());
1100}
1101
1104{
1105 return l4_thread_modify_sender_commit_u(thread, tag, l4_utcb());
1106}
unsigned long l4_umword_t
Unsigned machine word.
Definition l4int.h:51
unsigned long l4_addr_t
Address type.
Definition l4int.h:45
l4_uint64_t l4_kernel_clock_t
Kernel clock type.
Definition l4int.h:64
unsigned long l4_cap_idx_t
Capability selector type.
Definition types.h:359
@ L4_INVALID_CAP
Invalid capability selector.
Definition consts.h:168
@ L4_ENOMEM
No memory.
Definition err.h:50
l4_fpage_t l4_obj_fpage(l4_cap_idx_t obj, unsigned int order, unsigned char rights) L4_NOTHROW
Create a kernel-object flex page.
Definition __l4_fpage.h:680
@ L4_CAP_FPAGE_RWS
Read, interface specific 'W', and 'S' rights for capability flex-pages.
Definition __l4_fpage.h:209
l4_msgtag_t l4_ipc_receive(l4_cap_idx_t object, l4_utcb_t *utcb, l4_timeout_t timeout) L4_NOTHROW
Wait for a message from a specific source.
Definition ipc.h:613
l4_msgtag_t l4_ipc_call(l4_cap_idx_t object, l4_utcb_t *utcb, l4_msgtag_t tag, l4_timeout_t timeout) L4_NOTHROW
Object call (usual invocation).
Definition ipc.h:576
l4_umword_t l4_map_obj_control(l4_umword_t spot, unsigned grant) L4_NOTHROW
Create the first word for a map item for the object space.
Definition __l4_fpage.h:714
@ L4_ITEM_MAP
Identify a message item as map item.
Definition consts.h:226
unsigned l4_msgtag_has_error(l4_msgtag_t t) L4_NOTHROW
Test for error indicator flag.
Definition types.h:457
l4_msgtag_t l4_msgtag(long label, unsigned words, unsigned items, unsigned flags) L4_NOTHROW
Create a message tag from the specified values.
Definition types.h:428
unsigned l4_msgtag_words(l4_msgtag_t t) L4_NOTHROW
Get the number of untyped words.
Definition types.h:444
long l4_msgtag_label(l4_msgtag_t t) L4_NOTHROW
Get the protocol of tag.
Definition types.h:440
@ L4_PROTO_THREAD
Protocol for messages to a thread object.
Definition types.h:64
L4_thread_ops
Operations on thread objects.
Definition thread.h:694
@ L4_THREAD_OPCODE_MASK
Mask for opcodes.
Definition thread.h:708
@ L4_THREAD_AMD64_GET_SEGMENT_INFO_OP
Get segment information.
Definition thread.h:707
@ L4_THREAD_AMD64_SET_SEGMENT_BASE_OP
Set segment base.
Definition thread.h:706
@ L4_THREAD_X86_GDT_OP
Gdt.
Definition thread.h:704
@ L4_THREAD_EX_REGS_OP
Exchange registers operation.
Definition thread.h:696
@ L4_THREAD_STATS_OP
Thread statistics.
Definition thread.h:698
@ L4_THREAD_VCPU_CONTROL_OP
Enable / disable VCPU feature.
Definition thread.h:702
@ L4_THREAD_MODIFY_SENDER_OP
Modify all senders IDs that match the given pattern.
Definition thread.h:701
@ L4_THREAD_CONTROL_OP
Control operation.
Definition thread.h:695
@ L4_THREAD_ARM_TPIDRURO_OP
Set TPIDRURO register.
Definition thread.h:705
@ L4_THREAD_VCPU_RESUME_OP
VCPU resume.
Definition thread.h:699
@ L4_THREAD_REGISTER_DELETE_IRQ_OP
Register an IPC-gate deletion IRQ.
Definition thread.h:700
@ L4_THREAD_SWITCH_OP
Do a thread switch.
Definition thread.h:697
l4_msgtag_t l4_thread_modify_sender_start(void) L4_NOTHROW
Start a thread sender modification sequence.
Definition thread.h:1086
l4_msgtag_t l4_thread_vcpu_control_ext_u(l4_cap_idx_t thread, l4_addr_t ext_vcpu_state, l4_utcb_t *utcb) L4_NOTHROW
Enable the extended vCPU feature for the thread.
Definition thread.h:1035
l4_msgtag_t l4_thread_ex_regs(l4_cap_idx_t thread, l4_addr_t ip, l4_addr_t sp, l4_umword_t flags) L4_NOTHROW
Exchange basic thread registers.
Definition thread.h:912
L4_thread_ex_regs_flags
Flags for the thread ex-regs operation.
Definition thread.h:760
int l4_thread_modify_sender_add(l4_umword_t match_mask, l4_umword_t match, l4_umword_t del_bits, l4_umword_t add_bits, l4_msgtag_t *tag) L4_NOTHROW
Add a modification pattern to a sender modification sequence.
Definition thread.h:1092
l4_msgtag_t l4_thread_vcpu_control_ext(l4_cap_idx_t thread, l4_addr_t ext_vcpu_state) L4_NOTHROW
Enable the extended vCPU feature for the thread.
Definition thread.h:1045
l4_msgtag_t l4_thread_ex_regs_ret_u(l4_cap_idx_t thread, l4_addr_t *ip, l4_addr_t *sp, l4_umword_t *flags, l4_utcb_t *utcb) L4_NOTHROW
Exchange basic thread registers and return previous values.
Definition thread.h:785
l4_msgtag_t l4_thread_yield(void) L4_NOTHROW
Yield current time slice.
Definition thread.h:861
l4_msgtag_t l4_thread_vcpu_resume_start(void) L4_NOTHROW
vCPU return from event handler.
Definition thread.h:987
L4_thread_control_flags
Flags for the thread control operation.
Definition thread.h:722
l4_msgtag_t l4_thread_ex_regs_ret(l4_cap_idx_t thread, l4_addr_t *ip, l4_addr_t *sp, l4_umword_t *flags) L4_NOTHROW
Exchange basic thread registers and return previous values.
Definition thread.h:919
l4_msgtag_t l4_thread_stats_time(l4_cap_idx_t thread, l4_kernel_clock_t *us) L4_NOTHROW
Get consumed time of thread in µs.
Definition thread.h:981
l4_msgtag_t l4_thread_vcpu_control_u(l4_cap_idx_t thread, l4_addr_t vcpu_state, l4_utcb_t *utcb) L4_NOTHROW
Enable the vCPU feature for the thread.
Definition thread.h:1020
l4_msgtag_t l4_thread_ex_regs_u(l4_cap_idx_t thread, l4_addr_t ip, l4_addr_t sp, l4_umword_t flags, l4_utcb_t *utcb) L4_NOTHROW
Exchange basic thread registers.
Definition thread.h:774
l4_msgtag_t l4_thread_register_del_irq(l4_cap_idx_t thread, l4_cap_idx_t irq) L4_NOTHROW
Register an IRQ that will trigger upon deletion events.
Definition thread.h:1013
l4_msgtag_t l4_thread_vcpu_resume_commit(l4_cap_idx_t thread, l4_msgtag_t tag) L4_NOTHROW
Commit vCPU resume.
Definition thread.h:993
l4_msgtag_t l4_thread_modify_sender_commit(l4_cap_idx_t thread, l4_msgtag_t tag) L4_NOTHROW
Apply (commit) a sender modification sequence.
Definition thread.h:1103
l4_msgtag_t l4_thread_switch(l4_cap_idx_t to_thread) L4_NOTHROW
Switch to another thread (and donate the remaining time slice).
Definition thread.h:972
l4_msgtag_t l4_thread_vcpu_control(l4_cap_idx_t thread, l4_addr_t vcpu_state) L4_NOTHROW
Enable the vCPU feature for the thread.
Definition thread.h:1030
L4_thread_control_mr_indices
Indices for the values in the message register for thread control.
Definition thread.h:745
@ L4_THREAD_EX_REGS_CANCEL
Cancel ongoing IPC in the thread.
Definition thread.h:761
@ L4_THREAD_EX_REGS_ARCH_MASK
Arch specific flags.
Definition thread.h:764
@ L4_THREAD_EX_REGS_TRIGGER_EXCEPTION
Trigger artificial exception in thread.
Definition thread.h:762
@ L4_THREAD_CONTROL_SET_PAGER
The pager will be given.
Definition thread.h:724
@ L4_THREAD_CONTROL_BIND_TASK
The task to bind the thread to will be given.
Definition thread.h:726
@ L4_THREAD_CONTROL_UX_NATIVE
Fiasco-UX only: pass-through of host system calls is set.
Definition thread.h:730
@ L4_THREAD_CONTROL_ALIEN
Alien state of the thread is set.
Definition thread.h:728
@ L4_THREAD_CONTROL_SET_EXC_HANDLER
The exception handler of the thread will be given.
Definition thread.h:732
@ L4_THREAD_CONTROL_MR_IDX_FLAG_VALS
Index for feature values.
Definition thread.h:749
@ L4_THREAD_CONTROL_MR_IDX_PAGER
Index for pager cap.
Definition thread.h:747
@ L4_THREAD_CONTROL_MR_IDX_BIND_TASK
Index for task flex-page for bind.
Definition thread.h:751
@ L4_THREAD_CONTROL_MR_IDX_EXC_HANDLER
Index for exception handler.
Definition thread.h:748
@ L4_THREAD_CONTROL_MR_IDX_FLAGS
Definition thread.h:746
@ L4_THREAD_CONTROL_MR_IDX_BIND_UTCB
Index for UTCB address for bind.
Definition thread.h:750
void l4_thread_control_bind(l4_utcb_t *thread_utcb, l4_cap_idx_t task) L4_NOTHROW
Bind the thread to a task.
Definition thread.h:945
l4_msgtag_t l4_thread_control_commit(l4_cap_idx_t thread) L4_NOTHROW
Commit the thread control parameters.
Definition thread.h:963
void l4_thread_control_alien(int on) L4_NOTHROW
Enable alien mode.
Definition thread.h:951
void l4_thread_control_exc_handler(l4_cap_idx_t exc_handler) L4_NOTHROW
Set the exception handler.
Definition thread.h:938
void l4_thread_control_start(void) L4_NOTHROW
Start a thread control API sequence.
Definition thread.h:926
void l4_thread_control_ux_host_syscall(int on) L4_NOTHROW
Enable pass through of native host (Linux) system calls.
Definition thread.h:957
void l4_thread_control_pager(l4_cap_idx_t pager) L4_NOTHROW
Set the pager.
Definition thread.h:932
unsigned l4_utcb_mr64_idx(unsigned idx) L4_NOTHROW
Get index into 64bit message registers alias from native-sized index.
Definition utcb.h:386
#define L4_IPC_BOTH_TIMEOUT_0
0 receive and send timeout
Definition __timeout.h:87
#define L4_IPC_NEVER
never timeout
Definition __timeout.h:84
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
Definition utcb.h:67
l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE
Get the UTCB address.
Definition utcb.h:340
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
Definition compiler.h:188
#define L4_INLINE
L4 Inline function attribute.
Definition compiler.h:62
Common L4 ABI Data Types.
Message tag data structure.
Definition types.h:164
l4_umword_t raw
Raw value.
Definition __l4_fpage.h:87
Encapsulation of the message-register block in the UTCB.
Definition utcb.h:79
l4_umword_t mr[L4_UTCB_GENERIC_DATA_SIZE]
Message registers.
Definition utcb.h:80
l4_uint64_t mr64[L4_UTCB_GENERIC_DATA_SIZE/(sizeof(l4_uint64_t)/sizeof(l4_umword_t))]
Message registers 64bit alias.
Definition utcb.h:81