History log of /seL4-refos-master/libs/libsel4muslcsys/src/vsyscall.c
Revision Date Author Comments
# 781d6189 21-Sep-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Constructors between vsyscall init and libc init

Add a region for constructors to be placed between __sysinfo being
initialised to sel4_vsyscall and libc_init to allow a user-level
implementation to set up virtual memory syscalls use by libc_init whilst
depending on a functioning implementation of malloc.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# f39d783e 20-Sep-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Force GCC to find new location of TLS base

GCC will sometimes optimise accesses to TLS across function calls
assuming that the TLS base address has not been changed and thus none of
the TLS variables have been relocated.

Given initialising musl libc explicitly creates a new TLS region,
updating __sel4_ipc_buffer requires us to force GCC to find its address
in the new TLS region rather than re-using the address it already
determined.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# 3fd0ca63 16-Sep-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Add config option to delay libc initialisation

The initialisation of libc should occur after system calls have been
initalised. Some calls are initialised externally or have external
dependencies.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# 24f2b526 11-Sep-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Use constructor to initialise libc

This initialises the C standard library using a constructor executed
from the sel4 runtime.

Signed-off-by: Curtis Millar <curtis.millar@data61.csiro.au>


# d7be11ef 17-Oct-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4muslcsys: Implement sys_write wrapper

This wraps sys_writev the same way that sys_read is implemented.


# e9a9ff4f 18-Jul-2019 Yu Hou <Yu.Hou@data61.csiro.au>

Trivial: Style fix

make the style checker happy


# e23dc54b 19-May-2019 Yu Hou <Yu.Hou@data61.csiro.au>

seL4_libs: remove autoconf.h from seL4_libs

this commit removes autoconf.h generation from each lib and
append '#include <<lib_name>/gen_config.h>' after each
'#include <autoconf.h>' since autoconf.h is only the for the
kernel config now. This is a temporarily solution, since we
currently don't have a way to tell which header files each file
is trying to include when it includes 'autoconf.h'


# b1acd211 30-Jan-2019 James Ye <james.ye@data61.csiro.au>

libsel4muslcsys: transition to new libcpio API


# 882ae257 07-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Avoid calling TCB_SetTLSBase unless needed

The C library only calls the set_thread_pointer syscall if it believes it cannot set
the thread pointer itself. This handles a specific kernel configuration on x86-64 where
we actually can set the thread pointer from user level without resorting to the TCB
invocation.


# 992a503a 07-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Call TCB_SetTLSBase when possible

This commit provides support for initial thread in a process, that calls __libc_start_main,
to get a correctly setup thread pointer. If the boot_tcb_cptr environment variable is
set either by the proccess creator, or in the case of the rootserver it will be constructed
by _sel4_start, then during libc's init process, prior to main being called, the
boot_sys_set_thread_area will attempt to set the thread pointer.

Should boot_tcb_cptr not be set an application could still use
muslcsys_get_boot_set_thread_area and then do the equivalent of the code in t his
commit, but this provides a much nicer approach.


# d6de31ee 07-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

sel4muslcsys: Alias __ARM_NR_set_tls to __NR_set_thread_area in boot functions

The ARM set_tls syscalls behaves effectively the same as the x86 set_thread_area syscall,
and the boot implementation provided currently can be used as a dual implementation.

As they are *not* actually the same syscall post boot the 'real' sys_set_thread_area is
not provided as the implementation of __ARM_NR_set_tls


# b10f6fa4 07-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

sel4muslcsys: Implement sparse syscall table for ARM syscalls

Some ARM syscalls have quite high effective numbers so this adds a sparse syscall table
that is a lookup of syscall to handler, instead of the normal table that encodes the
syscall number in the table index. As there are only 5 syscalls this is currently
implemented as an unordered list that must be searched to find any entry


# f4a828b3 04-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Early debug output prior to C library init

The generic sys_writev implementation most likely will crash/not work if it gets
called prior to the C library having been initialized (i.e. at least prior to the init
array functions getting called). The idea behind this change is to explicitly just
support output via seL4_DebugPutChar (if it exists) prior to C library initialization,
and then switch to the actual sys_writev.

Whilst the boot_sys_writev should never be used, it makes it possible to debug very
early boot code, especially in a rootserver that may need to do non trivial startup
logic in its entry point before calling the muslc entry point.


# 9214341c 04-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix licenses


# ebc4aef0 07-May-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Provide run time CPIO file system support

This changes the existing build time config support for a CPIO file system into a run
time option. The build time configuration option is still used to decide whether to
use the new interface to populate with the default cpio archive symbols


# 7f612292 03-May-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

SELFOUR-862: CONFIG_PRINTING --> seL4_DebugPutChar


# fcfcba91 05-Apr-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

trivial: fix warnings


# 2054bbef 26-Jan-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Allow syscalls to be overriden at run time

Adds an interface to override syscalls at run time. For syscalls that happen
before a run time handler can be installed an interface is also provided for
querying the attempted invocation.


# eaca58a9 27-Jan-2017 amrzar <azarrabi@nicta.com.au>

libsel4muslcsys: Add support for openat syscall


# bc2d1669 05-Jan-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4muslcsys: Implement mmap syscall

Changes the current mmap2 implementation to be an mmap implementation,
and redirects the mmap2 syscall to mmap


# 7241dba3 12-Oct-2016 Alexander Wharton <awharton@alexw.keg.ertos.in.nicta.com.au>

libsel4muslcsys: create dummy implementation of sys_madvise()


# 6e5189e0 02-Sep-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4muslcsys: Skip syscalls that are only defined on 32-bit systems if they are not defined


# e269552e 30-Nov-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4muslcsys: Add some missing thread routines

A C library may call set_thread_area on startup and tkill on shutdown,
so we need to implement stubs of these


# 494b80ec 19-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4muslcsys: Fix missing #include.


# d7df2a0e 18-Nov-2015 Matthew Fernandez <matthew.fernandez@nicta.com.au>

libsel4muslcsys: Use libutils' compiler attribute abstractions.

Depends on https://github.inside.nicta.com.au/seL4/util_libs/pull/10.