History log of /barrelfish-master/lib/posixcompat/pthreads.c
Revision Date Author Comments
# 9bd8d1d5 03-Apr-2019 Reto Achermann <reto.achermann@inf.ethz.ch>

replacing umlaute and fixing address in headers Haldeneggsteig -> Universitaetsstrasse

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>


# dde2ba50 19-Jun-2017 Adam Turowski <adam.turowski@inf.ethz.ch>

libc: removing newlib, adding BSD libc
posixcompat: moving gettimeofday to libc
harness: adding a simple math test
lwip, lwip2: moving includes to /include, compiling with BSD headers

Signed-off-by: Adam Turowski <adam.turowski@inf.ethz.ch>


# b7520580 03-Feb-2016 Reto Achermann <reto.achermann@inf.ethz.ch>

libposixcompat: adding pthread_attr_destroy implementation

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>


# 9a2cf795 05-Jan-2016 Reto Achermann <reto.achermann@inf.ethz.ch>

posixcompat: check for NULL in pthread_create to avoid null-dereference

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>


# 61c534e0 23-Sep-2015 Gerd Zellweger <mail@gerdzellweger.com>

Fix pthread attrs after merge with current master.

Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>


# 4b606687 08-May-2015 Jana Giceva <gicevaj@inf.ethz.ch>

Added support for a basic pthread barrier

Signed-off-by: Jana Giceva <gicevaj@inf.ethz.ch>
Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>


# 8e5cef08 18-May-2015 Gerd Zellweger <mail@gerdzellweger.com>

[T102] Implement CPU_SET and pthread_attr_setaffinity_np. Closes T102.

Signed-off-by: Gerd Zellweger <mail@gerdzellweger.com>

Conflicts:
lib/newlib/newlib/libc/include/sys/types.h
lib/posixcompat/pthreads.c
usr/tests/posixcompat/Tupfile.lua


# 878547ec 04-Jun-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

Merge of upstream arrakis code.

This merge includes the following:
* VT-d (IOMMU) support
* VMX (Intel CPU virtualization) support
* Parallel hake build
* MegaRAID driver
* Subways fast packet forwarding application
* Identify physical address of VNodes
* libstorage (VSIC & VSA support)
* POSIX support: poll, uname, nanosleep, fsync, poll, pthread attributes, syslog, wait3, ...
* TenaciousD (persistent data structures: log & queue)
* Hack to skip boot RAM when it's too large
* Arranet: Support for raw IP sockets, interrupts
* Removal of colorful debug output
* MegaRAID blockdevfs support
* Arrakis compile wrappers for Autoconf
* Patches to binutils & GCC to build Arrakis C++ applications

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>
Signed-off-by: Simon Peter <simpeter@cs.washington.edu>
Signed-off-by: Oleg Godunok <ogodunok@gmail.com>
Signed-off-by: Antoine Kaufmann <antoinek@cs.washington.edu>
Signed-off-by: Jialin Li <lijl@cs.washington.edu>
Signed-off-by: Dalton Black <dalton.m.black@gmail.com>
Signed-off-by: Taesoo Kim <taesoo@uw.edu>


# aee00751 17-Dec-2014 Zaheer Chothia <zchothia@inf.ethz.ch>

posixcompat: make pthread_once a wrapper over the version in libbarrelfish

Summary:
Both the pthread and native versions now share a single common
implementation (added in D9). The new approach should also be faster
since it avoids a full mutex and instead only has to consult the
per-thread epoch on the common path. I should note, I have not run
any benchmarks to confirm this and may be wrong.

Test Plan: Compiles but have not validated more thoroughly.

Differential Revision: https://code.systems.ethz.ch/D12

Signed-off-by: Zaheer Chothia <zchothia@inf.ethz.ch>


# ecedc6b6 20-Apr-2015 Zaheer Chothia <zchothia@inf.ethz.ch>

posixcompat: fix incorrect destruction of pthread_cond

The object being freed was the wrapper, which belongs to the caller and
may even have static lifetime (.data section), whereas now it correctly
relases the inner block of memory which was allocated in
`pthread_cont_init`.

(The unrelated change in mmap add a missing comma when debug is enabled.)

Signed-off-by: Zaheer Chothia <zchothia@inf.ethz.ch>


# 792d0d8a 24-Feb-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T65: implement proper x-core join.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 8f1a278a 23-Feb-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T65: properly implement x-core thread creation.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 90b055f4 06-Feb-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

posixcompat: properly handle PTHREAD_MUTEX_RECURSIVE and BF thread id assignment.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 749b9d1c 06-Feb-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

posixcompat: fixed pthread_mutex_lock to work with nested calls.

Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>


# 256af7f3 15-Dec-2014 Zaheer Chothia <zchothia@inf.ethz.ch>

posixcompat: fixed pthread_key destructor calls

The deletion path was previously missing completely and POSIX requires the
implementation to set the key pointer to NULL before calling the destructor
function.

What is still missing is the repeated destructor calls if values become
non-NULL (i.e. PTHREAD_DESTRUCTOR_ITERATIONS). Further, this module is missing
a number of corner cases and NULL checks. It may be better to just import the
corresponding code from elsewhere:
http://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_key_create.c
https://github.com/freebsd/freebsd/blob/master/lib/libthr/thread/thr_spec.c

Test Plan:
Rust uses these in the test suite to collect output (by overriding
stdout/stderr). That would segfault but now runs through fine.

Differential Revision: https://code.systems.ethz.ch/D10


# 395dec60 15-Dec-2014 Zaheer Chothia <zchothia@inf.ethz.ch>

posixcompat: fix NULL pointer dereference in pthread_join


# b4ccacb6 11-Aug-2014 Reto Achermann <acreto@student.ethz.ch>

libcxx: replaced printf directives with portable form (PRI..)

activated DWARF backend and made it compile. Added some new functions to
the pthreads library.


# 94996936 21-Aug-2014 Stefan Kaestle <stefan.kaestle@inf.ethz.ch>

Patches 4878a9a through 6b8a570


# 705d12dd 19-Jun-2014 Stefan Kaestle <stefan.kaestle@inf.ethz.ch>

Fix: make lib posixcompat compile in release mode


# de906f69 28-Feb-2014 Simon Peter <simpeter@cs.washington.edu>

The Arrakis backport to Barrelfish.

Here are the macro changes:
* Made lwIP an optional network stack
* Moved lwIP headers out of the general include directory
* Parallel hake
* CPU-virtualized ("arrakis") applications
* libarrakis is a new libOS that uses CPU features directly
* arrakismon is a new monitor for Arrakis apps
* QEMU Multiboot support instead of GRUB (enables KVM)
* e10k virtual function driver
* Software virtual->physical mapping (substitutes IOMMU)
* To be replaced soon with an Intel IOMMU driver
* Better GDB and stack tracing support
* New POSIX support
* pthreads, inet_*(), usleep(), syslimits.h, sigaction(), mman.h,
* resource.h, sendmsg(), recvmsg(), mkfifo(), syslog.h, sysexits.h,
* fcntl(), getegid(), getgid(), pipe(), rlimits
* epoll support
* Separate waitset for interrupts
* Thread TLS key and ID support
* Moved PCRE headers to include/, where they usually are
* Intel performance counters support
* Handle boot-time RAM overflow (for machines with >=64GB RAM)
* Arranet network stack
* Fix for build of lib/barrelfish/arch/x86_64/dispatch.c without -O2
* New comandline options to pci daemon:
* maxvfs=x, x is number of virtual functions to create for each
* device supporting it
* skb_bridge_program=x, x is SKB bridge programming script to use
* bridge_bios is a script that uses the BIOS pre-set values, like Linux
* Correctly build machine-optimized newlib parts
* Library versions of e1000 and e10k drivers
* Support for virtualization in e10k driver
* e10k datacenter control plane daemon
* Modified hellotest to be both a Barrelfish and an Arrakis application

I've decided not to include the lwIP 1.4.1 code, as the port is
not finished and who wants to use lwIP anyway with the Arrakis
network stack and mTCP being released soon. If you want this,
let me know (it's hugely superior to lwIP 1.3.1).

I've made the code backwards-compatible with Barrelfish. The
default should do what Barrelfish does. One can specify
commandline options to the PCI daemon and e10k driver to
configure I/O virtualization and the optional arrakismon allows
loading CPU-virtualized "arrakis" programs.

There are more pending changes, such as support for hardware
rate limiting and weighted round robin packet scheduling, but
I'd like these to go in first, before I push the rest.