History log of /seL4-camkes-master/projects/seL4_libs/libsel4allocman/src/utspace/split.c
Revision Date Author Comments
# 4fcd22fb 17-Jun-2019 Simon Shields <simon.shields@data61.csiro.au>

allocman: fix use of ALLOCMAN_NO_PADDR

Throughout allocman, various parts of the code for allocating a
specific paddr would check that the paddr fell within the bounds of a
given untyped node. Unfortunately, in some cases ALLOCMAN_NO_PADDR +
node->size would overlap with the paddr and cause a false positive -
allocman would *think* that a given node contains the request paddr,
when in fact it didn't.

Eventually, everything would fall apart: ALLOCMAN_NO_PADDR+node->size
would not be large enough to reach the paddr, and allocman would end
up with a NULL node where it wasn't expecting one.

Fix this issue by avoiding nodes with paddr == ALLOCMAN_NO_PADDR
whenever we're searching through node lists, thus preventing
such 'false positive' situations from occurring.


# e4c54575 24-Jun-2019 Simon Shields <simon.shields@data61.csiro.au>

trivial: style allocman utspace code


# 0016dfc6 13-Jul-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix all the whitespace

- remove trailing whitespace
- remove duplicate blank lines
- remove blank lines at end of files


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

Fix licenses


# 6176d164 26-Feb-2017 Kent McLeod <Kent.Mcleod@data61.csiro.au>

libsel4allocman: alloc from both untyped pools

When passing canBeDev and paddr == ALLOCMAN_NO_PADDR to
_utspace_split_alloc it should try and allocate a frame from the device
untyped pool if possible, otherwise fall back to regular untypeds.


# ca31690c 04-Oct-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

sel4allocman: emit errors when retype fails


# e8821712 29-Sep-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

libsel4allocman: Return allocated objects to the correct pool

The split untyped allocator maintains three pools for different kinds of untyped
objects. Previously the origin of an object was not tracked and when the object
was freed (i.e. returned to the allocator) it was just put back into kernel only
untyped pool. This naturally corrupted the book keeping resulting in future
allocations failing. This change records which pool any allocation is sourced
from and returns back to that pool


# 4ed4e0ac 28-Sep-2016 Adrian Danis <Adrian.Danis@data61.csiro.au>

Remove assumptions about the 0 paddr being invalid

There is no way to prevent platforms from having interesting memory
or devices at paddr 0, as such we should not be using 0 to signal
the absence of a physical address. This change fixes some cases
where we were doing this, and switches to sentinal value that cannot
collide with a valid page base physical address.


# 14c2e652 20-Mar-2016 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4allocman: Fix 32/64bit compatiblities in LOG functions


# 902a096c 18-Feb-2016 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4allocman: Memory mapped device IO allocation support

Adds support at the top level allocman interface for allocating
objects at a particular physical address (allocman_utspace_alloc_at)
as well as fullfilling allocations from 'device memory'. Uses this
for implementing the additional vka interface function vka_utspace_alloc_at

The split and twinkle untyped allocators are updated to support this
new interface. split implements the 'alloc_at' by brute force searches
over its untypeds, whilst twinkle with its lack of book keeping
is forced to fail any 'alloc_at' request


# 9b0f6e2a 16-May-2016 Anna Lyons <Anna.Lyons@nicta.com.au>

Remove all references to KERNEL_STABLE


# d9cc09a3 22-Nov-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4allocman: More error information


# 14ab04c3 12-Nov-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

libsel4allocman: Make allocman 64-bit friendly

When compiling for 32-bit there may be spurious warnings due to
some interface type changes. These will eventually be fixed when
other libraries are made 64-bit compatible