Ecosyste.ms: OpenCollective
An open API service for software projects hosted on Open Collective.
github.com/unikraft/unikraft
A next-generation cloud native kernel designed to unlock best-in-class performance, security primitives and efficiency savings.
https://github.com/unikraft/unikraft
There are use cases where a thread needs to be created before
it can be initialized with a conte...
A list of assigned threads is maintained with the general uksched API
for each scheduler instanc...
This commit introduces the possibility for a third-party threading
library to initialize a custo...
Removes the unecesary indirection for `schedcoop_schedule()`.
Signed-off-by: Simon Kuenzer <sim...
9b7f1d8bd039a4e3dcb5d649f87d9c368332e236 authored about 2 years ago by Simon Kuenzer <[email protected]>
This commit changes `uk_sched_start()` so that the resources
of the current context (stack, TLS)...
Because the field `threads_started` has no use at the moment,
we remove it from `struct uk_sched...
Entries to the TCB should be done with the TLS instead. This leads to
a cleaner and independent ...
We envision that thread waiting and detached threads will be
be implemented by a POSIX thread AP...
Thread attributes are currently unused and are therefore removed. It is
intended that POSIX-like...
In order to simplify the API and to avoid implementation mistakes,
`uk_sched_thread_woken()` and...
Calls the thread garbage collection as part of the idle thread in
order to give it lower priorit...
For simplifying the code, this commit renames `thread_list` to
`run_queue` (threads that are rea...
We halt the current logical CPU within the idle thread so that we can
later compute the CPU util...
The flag UK_THREADF_QUEUEABLE is not needed anymore by the re-factored
scheduling API.
Signed-o...
abe4a7832282215d3d2f75f646d2a0670cfe3f90 authored about 2 years ago by Simon Kuenzer <[email protected]>
Instead of maintaining a default scheduler this commit provides a
function that returns the curr...
Even terminated threads cannot simply release (e.g. stack, `struct
uk_thread`) their own resourc...
This commit re-factors the scheduler creation call by renaming if from
`uk_schedcoop_init()` to ...
This commit introduces the ability to modify TLS variables of an
foreign thread. The TLS is used...
As the re-factored uksched API requires, every threading functions
have to be non-returning. A t...
The helpers for querying and setting the thread state are refactored
to fit the naming scheme an...
This commit introduces thread creation helper functions that create a
thread that is directly as...
The `uk_sched_thread_exit2()` function behaves like
`uk_sched_thread_exit()` (self-exiting threa...
As an initial preparation for SMP and for consistency, initializing a
scheduler is done in the s...
The thread termination callbacks were called only when a thread was
released. Especially for sel...
Creates a new header `<uk/sched_impl.h>` that should only be used by
actual scheduler implementa...
The implementation of `uksignal` is currently broken and needs to be
re-done. Additionally, the ...
The `uk_sched_thread_create()` is re-factored to be more consistent with
the `uk_thread_create_*...
This commit introduces a configuration option that enables all
debug messages from `uksched`.
S...
dc2915ba600b1936f9920b1702d02757b9673b02 authored about 2 years ago by Simon Kuenzer <[email protected]>
Allocates memory to the boot context for thread-local storage when
`ukalloc` is part of the buil...
In order to enable scheduling support, the common aarch64 TLS pointer
set and retrieval routines...
This commit adds a compiler barrier to `set_tls_pointer()`, which sets
the TLS register. This av...
This commit introduces a new architecture library: `libcontext`. Since
saving and restoring of e...
The role of register x18 is platform specific, but saving and restoring
it later is safer then l...
Provides a wrapper that allows a particular function to be executed with
a different TLS pointer...
Makes the platform context independent of thread-local storage (TLS).
This enables the construct...
Changes made in this commit:
arch/arm/arm64/tls.c:
- import from x86_64 implementation
- adapt ...
Quick-fix based on https://github.com/unikraft/unikraft/issues/319
aarch64-none-elf has the TLS...
c6700cad6cb02f4647131d33a947526cf345589a authored about 2 years ago by Robert Kuban <[email protected]>
This commit moves the TLS initialization code into the architecture's
library `libcontext`. This...
Changes made in this commit:
arch/arm/arm64/ctx.S:
- import `asm_ctx_switch` from `plat/common/...
Allows reserving space for a user-defined TCB in the TLS memory area.
This functionality is enab...
`ukplat_ctx_type` was intended to support CPU context saving and
restoring with different implem...
This commit moves CPU context handling (context initialization and
context switch logic) from th...
Because stack growth direction and alignment are defined by the CPU
architecture, this commits p...
Saves the current scheduled thread reference in a variable as part
of `lib/uksched`. This actual...
Includes our format of the static TLS section, eventtab and exception
sections to linuxu builds ...
Let's consider context switch routine
ENTRY(asm_sw_ctx_switch)
/* Save callee-saved registe...
Since the definition from `time_types.h` (e.g. `time_t` `clock_t`)
will be provided by the libc ...
Since `uktime` will only define syscalls we change
the name to `posix-time`. Vfscore will have t...
Signed-off-by: Dragos Iulian Argint <[email protected]>
Reviewed-by: Sergiu Moga <sergiu....
The `musl-imported` directory from lib/uktime should
be placed in lib/nolibc. The definitions in...
In this commit we remove the dependecy in nolibc
for uktime. Uktime should be selected explicitl...
`qemu-guest` uses the qemu64 CPU model for x86 when running the guest
with TCG. This model does ...
This commit moves the scripts `qemu-guest` and `xen-guest` back to the
Unikraft core repository....
Musl on AArch64 requires poll, select, epoll_create, epoll_wait and
eventfd syscalls. This commi...
This is not strictly required. But it is for consistency with other
functions in internal librar...
`send()` and `recv()` are defined as wrappers in `posix-socket` to be
used in case they aren't a...
Raw syscalls implementations should always return the raw value.
This commit fixes an incorrect ...
Enable memory tagging on boot and mark the heap as tagged memory.
Signed-off-by: Michalis Pappa...
3f378fa888a8f82596a60dcaf7e958754681f5b2 authored about 2 years ago by Michalis Pappas <[email protected]>This commit updates ukalloc with basic support for memory tagging.
Specifically it adds a new `...
0db0ad1a65af4a83144304a29e135369edff3655 authored about 2 years ago by Michalis Pappas <[email protected]>
This commit implements the ukarch_memtag API for arm64-based platforms
using the Memory Tagging ...
Move system and io register helpers from plat/common/include to
arch/arm/arm64 to make them acce...
This commit introduces a minimal subsystem for memory tagging. Memory
tagging provides protectio...
Current stat family function calls from vfscore generate infinite loops
when used with musl due ...
Current access calls from vfscore generate infinite loops when used
with musl due to these calls...
This commit disables the myself testsuite when LIBUKTEST_TEST_MYSELF is
not selected.
Signed-of...
8bcabc7ac8ecd3ec1e572d1bfc3b96445da55a96 authored about 2 years ago by Florin Postolache <[email protected]>
The `pipe2` implementation in vfscore relies on `pipe`.
This commit ensures that we call the `pi...
This commit initializes the bytes variable to -1 in case of error in
the function do_pwritev. Th...
gcc 12.1 generates warnings for is_leap as the pointer may be
initialized to an unnamed temporar...
This is necessary for the public IFTOVT/VTTOIF macros, which use these
symbols internally.
Sign...
13b7a34044ec9d0392db740da23e2d3e7b3f0150 authored about 2 years ago by Marco Schlumpp <[email protected]>
The function `statfs_to_statvfs()` is only called from `statvfs()` and
`fstatvfs()`, that are gu...
This PR fixes a possible crash in the socket, accept and
socketpair syscall implementation when ...
The implementation of the GICv3 driver assumes that the GICR_ registers
access each core's local...
in order to load sections after .data section redefine load_end_addr
in multiboot header to _bss...
the problem with inserting after .rodata, is that uk_testtab appears on
the same page with .roda...
In the `vpci_legacy_pci_config_get` function, `len` is equal to the
number of elements in the bu...
This commit introduces a minimal set of functions for random number
generation implemented in th...
Provide a marco for the `warn_unused_result` function attribute of GCC.
Functions defined with t...
FEAT_RNG is introduced as an OPTIONAL feature in Armv8.5-a, and specifies
a hardware-based RNG t...
Until now, inter-processor interrupts were implemented only for
gic-v3.
This commit implements S...
The compiler expects the stack to be always 16-byte aligned
and ending on `...8` when entering a...
The compiler expects the stack to be always 16-byte aligned
and ending on `...8` when entering a...
Instances of the `posix_socket_driver` structure (one for each socket
family) are expected to be...
Signed-off-by: Alexander Jung <[email protected]>
Reviewed-by: Simon Kuenzer <simon.kuenzer@necl...
Signed-off-by: Marc Rittinghaus <[email protected]>
Signed-off-by: Razvan Deaconescu <razvand@un...
The header `<uk/syscall.h>` was not included in `stdio.c`. This caused
a build warning because t...
posix-futex will encapsulate Linux-compatible futex system calls.
Signed-off-by: Simon Kuenzer ...
0392a32c1a93866feb5cecb4d6350b3bf555f6a7 authored over 2 years ago by Daniel Dinca <[email protected]>
Added tests for the currently implemented futex operations (wait, wake and
cmp_requeue).
Signed...
4d1206f5c9addcb2e64859d9e525e65fa37ac5b4 authored over 2 years ago by Adina Smeu <[email protected]>
This commit introduces the initial futex system call implementation. The
supported operations ar...
Currently, all the unnumbered system calls are ignored
during the build process. This shouldn't ...
'commit 80ab51266b44 ("lib/posix-process: Solve redefining conflicts")'
introduces an error. The...
'commit 80ab51266b44 ("lib/posix-process: Solve redefining conflicts")'
introduces a guard for `...
Provides the `IS_ALIGNED()` helper macro to test a value for a
specific alignment.
Signed-off-b...
19809d082f145e3c118d1095396172529294cf2f authored over 2 years ago by Simon Kuenzer <[email protected]>
Replaces the stack print option with printing the current stack frame
address and the address th...
Dead code elimination (DCE) is enabled by linking each symbol into an
own subsection for interme...
The range test macro `RANGE_CONTAIN()` did always return false in the case
when the specified su...
The `__noinline` attribute macro makes sure that the compiler never
inlines a function that got ...
The helper macro `__contains` can be used to check if a field of a
struct is available by an all...
Introduces a macro for data sections (data, bss) in the linker script
header `plat/common/includ...
Provides the __return_addr, __frame_addr helper macros that resolve to
the following addresses:
...
`Makefile.rules` files aren't picked up yet automatically from the
`arch/` folder and subfolders...