216 L4_FPAGE_SPECIAL = 0,
227 L4_FPAGE_CONTROL_OFFSET_SHIFT = 10,
228 L4_FPAGE_CONTROL_MASK = ~0UL << L4_FPAGE_CONTROL_OFFSET_SHIFT,
462 L4_INLINE
unsigned long 510 L4_INLINE
unsigned long 555 L4_INLINE
unsigned char 582 L4_INLINE
unsigned long 588 L4_INLINE
unsigned long 597 return f.raw & L4_FPAGE_ADDR_MASK;
603 return f.raw & L4_FPAGE_ADDR_MASK;
608 __l4_fpage_generic(
unsigned long address,
unsigned int type,
609 unsigned int size,
unsigned char rights)
L4_NOTHROW;
612 __l4_fpage_generic(
unsigned long address,
unsigned int type,
613 unsigned int size,
unsigned char rights) L4_NOTHROW
619 | ((address ) & L4_FPAGE_ADDR_MASK);
627 f.
raw = ((L4_FPAGE_TYPE_MASK | L4_FPAGE_SIZE_MASK | L4_FPAGE_ADDR_MASK) & src.raw)
635 return __l4_fpage_generic(address, L4_FPAGE_MEMORY, size, rights);
648 "Capability index does not fit into fpage.");
649 return __l4_fpage_generic(obj, L4_FPAGE_OBJ, order, rights);
661 return __l4_fpage_generic(0, 0, 0, 0);
674 return (snd_base & L4_FPAGE_CONTROL_MASK)
689 && (fa + (1UL << l4_fpage_size(fpage)) >= addr + (1UL << log2size));
692 L4_INLINE
unsigned char 704 if (base + (1UL << (order + 1)) - 1 > max_addr - 1)
707 mask = ~(~0UL << (order + 1));
708 if (hotspot == ~0UL || ((addr ^ hotspot) & mask))
Identify a message item as map item.
Whole I/O address space size.
Object-type specific right.
l4_fpage_t l4_iofpage(unsigned long port, unsigned int size) L4_NOTHROW
Create an IO-port flex page.
Read and interface specific 'W' right for capability flex-pages.
Interface specific 'S' right for capability flex-pages.
Object-type specific right.
l4_umword_t fpage
Raw value.
l4_fpage_consts
L4 flexpage structure.
Interface specific 'W' right for capability flex-pages.
Read-write-execute flex page.
Whole address space size.
unsigned long l4_fpage_page(l4_fpage_t f) L4_NOTHROW
Return the page part from a flex page.
unsigned long l4_fpage_ioport(l4_fpage_t f) L4_NOTHROW
Return the IO port number from the IO flex page.
Read and interface specific 'S' right for capability flex-pages.
Mapping is reference-counted (default).
L4_obj_fpage_ctl
Flex-page map control for capabilities (snd_base)
Flexpage type size (memory, IO port, obj...)
unsigned long l4_cap_idx_t
L4 Capability selector Type.
The receiver may invoke IPC-gate-specific functions on the capability, e.g.
Object-type specific right.
l4_fpage_t fpage
Source flex-page descriptor.
Cacheability option to enable caches for the mapping.
L4_cap_fpage_rights
Cap-flex-page rights.
int l4_fpage_contains(l4_fpage_t fpage, l4_addr_t addr, unsigned size) L4_NOTHROW
Test whether a given range is completely within an fpage.
Delete right for capability flex-pages.
Don't increase the reference counter.
l4_addr_t l4_trunc_size(l4_addr_t address, unsigned char bits) L4_NOTHROW
Round an address down to the next lower flex page with size bits.
l4_fpage_t l4_fpage_invalid(void) L4_NOTHROW
Get an invalid flex page.
Read right for capability flex-pages.
Read, 'S', and delete right for capability flex-pages.
unsigned l4_fpage_rights(l4_fpage_t f) L4_NOTHROW
Return rights from a flex page.
l4_fpage_t l4_fpage(l4_addr_t address, unsigned int size, unsigned char rights) L4_NOTHROW
Create a memory flex page.
Flexpage type shift (memory, IO port, obj...)
Maximum I/O port address.
unsigned l4_fpage_type(l4_fpage_t f) L4_NOTHROW
Return type from a flex page.
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 flex page size of a region.
l4_cap_idx_t l4_fpage_obj(l4_fpage_t f) L4_NOTHROW
Return the capability index from the object flex page.
unsigned long l4_umword_t
Unsigned machine word.
L4_fpage_rights
Flex-page rights.
L4_fpage_type
Flex-page type.
Enable the cacheability option in a send flex page.
Cacheability option to disable caching for the mapping.
l4_umword_t raw
Raw value.
Flexpage size size (log2-based)
l4_addr_t l4_fpage_memaddr(l4_fpage_t f) L4_NOTHROW
Return the memory address from the memory flex page.
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.
All Object-type specific right bits.
Mask to get the flexpage rights.
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 for the memory space.
l4_fpage_cacheability_opt_t
Flex-page cacheability option.
L4_fpage_control
Flex-page map control flags.
Read, write, and delete right for capability flex-pages.
unsigned l4_fpage_size(l4_fpage_t f) L4_NOTHROW
Return size from a flex page.
int l4_is_fpage_writable(l4_fpage_t fp) L4_NOTHROW
Test if the flex page is writable.
Access permissions shift.
l4_umword_t snd_base
Offset in receive window (send base)
Read, interface specific 'W', and 'S' rights for capability flex-pages.
l4_fpage_t l4_fpage_set_rights(l4_fpage_t src, unsigned char new_rights) L4_NOTHROW
Set new right in a flex page.
unsigned long l4_addr_t
Address type.
l4_fpage_t l4_fpage_all(void) L4_NOTHROW
Get a flex page, describing all address spaces at once.
Full rights for capability flex-pages.
Read right for capability flex-pages.
Flexpage size shift (log2-based)
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.
Cacheability option to enable buffered writes for the mapping.
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
#define L4_MWORD_BITS
Size of machine words in bits.