L4Re – L4 Runtime Environment
segment.h File Reference

Segment handling. More...

#include <l4/sys/ipc.h>
#include <l4/sys/task.h>
#include <l4/sys/thread.h>
+ Include dependency graph for segment.h:

Go to the source code of this file.

Enumerations

enum  L4_task_ldt_x86_consts { L4_TASK_LDT_X86_ENTRY_SIZE = 8 , L4_TASK_LDT_X86_MAX_ENTRIES , L4_TASK_LDT_X86_ENTRY_SIZE = 8 , L4_TASK_LDT_X86_MAX_ENTRIES }
 Contants for LDT handling. More...
 
enum  L4_sys_segment { L4_AMD64_SEGMENT_FS = 0 , L4_AMD64_SEGMENT_GS = 1 }
 Constants for identifying segments. More...
 

Functions

long fiasco_ldt_set (l4_cap_idx_t task, void *ldt, unsigned int num_desc, unsigned int entry_number_start, l4_utcb_t *utcb)
 Set LDT segments descriptors. More...
 
long fiasco_gdt_set (l4_cap_idx_t thread, void *desc, unsigned int size, unsigned int entry_number_start, l4_utcb_t *utcb)
 Set GDT segment descriptors. More...
 
unsigned fiasco_gdt_get_entry_offset (l4_cap_idx_t thread, l4_utcb_t *utcb)
 Return the offset of the entry in the GDT. More...
 
long fiasco_amd64_set_fs (l4_cap_idx_t thread, l4_umword_t base, l4_utcb_t *utcb)
 Set the base address for the FS segment. More...
 
long fiasco_amd64_set_segment_base (l4_cap_idx_t thread, enum L4_sys_segment segr, l4_umword_t base, l4_utcb_t *utcb)
 Set the base address for a segment. More...
 
long fiasco_amd64_segment_info (l4_cap_idx_t thread, unsigned *user_ds, unsigned *user_cs, unsigned *user32_cs, l4_utcb_t *utcb)
 Get segment information. More...
 

Detailed Description

Segment handling.

Definition in file segment.h.

Enumeration Type Documentation

◆ L4_sys_segment

Constants for identifying segments.

Enumerator
L4_AMD64_SEGMENT_FS 

Constant identifying the FS segment.

L4_AMD64_SEGMENT_GS 

Constant identifying the GS segment.

Definition at line 107 of file segment.h.

◆ L4_task_ldt_x86_consts

Contants for LDT handling.

Enumerator
L4_TASK_LDT_X86_ENTRY_SIZE 

Size of an LDT entry.


L4_TASK_LDT_X86_MAX_ENTRIES 

Maximum number of LDT entries that can be written with one call.

L4_TASK_LDT_X86_ENTRY_SIZE 

Size of an LDT entry.


L4_TASK_LDT_X86_MAX_ENTRIES 

Maximum number of LDT entries that can be written with one call.

Definition at line 76 of file segment.h.

Function Documentation

◆ fiasco_amd64_segment_info()

long fiasco_amd64_segment_info ( l4_cap_idx_t  thread,
unsigned *  user_ds,
unsigned *  user_cs,
unsigned *  user32_cs,
l4_utcb_t utcb 
)
inline

Get segment information.

Parameters
[in]threadThread to get info from.
[out]user_dsDS segment selector.
[out]user_cs64-bit CS segment selector.
[out]user32_cs32-bit CS segment selector.
[in]utcbUTCB of the caller.
Returns
System call error

Definition at line 176 of file segment.h.

◆ fiasco_amd64_set_fs()

long fiasco_amd64_set_fs ( l4_cap_idx_t  thread,
l4_umword_t  base,
l4_utcb_t utcb 
)
inline

Set the base address for the FS segment.

Parameters
threadThread for which the FS base address shall be modified.
baseBase address.
utcbUTCB of the caller.
Return values
L4_EOKSuccess.
-L4_EINVALInvalid base address (base).
-L4_ENOSYSOperation not supported with current kernel configuration.
Note
Calling this function is equivalent to calling fiasco_amd64_set_segment_base(thread, L4_AMD64_SEGMENT_FS, base, utcb).

Definition at line 35 of file segment.h.

◆ fiasco_amd64_set_segment_base()

long fiasco_amd64_set_segment_base ( l4_cap_idx_t  thread,
enum L4_sys_segment  segr,
l4_umword_t  base,
l4_utcb_t utcb 
)
inline

Set the base address for a segment.

Parameters
threadThread for which the base address of the selected segment shall be modified.
segrSegment to modify (one of L4_sys_segment).
baseBase address.
utcbUTCB of the caller.
Return values
L4_EOKSuccess.
-L4_EINVALInvalid segment (segr) or base address (base).
-L4_ENOSYSOperation not supported with current kernel configuration.

Definition at line 43 of file segment.h.