L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
L4Re::Itas Class Reference

Interface to the ITAS. More...

#include <itas>

Inheritance diagram for L4Re::Itas:
Collaboration diagram for L4Re::Itas:

Public Types

enum  : unsigned { Ignore_sigaction = ~0U }

Public Member Functions

l4_ret_t register_thread (L4::Ipc::Cap< L4::Thread > parent, L4::Ipc::Cap< L4::Thread > thread_cap, l4_addr_t thread_utcb)
 Register new thread.
l4_ret_t unregister_thread (L4::Ipc::Cap< L4::Thread > thread)
 Unregister a thread.
l4_ret_t disable_pf_tramp ()
 Disable page fault trampolines for the whole process.
l4_ret_t sigaction (int signum, const struct sigaction *act, struct sigaction *oldact)
 Examine and change a POSIX signal action.
l4_ret_t sigaltstack (L4::Ipc::Cap< L4::Thread > thread, const struct sigaltstack *ss, struct sigaltstack *oss)
 Examine or set alternate POSIX signal stack.
l4_ret_t sigprocmask (L4::Ipc::Cap< L4::Thread > thread, int how, sigset_t const *set, sigset_t *oldset)
 Examine or set process signal mask.
l4_ret_t sigpending (L4::Ipc::Cap< L4::Thread > thread, sigset_t *set)
 Query pending signals.
l4_ret_t setitimer (int which, const struct itimerval *new_value, struct itimerval *old_value)
 Set process interval timer.
l4_ret_t getitimer (int which, struct itimerval *curr_value)
 Get process interval timer.
l4_ret_t raise (L4::Ipc::Cap< L4::Thread > thread, int sig)
 Send a signal to the calling thread.
Public Member Functions inherited from L4::Kobject
l4_msgtag_t dec_refcnt (l4_mword_t diff, l4_utcb_t *utcb=l4_utcb())
 Decrement the in kernel reference counter for the object.

Additional Inherited Members

Protected Types inherited from L4::Kobject_t< Itas, L4::Kobject, L4RE_PROTO_ITAS, L4::Type_info::Demand_t< 2 > >
typedef Itas Class
 The target interface type (inheriting from Kobject_t).
typedef Typeid::Iface< PROTO, Itas > __Iface
 The interface description for the derived class.
typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename L4::Kobject::__Iface_list > __Iface_list
 The list of all RPC interfaces provided directly or through inheritance.
Protected Member Functions inherited from L4::Kobject_t< Itas, L4::Kobject, L4RE_PROTO_ITAS, L4::Type_info::Demand_t< 2 > >
L4::Cap< Class > c () const noexcept
 Get the capability to ourselves.
Protected Member Functions inherited from L4::Kobject
l4_cap_idx_t cap () const noexcept
 Return capability selector.
Static Protected Member Functions inherited from L4::Kobject_t< Itas, L4::Kobject, L4RE_PROTO_ITAS, L4::Type_info::Demand_t< 2 > >
static void __check_protocols__ () noexcept
 Helper to check for protocol conflicts.

Detailed Description

Interface to the ITAS.

This is an internal interface between libc and the l4re_itas. Do not use it. It is subject to change.

Definition at line 30 of file itas.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : unsigned
Enumerator
Ignore_sigaction 

Ignore new action of sigaction() call.

Definition at line 76 of file itas.

Member Function Documentation

◆ disable_pf_tramp()

l4_ret_t L4Re::Itas::disable_pf_tramp ( )

Disable page fault trampolines for the whole process.

Once disabled, page faults of all threads of the process (including threads registered in the future) are reflected as page fault IPC to the pager instead of being handled by an in-thread trampoline handler. This also stops the ITAS from handing out its page_in() helper function to be called directly from within the client thread.

This operation cannot be reverted.

References disable_pf_tramp().

Referenced by disable_pf_tramp().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getitimer()

l4_ret_t L4Re::Itas::getitimer ( int which,
struct itimerval * curr_value )

Get process interval timer.

See IEEE Std 1003.1-2017 getitimer() for details.

