Loading...
Searching...
No Matches
itas
// vi:set ft=cpp: -*- Mode: C++ -*-
/*
* Copyright (C) 2025 Kernkonzept GmbH.
* Author(s): Jan Klötzke <jan.kloetzke@kernkonzept.com>
*
* License: see LICENSE.spdx (in this directory or the directories above)
*/
#pragma once
#include <l4/sys/cxx/ipc_iface>
#include <l4/sys/cxx/ipc_types>
#include <l4/sys/cxx/types>
#include <l4/sys/l4int.h>
#include <l4/sys/thread>
#include <l4/sys/types.h>
#include <signal.h>
#include <sys/time.h>
namespace L4Re
{
class L4_EXPORT Itas :
public L4::Kobject_t<Itas, L4::Kobject,
L4RE_PROTO_ITAS,
L4::Type_info::Demand_t<2> >
{
public:
L4_INLINE_RPC(int, register_thread, (L4::Ipc::Cap<L4::Thread> parent,
L4::Ipc::Cap<L4::Thread> thread_cap,
l4_addr_t thread_utcb));
L4_INLINE_RPC(int, unregister_thread, (L4::Ipc::Cap<L4::Thread> thread));
// sigaction.sa_flags is usually `unsigned long`, except for MIPS...
enum : unsigned
{
Ignore_sigaction = ~0U
};
L4_INLINE_RPC(int, sigaction, (int signum,
const struct sigaction *act,
struct sigaction *oldact));
L4_INLINE_RPC(int, sigaltstack, (L4::Ipc::Cap<L4::Thread> thread,
const struct sigaltstack *ss,
struct sigaltstack *oss));
L4_INLINE_RPC(int, sigprocmask, (L4::Ipc::Cap<L4::Thread> thread,
int how, sigset_t const *set,
sigset_t *oldset));
L4_INLINE_RPC(int, sigpending, (L4::Ipc::Cap<L4::Thread> thread,
sigset_t *set));
L4_INLINE_RPC(int, setitimer, (int which,
const struct itimerval *new_value,
struct itimerval *old_value));
L4_INLINE_RPC(int, getitimer, (int which, struct itimerval *curr_value));
L4_INLINE_RPC(int, raise, (L4::Ipc::Cap<L4::Thread> thread, int sig));
typedef L4::Typeid::Rpcs<
register_thread_t, unregister_thread_t, sigaction_t, sigaltstack_t,
sigprocmask_t, sigpending_t, setitimer_t, getitimer_t, raise_t
> Rpcs;
};
}
L4Re::Itas
Interface to the ITAS.
Definition itas:34
L4Re::Itas::raise
int raise(L4::Ipc::Cap< L4::Thread > thread, int sig)
Send a signal to the calling thread.
L4Re::Itas::setitimer
int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value)
Set process interval timer.
L4Re::Itas::sigpending
int sigpending(L4::Ipc::Cap< L4::Thread > thread, sigset_t *set)
Query pending signals.
L4Re::Itas::sigprocmask
int sigprocmask(L4::Ipc::Cap< L4::Thread > thread, int how, sigset_t const *set, sigset_t *oldset)
Examine or set process signal mask.
L4Re::Itas::sigaltstack
int sigaltstack(L4::Ipc::Cap< L4::Thread > thread, const struct sigaltstack *ss, struct sigaltstack *oss)
Examine or set alternate POSIX signal stack.
L4Re::Itas::Ignore_sigaction
@ Ignore_sigaction
Ignore new action of sigaction() call.
Definition itas:65
L4Re::Itas::sigaction
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact)
Examine and change a POSIX signal action.
L4Re::Itas::getitimer
int getitimer(int which, struct itimerval *curr_value)
Get process interval timer.
L4Re::Itas::unregister_thread
int unregister_thread(L4::Ipc::Cap< L4::Thread > thread)
Unregister a thread.
L4Re::Itas::register_thread
int register_thread(L4::Ipc::Cap< L4::Thread > parent, L4::Ipc::Cap< L4::Thread > thread_cap, l4_addr_t thread_utcb)
Register new thread.
L4::Ipc::Cap
Capability type for RPC interfaces (see L4::Cap<T>).
Definition ipc_types:699
L4::Kobject_t
Helper class to create an L4Re interface class that is derived from a single base class.
Definition __typeinfo.h:750
l4_addr_t
unsigned long l4_addr_t
Address type.
Definition l4int.h:34
L4_EXPORT
#define L4_EXPORT
Attribute to mark functions, variables, and data types as being exported from a library.
Definition compiler.h:214
ipc_iface
Interface Definition Language.
L4_INLINE_RPC
#define L4_INLINE_RPC(res, name, args, attr...)
Define an inline RPC call (type and callable).
Definition ipc_iface:482
ipc_types
l4int.h
Fixed sized integer types, generic version.
types.h
Common L4 ABI Data Types.
L4Re
L4Re C++ Interfaces.
Definition cmd_control:14
L4::Typeid::Rpcs
Standard list of RPCs of an interface.
Definition __typeinfo.h:428
thread
Common thread related definitions.
types