Loading...
Searching...
No Matches
Message Tag
Base API » Object Invocation

API related to the message tag data type. More...

Collaboration diagram for Message Tag:

## Data Structures

struct | l4_msgtag_t
| Message tag data structure. More...

## Typedefs

typedef struct l4_msgtag_t | l4_msgtag_t
| Message tag data structure.

## Enumerations

enum | L4_platform_ctl_proto { L4_PROTO_PLATFORM_CTL = 0 }
| Predefined protocol type for messages to platform-control objects. More...

enum

L4_msgtag_protocol {
L4_PROTO_NONE = 0 , L4_PROTO_ALLOW_SYSCALL = 1 , L4_PROTO_PF_EXCEPTION = 1 , L4_PROTO_IRQ = -1L ,
L4_PROTO_PAGE_FAULT = -2L , L4_PROTO_EXCEPTION = -5L , L4_PROTO_SIGMA0 = -6L , L4_PROTO_IO_PAGE_FAULT = -8L ,
L4_PROTO_THREAD_GROUP = -9L , L4_PROTO_KOBJECT = -10L , L4_PROTO_TASK = -11L , L4_PROTO_THREAD = -12L ,
L4_PROTO_LOG = -13L , L4_PROTO_SCHEDULER = -14L , L4_PROTO_FACTORY = -15L , L4_PROTO_VM = -16L ,
L4_PROTO_DMA_SPACE = -17L , L4_PROTO_IRQ_SENDER = -18L , L4_PROTO_SEMAPHORE = -20L , L4_PROTO_META = -21L ,
L4_PROTO_IOMMU = -22L , L4_PROTO_DEBUGGER = -23L , L4_PROTO_SMCCC = -24L , L4_PROTO_VCPU_CONTEXT = -25L
}

| Message tag for IPC operations. More...
enum | L4_msgtag_flags { L4_MSGTAG_ERROR , L4_MSGTAG_TRANSFER_FPU , L4_MSGTAG_SCHEDULE , L4_MSGTAG_PROPAGATE = 0x4000 , L4_MSGTAG_FLAGS }
| Flags for message tags. More...

## Functions

l4_msgtag_t | l4_msgtag (long label, unsigned words, unsigned items, unsigned flags) L4_NOTHROW
| Create a message tag from the specified values.
long | l4_msgtag_label (l4_msgtag_t t) L4_NOTHROW
| Get the protocol of tag.
unsigned | l4_msgtag_words (l4_msgtag_t t) L4_NOTHROW
| Get the number of untyped words.
unsigned | l4_msgtag_items (l4_msgtag_t t) L4_NOTHROW
| Get the number of typed items.
unsigned | l4_msgtag_flags (l4_msgtag_t t) L4_NOTHROW
| Get the flags.
unsigned | l4_msgtag_has_error (l4_msgtag_t t) L4_NOTHROW
| Test for error indicator flag.
unsigned | l4_msgtag_is_page_fault (l4_msgtag_t t) L4_NOTHROW
| Test for page-fault protocol.
unsigned | l4_msgtag_is_exception (l4_msgtag_t t) L4_NOTHROW
| Test for exception protocol.
unsigned | l4_msgtag_is_sigma0 (l4_msgtag_t t) L4_NOTHROW
| Test for sigma0 protocol.
unsigned | l4_msgtag_is_io_page_fault (l4_msgtag_t t) L4_NOTHROW
| Test for IO-page-fault protocol.

## Detailed Description

API related to the message tag data type.

Include File
  #include <l4/sys/types.h>
  types.h
  Common L4 ABI Data Types.

## Typedef Documentation

## l4_msgtag_t

typedef struct l4_msgtag_t l4_msgtag_t

Message tag data structure.

Include File
  #include <l4/sys/types.h>

Describes the details of an IPC operation, in particular which parts of the UTCB have to be transmitted, and also flags to enable real-time and FPU extensions.

The message tag also contains a user-defined label that could be used to specify a protocol ID. Some negative values are reserved for kernel protocols such as page faults and exceptions.

The type must be treated completely opaque.

## Enumeration Type Documentation

## L4_msgtag_flags

enum L4_msgtag_flags

Flags for message tags.

Enumerator
L4_MSGTAG_ERROR | Error indicator flag.
L4_MSGTAG_TRANSFER_FPU | Enable FPU transfer flag for IPC. By enabling this flag when sending IPC, the sender indicates that the contents of the FPU shall be transferred to the receiving thread. However, the receiver has to indicate its willingness to receive FPU context in its buffer descriptor register (BDR).
L4_MSGTAG_SCHEDULE | Enable schedule in IPC flag. Usually IPC operations donate the remaining time slice of a thread to the called thread. Enabling this flag when sending IPC does a real scheduling decision. However, this flag decreases IPC performance.
L4_MSGTAG_FLAGS | Mask for all flags.

Definition at line 86 of file types.h.

## L4_msgtag_protocol

enum L4_msgtag_protocol

Message tag for IPC operations.

All predefined protocols used by the kernel.

Enumerator
L4_PROTO_NONE | Default protocol tag to reply to kernel.
L4_PROTO_ALLOW_SYSCALL | Allow an alien the system call.
L4_PROTO_PF_EXCEPTION | Make an exception out of a page fault.
L4_PROTO_IRQ | IRQ message.
L4_PROTO_PAGE_FAULT | Page fault message.
L4_PROTO_EXCEPTION | Exception.
L4_PROTO_SIGMA0 | Sigma0 protocol.
L4_PROTO_IO_PAGE_FAULT | I/O page fault message.
L4_PROTO_THREAD_GROUP | Protocol for messages to a thread group obj.
L4_PROTO_KOBJECT | Protocol for messages to a generic kobject.
L4_PROTO_TASK | Protocol for messages to a task object.
L4_PROTO_THREAD | Protocol for messages to a thread object.
L4_PROTO_LOG | Protocol for messages to a log object.
L4_PROTO_SCHEDULER | Protocol for messages to a scheduler object.
L4_PROTO_FACTORY | Protocol for messages to a factory object.
L4_PROTO_VM | Protocol for messages to a virtual machine object.
L4_PROTO_DMA_SPACE | Protocol for (creating) kernel DMA space objects.
L4_PROTO_IRQ_SENDER | Protocol for IRQ senders (IRQ -> IPC).
L4_PROTO_SEMAPHORE | Protocol for semaphore objects.
L4_PROTO_META | Meta information protocol.
L4_PROTO_IOMMU | Protocol ID for IO-MMUs.
L4_PROTO_DEBUGGER | Protocol ID for the debugger.
L4_PROTO_SMCCC | Protocol ID for ARM SMCCC calls.
L4_PROTO_VCPU_CONTEXT | Protocol for hardware vCPU contexts.

Definition at line 38 of file types.h.

## L4_platform_ctl_proto

enum L4_platform_ctl_proto

Predefined protocol type for messages to platform-control objects.

Enumerator
L4_PROTO_PLATFORM_CTL | Protocol messages to a platform control object. See L4_platform_ctl_ops for allowed operations.

Definition at line 174 of file platform_control.h.

## Function Documentation

## l4_msgtag()

l4_msgtag_t l4_msgtag | ( | long | label,
|  | unsigned | words,
|  | unsigned | items,
|  | unsigned | flags )

inline

Create a message tag from the specified values.

Message tag functions.

Parameters

  label | The user-defined label
  words | The number of untyped words within the UTCB
  items | The number of typed items (e.g., flexpages) within the UTCB
  flags | The IPC flags for realtime and FPU extensions

Returns
  Message tag

Examples
  examples/sys/aliens/main.c, examples/sys/ipc/ipc_example.c, examples/sys/singlestep/main.c, examples/sys/start-with-exc/main.c, and examples/sys/utcb-ipc/main.c.

Definition at line 405 of file types.h.

References L4_NOTHROW.

Referenced by __kdebug_3_text(), __kdebug_op(), __kdebug_op_1(), __kdebug_text(), L4::Irqep_t< Derived, BASE, bool >::dispatch(), enter_kdebug(), fiasco_amd64_segment_info(), fiasco_amd64_set_fs(), fiasco_amd64_set_segment_base(), fiasco_gdt_get_entry_offset(), fiasco_gdt_set(), fiasco_ldt_set(), L4::Server< LOOP_HOOKS >::internal_loop(), l4_icu_bind_u(), l4_icu_info_u(), l4_icu_msi_info_u(), l4_icu_set_mode_u(), l4_icu_unbind_u(), l4_irq_bind_vcpu_u(), l4_irq_detach_u(), l4_irq_receive_u(), l4_irq_trigger_u(), l4_irq_unmask_u(), l4_irq_wait_u(), l4_thread_ex_regs_u(), l4_thread_vcpu_control_ext_u(), l4_thread_vcpu_control_u(), l4_thread_yield(), l4_vcon_get_attr_u(), l4_vcon_send_u(), l4_vcon_set_attr_u(), l4util_ioport_map(), L4::Thread::modify_senders(), L4::Ipc_svr::Dbg_dispatch< R, Exc, Printer >::operator()(), L4::Ipc_svr::Exc_dispatch< R, Exc >::operator()(), L4::Cap_base::validate(), and L4::Cap_base::validate().