Parameters
[in]whichTimer type (ITIMER_REAL).
[out]curr_valueOld timer value.

References getitimer().

Referenced by getitimer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ raise()

l4_ret_t L4Re::Itas::raise ( L4::Ipc::Cap< L4::Thread > thread,
int sig )

Send a signal to the calling thread.

Parameters
[in]threadThread cap of the calling thread.
[in]sigSignal that shall be raised.

References raise().

Referenced by raise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ register_thread()

l4_ret_t L4Re::Itas::register_thread ( L4::Ipc::Cap< L4::Thread > parent,
L4::Ipc::Cap< L4::Thread > thread_cap,
l4_addr_t thread_utcb )

Register new thread.

Makes the newly created thread known to ITAS. The ITAS will do the thread_cap->control() to bind the thread to the task and attach the gates for pager and exception handler.

Parameters
parentThe capability of the thread that created the new thread.
thread_capThe capability of the new thread.
thread_utcbThe address of the allocated UTCB of the new thread.

◆ setitimer()

l4_ret_t L4Re::Itas::setitimer ( int which,
const struct itimerval * new_value,
struct itimerval * old_value )

Set process interval timer.

See IEEE Std 1003.1-2017 setitimer() for details.

Parameters
[in]whichTimer type (ITIMER_REAL).
[in]new_valueNew timer value.
[out]old_valueOld timer value.

Referenced by sigpending().

Here is the caller graph for this function:

◆ sigaction()

l4_ret_t L4Re::Itas::sigaction ( int signum,
const struct sigaction * act,
struct sigaction * oldact )

Examine and change a POSIX signal action.

See IEEE Std 1003.1-2024 sigaction() for the behaviour of the method.

If act->sa_flags is Ignore_sigaction, the new action is ignored.

Parameters
[in]signumSignal number to be examined and/or modified.
[in]actNew signal action.
[out]oldactOld signal action.

References sigaction(), and sigaltstack().

Referenced by sigaction().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sigaltstack()

l4_ret_t L4Re::Itas::sigaltstack ( L4::Ipc::Cap< L4::Thread > thread,
const struct sigaltstack * ss,
struct sigaltstack * oss )

Examine or set alternate POSIX signal stack.

See IEEE Std 1003.1-2024 sigaltstack() for the behaviour of the method.

If ss->ss_flags is -1, the new sigaltstack will be ignored.

Parameters
[in]threadThread cap of the thread whose sigaltstack is examined and/or modified.
[in]ssThe new sigaltstack.
[out]ossThe old sigaltstack.

References sigaltstack(), and sigprocmask().

Referenced by sigaction(), and sigaltstack().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sigpending()

l4_ret_t L4Re::Itas::sigpending ( L4::Ipc::Cap< L4::Thread > thread,
sigset_t * set )

Query pending signals.

See IEEE Std 1003.1-2024 sigpending() for details.

Parameters
[in]threadThread cap of the thread whose pending signal are examined.
[out]setPending signals of thread.

References setitimer().

Referenced by sigprocmask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sigprocmask()

l4_ret_t L4Re::Itas::sigprocmask ( L4::Ipc::Cap< L4::Thread > thread,
int how,
sigset_t const * set,
sigset_t * oldset )

Examine or set process signal mask.

See IEEE Std 1003.1-2024 sigprocmask() for the behaviour or the method.

If how is -1, the signal mask is left unchanged.

Parameters
[in]threadThread cap of the thread whose signal mask is examined and/or modified.
[in]howOperation (SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK or -1).
[in]setThe new signal mask.
[out]oldsetThe old signal mask.

References sigpending().

Referenced by sigaltstack().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unregister_thread()

l4_ret_t L4Re::Itas::unregister_thread ( L4::Ipc::Cap< L4::Thread > thread)

Unregister a thread.

The gates for the thread's pager and exception hander will be destroyed. Thus, the thread must be destroyed after the call.

Parameters
threadThe destroyed thread.

References unregister_thread().

Referenced by unregister_thread().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: