History log of /barrelfish-master/include/spawndomain/spawndomain.h
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>


# b3813360 27-Nov-2014 Reto Achermann <reto.achermann@inf.ethz.ch>

moved spawn flags into spawndomain.h


# e550c664 31-Aug-2014 Reto Achermann <acreto@student.ethz.ch>

libspawndomain: added functions for symbol parsing and
registring/querying/caching


# b9af8f7e 28-Aug-2014 Reto Achermann <acreto@student.ethz.ch>

spawn: added handling of spawn flags

Added a spawnflags parameter to the command line and forwarding of
spawnflags to spawnd

Added a spawn flag SPAWN_FLAGS_OMP for parsing openMP functions.


# a51cf0a8 13-Aug-2014 Reto Achermann <acreto@student.ethz.ch>

libcxx: exception handling

added missing code to enable exception handling of C++ programs on
barrelfish:

+ adding .eh_frame and .eh_frame_hdr section information to the
dispatcher when the new domain is spawned.

+ adding two new functions to obtain the eh_frame and eh_frame_hdr
information from userspace (used by libcxx for exception handling)


# 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.


# 436c7809 08-Feb-2013 Zaheer Chothia <zchothia@student.ethz.ch>

headers: wrap declarations in extern "C".

Note: this change is not exhaustive and only touches some headers in //include


# 54e7593f 22-Nov-2012 Simon Gerber <simugerber@student.ethz.ch>

Barrelfish (standard config) boots with 1 mapping per cap copy.


# ed27dfea 22-Jun-2012 Raphael Fuchs <raphaelfuchs@student.ethz.ch>

Adding functionality to inherit capabilities and pass capabilities as arguments.

The function 'spawn_domain_with_fdcap' was used to spawn a domain and
inherit the file descriptors of the current domain. A similar inheritance
mechanism is needed for session capabilities.

To this end, the function was renamed to 'spawn_domain_with_caps'. It no longer
expects an fdcap as one of the arguments but a CNode containing all the
capabilities, that should be inherited by the newly spawned domain. The layout
of this CNode is convention an defined in include/barrelfish/spawn_client.h.
Spawnd knows about these capabilities and copies them to the appropriate places.
For example, if the fdcap is present in the inherit CNode, spawnd copies it to
the corresponding slot in the task CNode.

Moreover, we need the ability to pass arbitrary capabilities to a domain at
startup for example to start a device driver. Spawnd does not have to know about
these capabilities. Which capabilities are passed in which order is an agreement
between spawner and spawnee. To this end, this patch adds another CNode argument
to the function 'spawn_domain_with_caps'. If a domain wants to pass certain
capabilites to another domain it therefore creates a CNode and places the
capabilities in this Cnode and the passes this CNode as an argument to
'spawn_domain_with_caps'. Spawnd makes this CNode available to the spawnee in
the ARGCN slot of the root CNode as either a CNode (if spawner and spawnee are
on the same core) or a ForeignCNode (if on different cores).

The first method of inheriting capabilities and the second method of passing
capabilities are intentionally kept as two arguments because of the following
reasons:
* To account for the difference in their handling. Spawnd knows about the
inherited capabilities and places each of them to appropriate places in the
spawnee's CSpace. As a result they are available early-on, i.e. before the
library initialization code for this domain runs.
* Putting both kinds of capabilities in a single flat CNode, would require
recompilation of the whole OS after adding a new capability, that should be
inherited.


# 58f2f148 04-Jun-2012 Samuel Hitz <samuel.hitz@gmail.com>

added comments for alignment workaround, added another gem5 patch, updated arm gem5 README


# 9f033120 04-Jun-2012 Samuel Hitz <samuel.hitz@gmail.com>

added comments to alignment workaround, updated arm gem5 README, included another patch for gem5


# cfa95a61 21-May-2012 Samuel Hitz <samuel.hitz@gmail.com>

added alignment to struct spawndomain and struct slot_prealloc, introduced 'timeslice' argument for ARM


# e6b486aa 22-May-2012 Samuel Hitz <samuel.hitz@gmail.com>

kernel and userspace now working, removed some debug printfs, general code cleanup


# 559955b4 02-Aug-2011 Simon Peter <speter@inf.ethz.ch>

Merge from ASPLOS tree.


# 9299dcef 08-Jul-2011 Stefan Kästle <stefan.kaestle@inf.ethz.ch>

Initial version of public stable barrelfish repository.