Here is the caller graph for this function:

## l4_msgtag_flags()

unsigned l4_msgtag_flags | ( | l4_msgtag_t | t | ) |

inline

Get the flags.

The flag are defined by L4_msgtag_flags.

Parameters

  t | The tag

Returns
  Flags

Definition at line 435 of file types.h.

References L4_NOTHROW.

## l4_msgtag_has_error()

unsigned l4_msgtag_has_error | ( | l4_msgtag_t | t | ) |

inline

Test for error indicator flag.

Parameters

  t | The tag

Returns
  >0 for yes, 0 for no

Return whether the kernel operation caused a communication error, e.g. with IPC. if true: utcb->error is valid, otherwise utcb->error is not valid

Examples
  examples/sys/aliens/main.c, examples/sys/singlestep/main.c, and examples/sys/utcb-ipc/main.c.

Definition at line 440 of file types.h.

References L4_MSGTAG_ERROR, and L4_NOTHROW.

Referenced by l4_icu_msi_info_u(), l4_ipc_error(), and l4_vcon_write_u().

Here is the caller graph for this function:

## l4_msgtag_is_exception()

unsigned l4_msgtag_is_exception | ( | l4_msgtag_t | t | ) |

inline

Test for exception protocol.

Parameters

  t | The tag

Returns
  Boolean value

Examples
  examples/sys/aliens/main.c, examples/sys/singlestep/main.c, and examples/sys/start-with-exc/main.c.

Definition at line 448 of file types.h.

References L4_INLINE, l4_msgtag_label(), L4_NOTHROW, and L4_PROTO_EXCEPTION.

Here is the call graph for this function:

## l4_msgtag_is_io_page_fault()

unsigned l4_msgtag_is_io_page_fault | ( | l4_msgtag_t | t | ) |

inline

Test for IO-page-fault protocol.

Parameters

  t | The tag

Returns
  Boolean value

Definition at line 454 of file types.h.

References L4_INLINE, l4_msgtag_label(), L4_NOTHROW, and L4_PROTO_IO_PAGE_FAULT.

Here is the call graph for this function:

## l4_msgtag_is_page_fault()

unsigned l4_msgtag_is_page_fault | ( | l4_msgtag_t | t | ) |

inline

Test for page-fault protocol.

Parameters

  t | The tag

Returns
  Boolean value

Definition at line 445 of file types.h.

References L4_INLINE, l4_msgtag_label(), L4_NOTHROW, and L4_PROTO_PAGE_FAULT.

Here is the call graph for this function:

## l4_msgtag_is_sigma0()

unsigned l4_msgtag_is_sigma0 | ( | l4_msgtag_t | t | ) |

inline

Test for sigma0 protocol.

Parameters

  t | The tag

Returns
  Boolean value

Definition at line 451 of file types.h.

References L4_INLINE, l4_msgtag_label(), L4_NOTHROW, and L4_PROTO_SIGMA0.

Here is the call graph for this function:

## l4_msgtag_items()

unsigned l4_msgtag_items | ( | l4_msgtag_t | t | ) |

inline

Get the number of typed items.

Parameters

  t | The tag

Returns
  Number of items.

Definition at line 431 of file types.h.

References L4_NOTHROW.

Referenced by l4util_ioport_map().

Here is the caller graph for this function:

## l4_msgtag_label()

long l4_msgtag_label | ( | l4_msgtag_t | t | ) |

inline

Get the protocol of tag.

Parameters

  t | The tag

Returns
  Label

Examples
  examples/sys/singlestep/main.c, and examples/sys/start-with-exc/main.c.

Definition at line 417 of file types.h.

References L4_NOTHROW.

Referenced by l4_msgtag_is_exception(), l4_msgtag_is_io_page_fault(), l4_msgtag_is_page_fault(), and l4_msgtag_is_sigma0().

Here is the caller graph for this function:

## l4_msgtag_words()

unsigned l4_msgtag_words | ( | l4_msgtag_t | t | ) |

inline

Get the number of untyped words.

Parameters

  t | The tag

Returns
  Number of words

Examples
  examples/sys/utcb-ipc/main.c.

Definition at line 427 of file types.h.

References L4_NOTHROW.

Referenced by l4_icu_msi_info_u().

Here is the caller graph for this function: