Loading...
Searching...
No Matches
__l4_fpage.h
/*
* (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
* Alexander Warg <warg@os.inf.tu-dresden.de>,
* Björn Döbel <doebel@os.inf.tu-dresden.de>,
* Torsten Frenzel <frenzel@os.inf.tu-dresden.de>
* economic rights: Technische Universität Dresden (Germany)
*
* License: see LICENSE.spdx (in this directory or the directories above)
*/
#pragma once
#include <l4/sys/compiler.h>
enum L4_fpage_consts
{
L4_FPAGE_RIGHTS_SHIFT = 0,
L4_FPAGE_TYPE_SHIFT = 4,
L4_FPAGE_SIZE_SHIFT = 6,
L4_FPAGE_ADDR_SHIFT = 12,
L4_FPAGE_RIGHTS_BITS = 4,
L4_FPAGE_TYPE_BITS = 2,
L4_FPAGE_SIZE_BITS = 6,
L4_FPAGE_ADDR_BITS = L4_MWORD_BITS - L4_FPAGE_ADDR_SHIFT,
L4_FPAGE_RIGHTS_MASK = ((1UL << L4_FPAGE_RIGHTS_BITS) - 1)
<< L4_FPAGE_RIGHTS_SHIFT,
L4_FPAGE_TYPE_MASK = ((1UL << L4_FPAGE_TYPE_BITS) - 1)
<< L4_FPAGE_TYPE_SHIFT,
L4_FPAGE_SIZE_MASK = ((1UL << L4_FPAGE_SIZE_BITS) - 1)
<< L4_FPAGE_SIZE_SHIFT,
L4_FPAGE_ADDR_MASK = ~0UL << L4_FPAGE_ADDR_SHIFT,
L4_FPAGE_RIGHTS_ALL = L4_FPAGE_RIGHTS_MASK,
};
typedef union {
l4_umword_t fpage;
l4_umword_t raw;
} l4_fpage_t;
enum
{
L4_WHOLE_ADDRESS_SPACE = 63
};
typedef struct {
l4_umword_t snd_base;
l4_fpage_t fpage;
} l4_snd_fpage_t;
enum L4_fpage_rights
{
L4_FPAGE_X = 1,
L4_FPAGE_W = 2,
L4_FPAGE_RO = 4,
L4_FPAGE_RW = L4_FPAGE_RO | L4_FPAGE_W,
L4_FPAGE_RX = L4_FPAGE_RO | L4_FPAGE_X,
L4_FPAGE_RWX = L4_FPAGE_RW | L4_FPAGE_X,
};
enum L4_cap_fpage_rights
{
L4_CAP_FPAGE_W = 0x1,
L4_CAP_FPAGE_S = 0x2,
L4_CAP_FPAGE_R = 0x4,
L4_CAP_FPAGE_RO = 0x4,
L4_CAP_FPAGE_D = 0x8,
L4_CAP_FPAGE_RW = L4_CAP_FPAGE_R | L4_CAP_FPAGE_W,
L4_CAP_FPAGE_RS = L4_CAP_FPAGE_R | L4_CAP_FPAGE_S,
L4_CAP_FPAGE_RWS = L4_CAP_FPAGE_RW | L4_CAP_FPAGE_S,
L4_CAP_FPAGE_RWSD = L4_CAP_FPAGE_RWS | L4_CAP_FPAGE_D,
L4_CAP_FPAGE_RWD = L4_CAP_FPAGE_RW | L4_CAP_FPAGE_D,
L4_CAP_FPAGE_RSD = L4_CAP_FPAGE_RS | L4_CAP_FPAGE_D,
};
enum L4_fpage_type
{
L4_FPAGE_SPECIAL = 0,
L4_FPAGE_MEMORY = 1,
L4_FPAGE_IO = 2,
L4_FPAGE_OBJ = 3,
};
enum L4_fpage_control
{
L4_FPAGE_CONTROL_OFFSET_SHIFT = 12,
L4_FPAGE_CONTROL_MASK = ~0UL << L4_FPAGE_CONTROL_OFFSET_SHIFT,
};
enum L4_obj_fpage_ctl
{
L4_FPAGE_C_REF_CNT = 0x00,
L4_FPAGE_C_NO_REF_CNT = 0x10,
L4_FPAGE_C_OBJ_RIGHT1 = 0x20,
L4_FPAGE_C_OBJ_RIGHT2 = 0x40,
L4_FPAGE_C_OBJ_RIGHT3 = 0x80,
L4_FPAGE_C_OBJ_RIGHTS = 0xe0,
L4_FPAGE_C_IPCGATE_SVR = L4_FPAGE_C_OBJ_RIGHT1
};
enum l4_fpage_cacheability_opt_t
{
L4_FPAGE_CACHE_OPT = 0x1,
L4_FPAGE_CACHEABLE = 0x3,
L4_FPAGE_BUFFERABLE = 0x5,
L4_FPAGE_UNCACHEABLE = 0x1
};
enum
{
L4_WHOLE_IOADDRESS_SPACE = 16,
L4_IOPORT_MAX = (1L << L4_WHOLE_IOADDRESS_SPACE)
};
L4_INLINE l4_fpage_t
l4_fpage(l4_addr_t address, unsigned int order, unsigned char rights) L4_NOTHROW;
L4_INLINE l4_fpage_t
l4_fpage_all(void) L4_NOTHROW;
L4_INLINE l4_fpage_t
l4_fpage_invalid(void) L4_NOTHROW;
L4_INLINE l4_fpage_t
l4_iofpage(unsigned long port, unsigned int order) L4_NOTHROW;
L4_INLINE l4_fpage_t
l4_obj_fpage(l4_cap_idx_t obj, unsigned int order, unsigned char rights) L4_NOTHROW;
L4_INLINE int
l4_is_fpage_writable(l4_fpage_t fp) L4_NOTHROW;
L4_INLINE l4_umword_t
l4_map_control(l4_umword_t spot, unsigned char cache, unsigned grant) L4_NOTHROW;
L4_INLINE l4_umword_t
l4_map_obj_control(l4_umword_t spot, unsigned grant) L4_NOTHROW;
L4_INLINE unsigned
l4_fpage_rights(l4_fpage_t f) L4_NOTHROW;
L4_INLINE unsigned
l4_fpage_type(l4_fpage_t f) L4_NOTHROW;
L4_INLINE unsigned
l4_fpage_size(l4_fpage_t f) L4_NOTHROW;
L4_INLINE unsigned long
l4_fpage_page(l4_fpage_t f) L4_NOTHROW;
L4_INLINE l4_addr_t
l4_fpage_memaddr(l4_fpage_t f) L4_NOTHROW;
L4_INLINE l4_cap_idx_t
l4_fpage_obj(l4_fpage_t f) L4_NOTHROW;
L4_INLINE unsigned long
l4_fpage_ioport(l4_fpage_t f) L4_NOTHROW;
L4_INLINE l4_fpage_t
l4_fpage_set_rights(l4_fpage_t src, unsigned char new_rights) L4_NOTHROW;
L4_INLINE int
l4_fpage_contains(l4_fpage_t fpage, l4_addr_t addr, unsigned order) L4_NOTHROW;
L4_INLINE unsigned char
l4_fpage_max_order(unsigned char order, l4_addr_t addr,
l4_addr_t min_addr, l4_addr_t max_addr,
l4_addr_t hotspot L4_DEFAULT_PARAM(0));
L4_INLINE int
l4_is_fpage_valid(l4_fpage_t fp) L4_NOTHROW;
/*************************************************************************
* Implementations
*************************************************************************/
L4_INLINE unsigned
l4_fpage_rights(l4_fpage_t f) L4_NOTHROW
{
return (f.raw & L4_FPAGE_RIGHTS_MASK) >> L4_FPAGE_RIGHTS_SHIFT;
}
L4_INLINE unsigned
l4_fpage_type(l4_fpage_t f) L4_NOTHROW
{
return (f.raw & L4_FPAGE_TYPE_MASK) >> L4_FPAGE_TYPE_SHIFT;
}
L4_INLINE unsigned
l4_fpage_size(l4_fpage_t f) L4_NOTHROW
{
return (f.raw & L4_FPAGE_SIZE_MASK) >> L4_FPAGE_SIZE_SHIFT;
}
L4_INLINE unsigned long
l4_fpage_page(l4_fpage_t f) L4_NOTHROW
{
return (f.raw & L4_FPAGE_ADDR_MASK) >> L4_FPAGE_ADDR_SHIFT;
}
L4_INLINE unsigned long
l4_fpage_ioport(l4_fpage_t f) L4_NOTHROW
{
return (f.raw & L4_FPAGE_ADDR_MASK) >> L4_FPAGE_ADDR_SHIFT;
}
L4_INLINE l4_addr_t
l4_fpage_memaddr(l4_fpage_t f) L4_NOTHROW
{
return f.raw & L4_FPAGE_ADDR_MASK;
}
L4_INLINE l4_cap_idx_t
l4_fpage_obj(l4_fpage_t f) L4_NOTHROW
{
return f.raw & L4_FPAGE_ADDR_MASK;
}
L4_INLINE l4_fpage_t
__l4_fpage_generic(unsigned long address, unsigned int type,
unsigned int order, unsigned char rights) L4_NOTHROW;
L4_INLINE l4_fpage_t
__l4_fpage_generic(unsigned long address, unsigned int type,
unsigned int order, unsigned char rights) L4_NOTHROW
{
l4_fpage_t t;
t.raw = ((rights << L4_FPAGE_RIGHTS_SHIFT) & L4_FPAGE_RIGHTS_MASK)
| ((type << L4_FPAGE_TYPE_SHIFT) & L4_FPAGE_TYPE_MASK)
| ((order << L4_FPAGE_SIZE_SHIFT) & L4_FPAGE_SIZE_MASK)
| ((address ) & L4_FPAGE_ADDR_MASK);
return t;
}
L4_INLINE l4_fpage_t
l4_fpage_set_rights(l4_fpage_t src, unsigned char new_rights) L4_NOTHROW
{
l4_fpage_t f;
f.raw = ((L4_FPAGE_TYPE_MASK | L4_FPAGE_SIZE_MASK | L4_FPAGE_ADDR_MASK) & src.raw)
| ((new_rights << L4_FPAGE_RIGHTS_SHIFT) & L4_FPAGE_RIGHTS_MASK);
return f;
}
L4_INLINE l4_fpage_t
l4_fpage(l4_addr_t address, unsigned int order, unsigned char rights) L4_NOTHROW
{
return __l4_fpage_generic(address, L4_FPAGE_MEMORY, order, rights);
}
L4_INLINE l4_fpage_t
l4_iofpage(unsigned long port, unsigned int order) L4_NOTHROW
{
return __l4_fpage_generic(port << L4_FPAGE_ADDR_SHIFT, L4_FPAGE_IO, order, L4_FPAGE_RW);
}
L4_INLINE l4_fpage_t
l4_obj_fpage(l4_cap_idx_t obj, unsigned int order, unsigned char rights) L4_NOTHROW
{
static_assert((unsigned long)L4_CAP_SHIFT >= L4_FPAGE_ADDR_SHIFT,
"Capability index does not fit into fpage.");
return __l4_fpage_generic(obj, L4_FPAGE_OBJ, order, rights);
}
L4_INLINE l4_fpage_t
l4_fpage_all(void) L4_NOTHROW
{
return __l4_fpage_generic(0, L4_FPAGE_SPECIAL, L4_WHOLE_ADDRESS_SPACE, 0);
}
L4_INLINE l4_fpage_t
l4_fpage_invalid(void) L4_NOTHROW
{
return __l4_fpage_generic(0, L4_FPAGE_SPECIAL, 0, 0);
}
L4_INLINE int
l4_is_fpage_writable(l4_fpage_t fp) L4_NOTHROW
{
return l4_fpage_rights(fp) & L4_FPAGE_W;
}
L4_INLINE l4_umword_t
l4_map_control(l4_umword_t snd_base, unsigned char cache, unsigned grant) L4_NOTHROW
{
return (snd_base & L4_FPAGE_CONTROL_MASK)
| ((l4_umword_t)cache << 4) | L4_ITEM_MAP | grant;
}
L4_INLINE l4_umword_t
l4_map_obj_control(l4_umword_t snd_base, unsigned grant) L4_NOTHROW
{
return l4_map_control(snd_base, 0, grant);
}
L4_INLINE int
l4_fpage_contains(l4_fpage_t fpage, l4_addr_t addr, unsigned log2size) L4_NOTHROW
{
l4_addr_t fa = l4_fpage_memaddr(fpage);
return (fa <= addr)
&& (fa + (1UL << l4_fpage_size(fpage)) >= addr + (1UL << log2size));
}
L4_INLINE unsigned char
l4_fpage_max_order(unsigned char order, l4_addr_t addr,
l4_addr_t min_addr, l4_addr_t max_addr,
l4_addr_t hotspot)
{
while (order < 30 /* limit to 1GB flexpages */)
{
l4_addr_t mask;
l4_addr_t base = l4_trunc_size(addr, order + 1);
if (base < min_addr)
return order;
if (base + (1UL << (order + 1)) - 1 > max_addr - 1)
return order;
mask = ~(~0UL << (order + 1));
if (hotspot == ~0UL || ((addr ^ hotspot) & mask))
break;
++order;
}
return order;
}
L4_INLINE int
l4_is_fpage_valid(l4_fpage_t fp) L4_NOTHROW
{
return l4_fpage_type(fp) != L4_FPAGE_SPECIAL || l4_fpage_size(fp) != 0;
}
compiler.h
L4 compiler related defines.
l4_umword_t
unsigned long l4_umword_t
Unsigned machine word.
Definition l4int.h:40
l4_addr_t
unsigned long l4_addr_t
Address type.
Definition l4int.h:34
L4_MWORD_BITS
#define L4_MWORD_BITS
Size of machine words in bits.
Definition l4int.h:22
l4_cap_idx_t
unsigned long l4_cap_idx_t
Capability selector type.
Definition types.h:336
L4_CAP_SHIFT
@ L4_CAP_SHIFT
Capability index shift.
Definition consts.h:142
l4_fpage_page
unsigned long l4_fpage_page(l4_fpage_t f) L4_NOTHROW
Return the page part from a flexpage.
Definition __l4_fpage.h:653
l4_fpage_contains
int l4_fpage_contains(l4_fpage_t fpage, l4_addr_t addr, unsigned order) L4_NOTHROW
Test whether a given range is completely within an fpage.
Definition __l4_fpage.h:755
l4_obj_fpage
l4_fpage_t l4_obj_fpage(l4_cap_idx_t obj, unsigned int order, unsigned char rights) L4_NOTHROW
Create a kernel-object flexpage.
Definition __l4_fpage.h:715
l4_fpage_all
l4_fpage_t l4_fpage_all(void) L4_NOTHROW
Get a flexpage, describing all address spaces at once.
Definition __l4_fpage.h:723
l4_fpage_set_rights
l4_fpage_t l4_fpage_set_rights(l4_fpage_t src, unsigned char new_rights) L4_NOTHROW
Set new right in a flexpage.
Definition __l4_fpage.h:694
L4_fpage_rights
L4_fpage_rights
Memory and IO port flexpage rights.
Definition __l4_fpage.h:119
L4_fpage_control
L4_fpage_control
Flexpage map control flags.
Definition __l4_fpage.h:244
l4_fpage_type
unsigned l4_fpage_type(l4_fpage_t f) L4_NOTHROW
Return type from a flexpage.
Definition __l4_fpage.h:641
l4_fpage_ioport
unsigned long l4_fpage_ioport(l4_fpage_t f) L4_NOTHROW
Return the IO port number from the IO flexpage.
Definition __l4_fpage.h:659
l4_fpage_memaddr
l4_addr_t l4_fpage_memaddr(l4_fpage_t f) L4_NOTHROW
Return the memory address from the memory flexpage.
Definition __l4_fpage.h:665
l4_fpage
l4_fpage_t l4_fpage(l4_addr_t address, unsigned int order, unsigned char rights) L4_NOTHROW
Create a memory flexpage.
Definition __l4_fpage.h:703
l4_fpage_size
unsigned l4_fpage_size(l4_fpage_t f) L4_NOTHROW
Return size (log2) from a flexpage.
Definition __l4_fpage.h:647
l4_fpage_max_order
unsigned char l4_fpage_max_order(unsigned char order, l4_addr_t addr, l4_addr_t min_addr, l4_addr_t max_addr, l4_addr_t hotspot=0)
Determine maximum flexpage size of a region.
Definition __l4_fpage.h:763
l4_fpage_rights
unsigned l4_fpage_rights(l4_fpage_t f) L4_NOTHROW
Return rights from a flexpage.
Definition __l4_fpage.h:635
l4_iofpage
l4_fpage_t l4_iofpage(unsigned long port, unsigned int order) L4_NOTHROW
Create an IO-port flexpage.
Definition __l4_fpage.h:709
l4_is_fpage_writable
int l4_is_fpage_writable(l4_fpage_t fp) L4_NOTHROW
Test if the flexpage is writable.
Definition __l4_fpage.h:736
L4_fpage_type
L4_fpage_type
Flexpage type.
Definition __l4_fpage.h:231
l4_fpage_invalid
l4_fpage_t l4_fpage_invalid(void) L4_NOTHROW
Get an invalid flexpage.
Definition __l4_fpage.h:729
l4_fpage_obj
l4_cap_idx_t l4_fpage_obj(l4_fpage_t f) L4_NOTHROW
Return the capability index from the object flexpage.
Definition __l4_fpage.h:671
L4_cap_fpage_rights
L4_cap_fpage_rights
Object flexpage rights.
Definition __l4_fpage.h:149
l4_is_fpage_valid
int l4_is_fpage_valid(l4_fpage_t fp) L4_NOTHROW
Test if the flexpage is valid.
Definition __l4_fpage.h:788
L4_fpage_consts
L4_fpage_consts
L4 flexpage structure.
Definition __l4_fpage.h:49
L4_WHOLE_IOADDRESS_SPACE
@ L4_WHOLE_IOADDRESS_SPACE
Whole I/O address space size.
Definition __l4_fpage.h:319
L4_IOPORT_MAX
@ L4_IOPORT_MAX
Maximum I/O port address plus 1.
Definition __l4_fpage.h:322
L4_FPAGE_X
@ L4_FPAGE_X
Executable flexpage.
Definition __l4_fpage.h:120
L4_FPAGE_RWX
@ L4_FPAGE_RWX
Read-write-execute flexpage.
Definition __l4_fpage.h:125
L4_FPAGE_RX
@ L4_FPAGE_RX
Read-execute flexpage.
Definition __l4_fpage.h:124
L4_FPAGE_RO
@ L4_FPAGE_RO
Read-only flexpage.
Definition __l4_fpage.h:122
L4_FPAGE_RW
@ L4_FPAGE_RW
Read-write flexpage.
Definition __l4_fpage.h:123
L4_FPAGE_W
@ L4_FPAGE_W
Writable flexpage.
Definition __l4_fpage.h:121
L4_FPAGE_CONTROL_MASK
@ L4_FPAGE_CONTROL_MASK
Mask for truncating the lower bits of the send base or the index of the control word.
Definition __l4_fpage.h:250
L4_FPAGE_CONTROL_OFFSET_SHIFT
@ L4_FPAGE_CONTROL_OFFSET_SHIFT
Number of bits an index must be shifted or an address must be aligned to in the control word.
Definition __l4_fpage.h:247
L4_FPAGE_MEMORY
@ L4_FPAGE_MEMORY
Flexpage for memory spaces.
Definition __l4_fpage.h:235
L4_FPAGE_IO
@ L4_FPAGE_IO
Flexpage for I/O port spaces.
Definition __l4_fpage.h:236
L4_FPAGE_OBJ
@ L4_FPAGE_OBJ
Flexpage for object spaces.
Definition __l4_fpage.h:237
L4_FPAGE_SPECIAL
@ L4_FPAGE_SPECIAL
Special flexpage, either l4_fpage_invalid() or l4_fpage_all(); only supported by selected interfaces.
Definition __l4_fpage.h:232
L4_WHOLE_ADDRESS_SPACE
@ L4_WHOLE_ADDRESS_SPACE
Whole address space size.
Definition __l4_fpage.h:92
L4_CAP_FPAGE_RO
@ L4_CAP_FPAGE_RO
Read right for capability flexpages.
Definition __l4_fpage.h:176
L4_CAP_FPAGE_R
@ L4_CAP_FPAGE_R
Read right for capability flexpages.
Definition __l4_fpage.h:175
L4_CAP_FPAGE_RW
@ L4_CAP_FPAGE_RW
Read and interface specific 'W' right for capability flexpages.
Definition __l4_fpage.h:192
L4_CAP_FPAGE_W
@ L4_CAP_FPAGE_W
Interface specific 'W' right for capability flexpages.
Definition __l4_fpage.h:157
L4_CAP_FPAGE_RS
@ L4_CAP_FPAGE_RS
Read and interface specific 'S' right for capability flexpages.
Definition __l4_fpage.h:199
L4_CAP_FPAGE_RWSD
@ L4_CAP_FPAGE_RWSD
Full rights for capability flexpages.
Definition __l4_fpage.h:212
L4_CAP_FPAGE_RSD
@ L4_CAP_FPAGE_RSD
Read, 'S', and delete right for capability flexpages.
Definition __l4_fpage.h:224
L4_CAP_FPAGE_RWS
@ L4_CAP_FPAGE_RWS
Read, interface specific 'W', and 'S' rights for capability flexpages.
Definition __l4_fpage.h:206
L4_CAP_FPAGE_D
@ L4_CAP_FPAGE_D
Delete right for capability flexpages.
Definition __l4_fpage.h:185
L4_CAP_FPAGE_S
@ L4_CAP_FPAGE_S
Interface specific 'S' right for capability flexpages.
Definition __l4_fpage.h:169
L4_CAP_FPAGE_RWD
@ L4_CAP_FPAGE_RWD
Read, write, and delete right for capability flexpages.
Definition __l4_fpage.h:218
L4_FPAGE_ADDR_SHIFT
@ L4_FPAGE_ADDR_SHIFT
Page address shift.
Definition __l4_fpage.h:53
L4_FPAGE_TYPE_SHIFT
@ L4_FPAGE_TYPE_SHIFT
Flexpage type shift (memory, IO port, obj...).
Definition __l4_fpage.h:51
L4_FPAGE_RIGHTS_MASK
@ L4_FPAGE_RIGHTS_MASK
Mask to get the flexpage rights.
Definition __l4_fpage.h:61
L4_FPAGE_TYPE_BITS
@ L4_FPAGE_TYPE_BITS
Flexpage type size (memory, IO port, obj...).
Definition __l4_fpage.h:56
L4_FPAGE_RIGHTS_BITS
@ L4_FPAGE_RIGHTS_BITS
Access permissions size.
Definition __l4_fpage.h:55
L4_FPAGE_RIGHTS_ALL
@ L4_FPAGE_RIGHTS_ALL
Specify as flexpage rights during grant.
Definition __l4_fpage.h:69
L4_FPAGE_ADDR_BITS
@ L4_FPAGE_ADDR_BITS
Page address size.
Definition __l4_fpage.h:58
L4_FPAGE_SIZE_BITS
@ L4_FPAGE_SIZE_BITS
Flexpage size size (log2-based).
Definition __l4_fpage.h:57
L4_FPAGE_RIGHTS_SHIFT
@ L4_FPAGE_RIGHTS_SHIFT
Access permissions shift.
Definition __l4_fpage.h:50
L4_FPAGE_SIZE_SHIFT
@ L4_FPAGE_SIZE_SHIFT
Flexpage size shift (log2-based).
Definition __l4_fpage.h:52
l4_trunc_size
l4_addr_t l4_trunc_size(l4_addr_t address, unsigned char bits) L4_NOTHROW
Round an address down to the next lower flexpage with size bits.
Definition consts.h:459
l4_map_control
l4_umword_t l4_map_control(l4_umword_t spot, unsigned char cache, unsigned grant) L4_NOTHROW
Create the first word for a map item that is a send item for the memory space.
Definition __l4_fpage.h:742
l4_fpage_cacheability_opt_t
l4_fpage_cacheability_opt_t
Cacheability options for memory send items.
Definition __l4_fpage.h:292
l4_map_obj_control
l4_umword_t l4_map_obj_control(l4_umword_t spot, unsigned grant) L4_NOTHROW
Create the first word for a map item that is a send item for the object space.
Definition __l4_fpage.h:749
L4_obj_fpage_ctl
L4_obj_fpage_ctl
Attributes and additional permissions for object send items.
Definition __l4_fpage.h:263
L4_FPAGE_CACHEABLE
@ L4_FPAGE_CACHEABLE
Cacheability option to enable caches for the mapping.
Definition __l4_fpage.h:299
L4_FPAGE_CACHE_OPT
@ L4_FPAGE_CACHE_OPT
Enable the cacheability option in a memory send item.
Definition __l4_fpage.h:295
L4_FPAGE_UNCACHEABLE
@ L4_FPAGE_UNCACHEABLE
Cacheability option to disable caching for the mapping.
Definition __l4_fpage.h:307
L4_FPAGE_BUFFERABLE
@ L4_FPAGE_BUFFERABLE
Cacheability option to enable buffered writes for the mapping.
Definition __l4_fpage.h:303
L4_ITEM_MAP
@ L4_ITEM_MAP
Identify a message item as map item.
Definition consts.h:214
L4_FPAGE_C_NO_REF_CNT
@ L4_FPAGE_C_NO_REF_CNT
Don't increase the reference counter.
Definition __l4_fpage.h:265
L4_FPAGE_C_OBJ_RIGHT1
@ L4_FPAGE_C_OBJ_RIGHT1
Object-type specific right.
Definition __l4_fpage.h:267
L4_FPAGE_C_IPCGATE_SVR
@ L4_FPAGE_C_IPCGATE_SVR
The receiver may invoke IPC-gate-specific functions on the capability, e.g.
Definition __l4_fpage.h:277
L4_FPAGE_C_OBJ_RIGHT2
@ L4_FPAGE_C_OBJ_RIGHT2
Object-type specific right.
Definition __l4_fpage.h:268
L4_FPAGE_C_OBJ_RIGHT3
@ L4_FPAGE_C_OBJ_RIGHT3
Object-type specific right.
Definition __l4_fpage.h:269
L4_FPAGE_C_OBJ_RIGHTS
@ L4_FPAGE_C_OBJ_RIGHTS
All Object-type specific right bits.
Definition __l4_fpage.h:270
L4_FPAGE_C_REF_CNT
@ L4_FPAGE_C_REF_CNT
Mapping is reference-counted (default).
Definition __l4_fpage.h:264
L4_NOTHROW
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
Definition compiler.h:161
L4_INLINE
#define L4_INLINE
L4 Inline function attribute.
Definition compiler.h:51
l4_snd_fpage_t
Send-flexpage types.
Definition __l4_fpage.h:99
l4_snd_fpage_t::fpage
l4_fpage_t fpage
Source flexpage descriptor.
Definition __l4_fpage.h:101
l4_snd_fpage_t::snd_base
l4_umword_t snd_base
Offset in receive window (send base).
Definition __l4_fpage.h:100
l4_fpage_t
L4 flexpage type.
Definition __l4_fpage.h:76
l4_fpage_t::raw
l4_umword_t raw
Raw value.
Definition __l4_fpage.h:78
l4_fpage_t::fpage
l4_umword_t fpage
Raw value.
Definition __l4_fpage.h:77