History log of /barrelfish-master/lib/barrelfish/domain.c
Revision Date Author Comments
# b2aa565b 18-Jul-2019 Reto Achermann <reto.achermann@inf.ethz.ch>

libbarrelfish: setting arch specific fields when creating new dispatchers

Refactoring the domain_new_dispatcher function and extract arch specific
functions to
- set the segment selectors on x86
- set the got base on armv7/armv8
in the respective arch specific dispatchers structs.

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


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


# 6f1b5f71 19-Dec-2018 Simon Gerber <simon.gerber@inf.ethz.ch>

dispatcher: remove DISPATCHER_FRAME_BITS, and redefine DISPATCHER_FRAME_SIZE as 512kB.

This is necessary with the new contents struct dispatcher_<arch> when
using array-based pmap on larger machines, as we otherwise run out of
room for LMP channel receive buffers in the SKB.

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


# d0356e75 19-Oct-2018 Simon Gerber <simon.gerber@inf.ethz.ch>

libbarrelfish: heap: explicitly store and propagate heap pagesize instead of relying on heap alignment to infer pagesize

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


# a2f1e286 23-Mar-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

T82: checkpoint. Guest domain up. Need to implement hypervisor service.

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


# 9a7d2f5b 11-May-2018 Adam Turowski <adam.turowski@inf.ethz.ch>

fpu: unifing the fpu's context switching
x86_64: fixing the stack's alignment

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


# df7a10ce 11-May-2018 Adam Turowski <adam.turowski@inf.ethz.ch>

fpu: unifing the fpu's context switching
x86_64: fixing the stack's alignment

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


# f0d121ee 27-Aug-2017 Razvan Damachi <razvan.damachi@gmail.com>

Clean up and document the process management code.

* clean up benchmarking code from spawnd and the process manager;
* document the process management functions in usr/proc_mgmt;
* remove dangling prints from lib/barrelfish/domain.c and threads.c.

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# ecf0b8e8 20-Aug-2017 Razvan Damachi <razvan.damachi@gmail.com>

Fix bug in libdomain/domain_cap_hash()

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# 5b4fdc25 26-Jun-2017 Razvan Damachi <razvan.damachi@gmail.com>

Extract a through-monitor-only cap_identify call from debug_cap_identify.

The function debug_cap_identify in debug.c used to try to identify the given
capref by first invoking the kernel, then performing an RPC with the monitor,
if the kernel invocation failed. The kernel invocation was there for domains
that hold the cap_kernel, which is necessary for the invocation to succeed.
Therefore, having the invocation there for domains which do not hold cap_kernel
is redundant, incurring unnecessary extra work.

A monitor_cap_identify_remote function is now part of monitor_client.c, through
which callers can identify caprefs through the monitor directly. The old
debug_cap_identify function in debug.c now resorts to this new function if the
kernel invocation fails.

Moreover, userspace apps such as the process manager or spawnd need to identify
caps involved in their RPCs (e.g. domain caps), however they do not hold the
cap_kernel reference. They can thus now use the new function to query the
monitor directly, without attempting to drop in the local kernel first.

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# e3434050 21-Jun-2017 Razvan Damachi <razvan.damachi@gmail.com>

Implement kill_request_handler in spawnd, using domain caps.

Domain cap hashing is now used by spawnd in a manner similar to the process
manager's, for looking up domains to kill as per incoming kill(domain_cap)
requests.

Note that with the new API and implementation, spawnd no longer tracks domain
exit code or waiters (although some backwards-compatibility is attempted), this
task being now attributed to the process manager (to be implemented).

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# 93751d0a 20-Jun-2017 Razvan Damachi <razvan.damachi@gmail.com>

Add spawn, spawn_with_caps and span calls to the Process Manager API.

The process manager keeps local domain state and forwards valid requests to
spawnds, acting as a proxy for spawning & spanning. Requests are validated as
per the Span-Stop-Cleanup state machine at https://goo.gl/6JuJj2.

Spawnd has been enriched with several asynchronous API calls, in order for
the process manager to serve requests non-blockingly. Specifically, clients of
the process management service issue RPCs to the process manager server
(blockingly), but the latter forwards requests to spawnd asynchronously, hence
it is able to serve multiple clients at the same time.

The client code for spanning uses libbarrelfish/domain.h to create the new
dispatcher for the remote core.

Bug: if the first dispatcher exits main(), dispatchers spanned on other cores
will pagefault.

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# 0d01b285 09-Jun-2017 Razvan Damachi <razvan.damachi@gmail.com>

Refactor process manager to enable spawnd discovery.

