History log of /barrelfish-master/include/barrelfish/slot_alloc.h
Revision Date Author Comments
# d9b646e1 19-Aug-2019 Reto Achermann <reto.achermann@inf.ethz.ch>

x86_64: make all targets compile

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>


# 10957289 05-Aug-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T258: Delete GPT cspace functionality and rename new functions

This commit deletes all the old GPT cnode code, and renames the new two-level
functions to the "old" names (e.g. caps_lookup_slot() is now a two-level
cspace function).

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


# b5ed30ce 02-Aug-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T258: Implement two_level_slot_alloc_init{,_raw} and use in vmkitmon

Vmkit creates a second slot allocator for the guest. It's possible that that
allocator is completely unnecessary. For now we use two_level_slot_alloc_init()
to create a new slot allocator that uses L2 CNodes.

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


# 9e36d67b 27-Jul-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T266: add test for resizing root cnode and fix minor issues in two-level slot allocator

Closes T266.

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


# 07deb82d 27-Jul-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T266: Refactor rootcn resizing and use it in two-level slot allocator

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


# be009ebd 27-Jul-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T266: Resizing root cnode enabled for libmm slot allocator

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


# 17948f60 22-Jul-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T258, T264, T270: Implement two-level cspace layout using L1/L2 CNode objects.

distops functionality is NYI.

This commit also makes the root cnodes explicit for sys_map(), closes T270.

Notable changes:
* LRPC LMP endpoints are regular capabilities in L2 cnode, no longer in root
cnode.
* Capability operations take a capability address for the root cnode relative
to which capability addresses are to be resolved. The root cnode capability
address must be resolvable in the current domains cspace.

Closes T264.

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


# 6e41d260 06-Jul-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T258: Implement 2 level CSpace slot allocator on GPT cnodes

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


# e2b5a153 21-Apr-2016 Simon Gerber <simon.gerber@inf.ethz.ch>

T191: User space works again with reduced set of provided capabilities.


# 3a8c1998 02-Feb-2015 Simon Gerber <simon.gerber@inf.ethz.ch>

Rename struct slab_alloc to struct slab_allocator.

We have a function with the following signature:

void *slab_alloc(struct slab_alloc *);

which produces the following error message with g++:

error: ‘void* slab_alloc(slab_alloc*)’ hides constructor for ‘struct
slab_alloc’ [-Werror=shadow]

The two easy ways out are 1) renaming the function or 2) renaming the struct.
For clarity (and consistency with malloc and co) I've chosen to rename the
struct to "struct slab_allocator".

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


# 428ac6fd 02-Apr-2013 Kornilios Kourtis <kkourt@inf.ethz.ch>

fix buflen when calling single_slot_alloc_raw()

Here's my understanding (this is from reading the code):
- single_slot_alloc manages slots for a single cnode using a list of
free nodes. The list is maintained starting with ->head, and each node
represents a range of slots (slot, space). The list is initialized
with a single node with {slot=0, space=nslots}

- The worst case scenario for the size of the list is when only the odd
(or even) slots are free. This is the worst case because for all nodes
in the list space=1. Adding nodes should result in smaller number of
nodes but with higher ->space values.

- The list nodes are allocated/freed using a (simple) slab allocator.
Hence, the slab allocator should be initialized so that it contains
nslots/2 objects to accommodate for the worst case.

The problem is that this does not happen: the slab allocator requires some
additional memory for adding headers to objects which is not accounted for.
This is why in your case the allocator does not have additional objects to
provide in slab_alloc().

This commit allocates appropriately sized buffers for the slab allocator and
hopefully fixes your problem.

Many thanks to Georgios Varisteas <yorgos@kth.se> for reporting the bug and
help us debug the problem.


# 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


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

Initial version of public stable barrelfish repository.