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
675
681l4_thread_modify_sender_commit_u(l4_cap_idx_t thread, l4_msgtag_t tag,
683
707
731
750
761
762
763/* IMPLEMENTATION -----------------------------------------------------------*/
764
765#include <l4/sys/ipc.h>
766#include <l4/sys/types.h>
767
770 l4_umword_t flags, l4_utcb_t *utcb) L4_NOTHROW
771{
772 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
773 v->mr[0] = L4_THREAD_EX_REGS_OP | flags;
774 v->mr[1] = ip;
775 v->mr[2] = sp;
776 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 3, 0, 0), L4_IPC_NEVER);
777}
778
781 l4_umword_t *flags, l4_utcb_t *utcb) L4_NOTHROW
782{
783 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
784 l4_msgtag_t ret = l4_thread_ex_regs_u(thread, *ip, *sp, *flags, utcb);
785 if (l4_error_u(ret, utcb))
786 return ret;
787
788 *flags = v->mr[0];
789 *ip = v->mr[1];
790 *sp = v->mr[2];
791 return ret;
792}
793
794L4_INLINE void
795l4_thread_control_start_u(l4_utcb_t *utcb) L4_NOTHROW
796{
797 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
799}
800
801L4_INLINE void
802l4_thread_control_pager_u(l4_cap_idx_t pager, l4_utcb_t *utcb) L4_NOTHROW
803{
804 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
807}
808
809L4_INLINE void
810l4_thread_control_exc_handler_u(l4_cap_idx_t exc_handler,
811 l4_utcb_t *utcb) L4_NOTHROW
812{
813 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
816}
817
818L4_INLINE void
819l4_thread_control_bind_u(l4_utcb_t *thread_utcb, l4_cap_idx_t task,
820 l4_utcb_t *utcb) L4_NOTHROW
821{
822 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
827}
828
829L4_INLINE void
830l4_thread_control_alien_u(l4_utcb_t *utcb, int on) L4_NOTHROW
831{
832 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
835}
836
837L4_INLINE void
838l4_thread_control_ux_host_syscall_u(l4_utcb_t *utcb, int on) L4_NOTHROW
839{
840 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
843}
844
846l4_thread_control_commit_u(l4_cap_idx_t thread, l4_utcb_t *utcb) L4_NOTHROW
847{
848 int items = 0;
850 items = 1;
851 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 6, items, 0), L4_IPC_NEVER);
852}
853
854
857{
859 return l4_msgtag(0, 0, 0, 0);
860}
861
862/* Preliminary, to be changed */
864l4_thread_switch_u(l4_cap_idx_t to_thread, l4_utcb_t *utcb) L4_NOTHROW
865{
866 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
867 v->mr[0] = L4_THREAD_SWITCH_OP;
868 return l4_ipc_call(to_thread, utcb, l4_msgtag(L4_PROTO_THREAD, 1, 0, 0), L4_IPC_NEVER);
869}
870
871
873l4_thread_stats_time_u(l4_cap_idx_t thread, l4_kernel_clock_t *us,
874 l4_utcb_t *utcb) L4_NOTHROW
875{
876 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
877 l4_msgtag_t res;
878
879 v->mr[0] = L4_THREAD_STATS_OP;
880
881 res = l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 1, 0, 0), L4_IPC_NEVER);
882
883 if (l4_msgtag_has_error(res))
884 return res;
885
886 *us = v->mr64[l4_utcb_mr64_idx(0)];
887
888 return res;
889}
890
892l4_thread_vcpu_resume_start_u(l4_utcb_t *utcb) L4_NOTHROW
893{
894 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
896 return l4_msgtag(L4_PROTO_THREAD, 1, 0, 0);
897}
898
900l4_thread_vcpu_resume_commit_u(l4_cap_idx_t thread,
902{
903 return l4_ipc_call(thread, utcb, tag, L4_IPC_NEVER);
904}
905
909{
910 return l4_thread_ex_regs_u(thread, ip, sp, flags, l4_utcb());
911}
912
915 l4_umword_t *flags) L4_NOTHROW
916{
917 return l4_thread_ex_regs_ret_u(thread, ip, sp, flags, l4_utcb());
918}
919
920L4_INLINE void
922{
923 l4_thread_control_start_u(l4_utcb());
924}
925
926L4_INLINE void
928{
929 l4_thread_control_pager_u(pager, l4_utcb());
930}
931
932L4_INLINE void
934{
935 l4_thread_control_exc_handler_u(exc_handler, l4_utcb());
936}
937
938
939L4_INLINE void
941{
942 l4_thread_control_bind_u(thread_utcb, task, l4_utcb());
943}
944
945L4_INLINE void
947{
948 l4_thread_control_alien_u(l4_utcb(), on);
949}
950
951L4_INLINE void
953{
954 l4_thread_control_ux_host_syscall_u(l4_utcb(), on);
955}
956
959{
960 return l4_thread_control_commit_u(thread, l4_utcb());
961}
962
963
964
965
968{
969 return l4_thread_switch_u(to_thread, l4_utcb());
970}
971
972
973
974
977{
978 return l4_thread_stats_time_u(thread, us, l4_utcb());
979}
980
983{
984 return l4_thread_vcpu_resume_start_u(l4_utcb());
985}
986
990{
991 return l4_thread_vcpu_resume_commit_u(thread, tag, l4_utcb());
992}
993
994
996l4_thread_register_del_irq_u(l4_cap_idx_t thread, l4_cap_idx_t irq,
998{
999 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1001 m->mr[1] = l4_map_obj_control(0,0);
1002 m->mr[2] = l4_obj_fpage(irq, 0, L4_CAP_FPAGE_RWS).raw;
1003 return l4_ipc_call(thread, u, l4_msgtag(L4_PROTO_THREAD, 1, 1, 0), L4_IPC_NEVER);
1004
1005}
1006
1009{
1010 return l4_thread_register_del_irq_u(thread, irq, l4_utcb());
1011}
1012
1013
1016 l4_utcb_t *utcb) L4_NOTHROW
1017{
1018 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
1020 v->mr[1] = vcpu_state;
1021 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 2, 0, 0), L4_IPC_NEVER);
1022}
1023
1026{ return l4_thread_vcpu_control_u(thread, vcpu_state, l4_utcb()); }
1027
1028
1031 l4_utcb_t *utcb) L4_NOTHROW
1032{
1033 l4_msg_regs_t *v = l4_utcb_mr_u(utcb);
1034 v->mr[0] = L4_THREAD_VCPU_CONTROL_EXT_OP;
1035 v->mr[1] = ext_vcpu_state;
1036 return l4_ipc_call(thread, utcb, l4_msgtag(L4_PROTO_THREAD, 2, 0, 0), L4_IPC_NEVER);
1037}
1038
1041{ return l4_thread_vcpu_control_ext_u(thread, ext_vcpu_state, l4_utcb()); }
1042
1044l4_thread_modify_sender_start_u(l4_utcb_t *u) L4_NOTHROW
1045{
1046 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1048 return l4_msgtag(L4_PROTO_THREAD, 1, 0, 0);
1049}
1050
1051L4_INLINE int
1052l4_thread_modify_sender_add_u(l4_umword_t match_mask,
1053 l4_umword_t match,
1054 l4_umword_t del_bits,
1055 l4_umword_t add_bits,
1057{
1058 l4_msg_regs_t *m = l4_utcb_mr_u(u);
1059 unsigned w = l4_msgtag_words(*tag);
1060 if (w >= L4_UTCB_GENERIC_DATA_SIZE - 4)
1061 return -L4_ENOMEM;
1062
1063 m->mr[w] = match_mask;
1064 m->mr[w+1] = match;
1065 m->mr[w+2] = del_bits;
1066 m->mr[w+3] = add_bits;
1067
1068 *tag = l4_msgtag(l4_msgtag_label(*tag), w + 4, 0, 0);
1069
1070 return 0;
1071}
1072
1074l4_thread_modify_sender_commit_u(l4_cap_idx_t thread, l4_msgtag_t tag,
1076{
1077 return l4_ipc_call(thread, u, tag, L4_IPC_NEVER);
1078}
1079
1082{
1083 return l4_thread_modify_sender_start_u(l4_utcb());
1084}
1085
1086L4_INLINE int
1088 l4_umword_t match,
1089 l4_umword_t del_bits,
1090 l4_umword_t add_bits,
1092{
1093 return l4_thread_modify_sender_add_u(match_mask, match,
1094 del_bits, add_bits, tag, l4_utcb());
1095}
1096
1099{
1100 return l4_thread_modify_sender_commit_u(thread, tag, l4_utcb());
1101}
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:358
@ 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:592
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:550
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:456
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:427
unsigned l4_msgtag_words(l4_msgtag_t t) L4_NOTHROW
Get the number of untyped words.
Definition types.h:443
long l4_msgtag_label(l4_msgtag_t t) L4_NOTHROW
Get the protocol of tag.
Definition types.h:439
@ L4_PROTO_THREAD
Protocol for messages to a thread object.
Definition types.h:64
L4_thread_ops
Operations on thread objects.
Definition thread.h:691
@ L4_THREAD_OPCODE_MASK
Mask for opcodes.
Definition thread.h:705
@ L4_THREAD_AMD64_GET_SEGMENT_INFO_OP
Get segment information.
Definition thread.h:704
@ L4_THREAD_AMD64_SET_SEGMENT_BASE_OP
Set segment base.
Definition thread.h:703
@ L4_THREAD_X86_GDT_OP
Gdt.
Definition thread.h:701
@ L4_THREAD_EX_REGS_OP
Exchange registers operation.
Definition thread.h:693
@ L4_THREAD_STATS_OP
Thread statistics.
Definition thread.h:695
@ L4_THREAD_VCPU_CONTROL_OP
Enable / disable VCPU feature.
Definition thread.h:699
@ L4_THREAD_MODIFY_SENDER_OP
Modify all senders IDs that match the given pattern.
Definition thread.h:698
@ L4_THREAD_CONTROL_OP
Control operation.
Definition thread.h:692
@ L4_THREAD_ARM_TPIDRURO_OP
Set TPIDRURO register.
Definition thread.h:702
@ L4_THREAD_VCPU_RESUME_OP
VCPU resume.
Definition thread.h:696
@ L4_THREAD_REGISTER_DELETE_IRQ_OP
Register an IPC-gate deletion IRQ.
Definition thread.h:697
@ L4_THREAD_SWITCH_OP
Do a thread switch.
Definition thread.h:694
l4_msgtag_t l4_thread_modify_sender_start(void) L4_NOTHROW
Start a thread sender modification sequence.
Definition thread.h:1081
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:1030
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:907
L4_thread_ex_regs_flags
Flags for the thread ex-regs operation.
Definition thread.h:757
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:1087
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:1040
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:780
l4_msgtag_t l4_thread_yield(void) L4_NOTHROW
Yield current time slice.
Definition thread.h:856
l4_msgtag_t l4_thread_vcpu_resume_start(void) L4_NOTHROW
vCPU return from event handler.
Definition thread.h:982
L4_thread_control_flags
Flags for the thread control operation.
Definition thread.h:719
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:914
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:976
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:1015
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:769
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:1008
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:988
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:1098
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:967
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:1025
L4_thread_control_mr_indices
Indices for the values in the message register for thread control.
Definition thread.h:742
@ L4_THREAD_EX_REGS_CANCEL
Cancel ongoing IPC in the thread.
Definition thread.h:758
@ L4_THREAD_EX_REGS_TRIGGER_EXCEPTION
Trigger artificial exception in thread.
Definition thread.h:759
@ L4_THREAD_CONTROL_SET_PAGER
The pager will be given.
Definition thread.h:721
@ L4_THREAD_CONTROL_BIND_TASK
The task to bind the thread to will be given.
Definition thread.h:723
@ L4_THREAD_CONTROL_UX_NATIVE
Fiasco-UX only: pass-through of host system calls is set.
Definition thread.h:727
@ L4_THREAD_CONTROL_ALIEN
Alien state of the thread is set.
Definition thread.h:725
@ L4_THREAD_CONTROL_SET_EXC_HANDLER
The exception handler of the thread will be given.
Definition thread.h:729
@ L4_THREAD_CONTROL_MR_IDX_FLAG_VALS
Index for feature values.
Definition thread.h:746
@ L4_THREAD_CONTROL_MR_IDX_PAGER
Index for pager cap.
Definition thread.h:744
@ L4_THREAD_CONTROL_MR_IDX_BIND_TASK
Index for task flex-page for bind.
Definition thread.h:748
@ L4_THREAD_CONTROL_MR_IDX_EXC_HANDLER
Index for exception handler.
Definition thread.h:745
@ L4_THREAD_CONTROL_MR_IDX_FLAGS
Definition thread.h:743
@ L4_THREAD_CONTROL_MR_IDX_BIND_UTCB
Index for UTCB address for bind.
Definition thread.h:747
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:940
l4_msgtag_t l4_thread_control_commit(l4_cap_idx_t thread) L4_NOTHROW
Commit the thread control parameters.
Definition thread.h:958
void l4_thread_control_alien(int on) L4_NOTHROW
Enable alien mode.
Definition thread.h:946
void l4_thread_control_exc_handler(l4_cap_idx_t exc_handler) L4_NOTHROW
Set the exception handler.
Definition thread.h:933
void l4_thread_control_start(void) L4_NOTHROW
Start a thread control API sequence.
Definition thread.h:921
void l4_thread_control_ux_host_syscall(int on) L4_NOTHROW
Enable pass through of native host (Linux) system calls.
Definition thread.h:952
void l4_thread_control_pager(l4_cap_idx_t pager) L4_NOTHROW
Set the pager.
Definition thread.h:927
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:85
#define L4_IPC_NEVER
never timeout
Definition __timeout.h:82
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:163
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