The process manager now allocates a special LMP endpoint for monitor.0 and
gives said endpoint to monitor.0 as part of the export_cb. After monitor.0
spawns spawnd, it uses that endpoint to send the new spawnd's iref to the
process manager. The latter then binds with spawnd, to keep track of its state.

For app cores, a similar workflow applies, except inter-monitor communication
is now performed. Namely, the new app core's monitor sends the new app core's
spawnd to monitor.0, which forwards it to the process manager. The latter then
binds with the app core's spawnd just the same.

Diagrams for the discovery protocol can be found at https://goo.gl/eJE37u.

Signed-off-by: Razvan Damachi <razvan.damachi@gmail.com>


# a135c2fc 20-Mar-2017 Adam Turowski <adam.turowski@inf.ethz.ch>

network: replacing net_queue_manager with devif as a data path, still WIP so it'll probably break the network stack

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


# 244ab29c 27-Feb-2017 Adam Turowski <adam.turowski@inf.ethz.ch>

flounder: merging rpc client with a binding layer

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


# 5ce05893 25-Jul-2016 Adam Turowski <adam.turowski@inf.ethz.ch>

Variable renamings, fixing event_mutex locking and thread_unblock_one.

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


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


# d9826d22 19-Feb-2015 Reto Achermann <reto.achermann@inf.ethz.ch>

Handing over alignment paramenter of morecore when spanning

Spanning domains resulted in a NULL-pointer dereferencing
in when initializing libbarrelfish and parsing arguments
for the morecore alignment. Added new parameter to pass
the alignment of the spanning domain to the new dispatcher
on the remote core.

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


# 1f4ee8d9 09-Mar-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

32bit: libbarrelfish: fix casts in new x-core thread functionality.

Signed-off-by: Simon Gerber <simon.gerber@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>


# 10188087 24-Jan-2014 Simon Gerber <simon.gerber@inf.ethz.ch>

Added current core_id so we can properly reroute interrupts after moving kcb.


# 05a3e1cb 21-Aug-2014 Reto Achermann <acreto@student.ethz.ch>

disabling creation of default_waitset dispatcher thread in domain.c


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


# ca0fa85f 07-Nov-2013 pravin@inf.ethz.ch <pravin@inf.ethz.ch>

Cleaned up code and removed all the debugging related code


# 0be97004 07-Nov-2013 pravin@inf.ethz.ch <pravin@inf.ethz.ch>

Webserver working for full website with LMP.

This version of code still does not work for UMP,
and also it does not work for httperf test.

Also, there is lot of commented out code which was helpful for me
in debugging the issue of randome page-fault.


# ecf04ace 27-Jul-2012 Mark Nevill <mark@nevill.ch>

Minor fixes to error handling.


# 05715e51 25-Jun-2013 Raphael Fuchs <fuchs.raphael@gmail.com>

The octopus rpc client binding is used by the nameservice and the terminal
subsystem. Rename {get,set}_nameservice_rpc_client to
{get,set}_octopus_rpc_client.


# 65b42de5 26-Feb-2013 Zaheer Chothia <zchothia@student.ethz.ch>

libbarrelfish: Simplified logic and fixed infinite loop on cap_destroy error in span_domain_reply().


# 92da60a5 25-Feb-2013 Simon Gerber <simon.gerber@inf.ethz.ch>

libbarrelfish: Moved cap_destroy() into error case in span_domain_reply.


# dffaedf8 25-Oct-2012 Raphael Fuchs <raphaelfuchs@student.ethz.ch>

libbarrelfish: Rename the header lib/barrelfish/include/threads.h to
lib/barrelfish/include/threads_priv.h.

To avoid confusion between the public and the private thread header, rename
the libbarrelfish-private thread header to threads_priv.h.

--HG--
rename : lib/barrelfish/include/threads.h => lib/barrelfish/include/threads_priv.h


# be7408cb 25-Oct-2012 Raphael Fuchs <raphaelfuchs@student.ethz.ch>

libbarrelfish: Spilt private waitset_chan.h header into a public and private
header.

* Check all files that included the old header, if the need the private or the
public header or both or none at all. Some files included the header but
didn't use any of the functions provided by the header.

* Change libahci so that it no longer uses the libbarrelfish-private header.


# c9839567 16-Mar-2012 Gerd Zellweger <zgerd@student.ethz.ch>

rename dist2 interface to octopus

--HG--
branch : octopus.renaming
rename : if/dist2.if => if/octopus.if


# 339715b7 22-Feb-2012 Gerd Zellweger <zgerd@student.ethz.ch>

Changes for nameservice. Use RPC client for NS functionality.


# 70c30847 23-Jan-2012 Andrew Baumann <andrew.baumann@microsoft.com>

remove support for Beehive

see the mailing list discussion at the end of December 2011 for motivation


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