Nathaniel Filardo
ef40f1cf1d
Replace "AAL" type with "Aal" to parallel "Pal"
2019-12-04 16:56:28 +00:00
Nathaniel Filardo
4d6759aca4
Make "pal_supports" not a function
...
But rather a template vardecl, as per C++14
2019-12-04 16:54:41 +00:00
Matthew Parkinson
2567e8e4f3
Merge pull request #106 from devnexen/atomic_swap_16_build_fix
...
atomic swap 16 flag missing fix.
2019-11-28 10:28:46 +00:00
David Carlier
9da3261a22
atomic swap 16 flag missing fix.
...
In some platforms, it is rather amd64 than the more common x86_64,
thus missing to rightfully set this flag.
2019-11-28 09:30:43 +00:00
Matthew Parkinson
7f465f9a5d
Merge pull request #104 from CTSRD-CHERI/for-upstream-cheri-prep
...
Further CHERI prep
2019-11-27 13:52:46 +00:00
Nathaniel Filardo
7afc6da566
pagemap: cast to size_t then do bit manip
...
Makes the CHERI compiler happier
2019-11-27 10:17:31 +00:00
Nathaniel Filardo
5ae8ecedee
metaslab: further use of pointer align funcs
2019-11-27 10:17:31 +00:00
Nathaniel Filardo
f8115a81b1
pagemap: cast uintptr_t to size_t before bit math
...
Not strictly necessary, but makes the CHERI compiler happier to see that
we're using a decidedly integral type rather than a possibly tagged
quantity.
2019-11-27 10:17:31 +00:00
Nathaniel Filardo
d13d810b66
Explicitly compute the size of two pointers
...
Don't use bits::is64() when setting MIN_ALLOC_BITS
2019-11-27 10:17:31 +00:00
Matthew Parkinson
f70191fb1e
Merge pull request #103 from CTSRD-CHERI/for-upstream-cheri-prep-tidy
...
CHERI prep work that's just tidying
2019-11-26 16:42:03 +00:00
Nathaniel Filardo
997ebc5065
ds/aba: rename ::load to ::ptr
...
`load` does not load (`read` and `compare_exchange` do) so give it a
different name. For the cases where `ptr` was previously the pointer we
were guarding, rename it to `raw`.
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
c7d509e418
test/func/malloc: align check as size_t
...
If the test happens as uintptr_t on CHERI, then we attempt to construct
a capability and use a capability-based test rather than an
integer-based one, and things go south.
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
0b47145526
test/func/malloc: posix_memalign vs. size_t
...
posix_memalign requires that the alignment parameter be a multiple of
sizeof(uintptr_t), but the test begins with alignments as small as
sizeof(size_t). While those are very likely the same value out in the
wild right now, they're not on CHERI.
Begin the test loop at sizeof(uintptr_t) and add a test that a request
for a reasonable amount of memory but with an alignment of
sizeof(uintptr_t)/2 fails with EINVAL.
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
44f80c00fc
pal_open_enclave: use pointers, not uintptr_t
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
263d735d0c
ds/address: add dynamic pointer_align_up
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
df2a2dc228
metaslab: rephrase assertion in terms of pointer_diff
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
4dd77d35ab
largealloc: rephrase pointer comparison
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
f7c131e4ac
largealloc: use pointer, not address_t, for cursor
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
83c467eb92
ds/address: add pointer diff function
...
And use it rather than open-coding subtraction of two address_cast-s.
2019-11-26 15:50:22 +00:00
Nathaniel Filardo
eb2d8890de
Additional provenance preservation
2019-11-26 15:37:52 +00:00
Nathaniel Filardo
ef7985510c
address.h: add pointer alignment functions
...
More explicit than address_cast and bitwise and
2019-11-26 15:37:52 +00:00
Nathaniel Filardo
20e804728b
Move bits::is_aligned_block to address.h
...
And chase consequences
2019-11-26 15:33:09 +00:00
Nathaniel Filardo
261249d9cb
Preserve provenance through pointer offsetting
2019-11-26 14:59:54 +00:00
Nathaniel Filardo
00268fc2ad
-Wundef
2019-11-26 14:59:54 +00:00
Nathaniel Filardo
9cdac05e4d
portability: platform compiler flags
...
-mcx16 and -march=native are platform specific. Leave them out if we
aren't targeting chips that need it.
2019-11-26 14:59:54 +00:00
Nathaniel Filardo
ad96ba05c1
largealloc: don't zero memory twice
...
If the decommit strategy is DecommitSuperLazy, then both the constexpr
if and the ordinary if would fire; add an else so we only fall into one.
2019-11-26 14:59:54 +00:00
Nathaniel Filardo
6f8623b5d7
Remove spurious store to pagemap
...
The same operation was just done one the other side of the loop above
and the loop does not modify this location in the map.
2019-11-26 14:59:54 +00:00
Nathaniel Filardo
2af4c64698
Improve commentary
2019-11-26 14:58:47 +00:00
Nathaniel Filardo
7251022e24
superslab: reorder initialization
...
Setting kind and then immediately testing it seems wrong.
2019-11-26 14:58:08 +00:00
Nathaniel Filardo
cbeeba004b
test/externalpointer: ifdef NDEBUG, not if
...
Reported by Alex Richardson
2019-11-26 14:58:08 +00:00
Nathaniel Filardo
10475f3432
Set linker-language C; prevents linking c++ stdlib
...
Thanks to Alex Richardson for the suggestion
2019-11-26 14:58:08 +00:00
Nathaniel Filardo
528215e45e
clangformat 8
2019-11-26 14:58:08 +00:00
Matthew Parkinson
11923154e8
Merge pull request #100 from CTSRD-CHERI/for-upstream-static-pagemap-slabmap
...
Deconflate "pagemap"
2019-11-25 16:26:55 +00:00
Nathaniel Filardo
e870960655
Some minor chunkmap commentary
2019-11-25 15:22:53 +00:00
Nathaniel Filardo
7ed80e7244
Report error on pagemap ABI mismatch
2019-11-25 15:22:53 +00:00
Nathaniel Filardo
d5b478ecb3
Deconflate "Pagemap" objects
...
There are two things calling themselves pagemaps:
- the src/mem/pagemap.h objects of that name
- the SuperslabMap object gets called a PageMap inside the Allocator
Rename the latter to chunkmap, with appropriate case and snake,
everywhere, and pull it out to its own file (chunkmap.h).
The default implementation of a chunkmap is a purely static object, but
we nevertheless instantiate it per allocator, so that other
implementations can use stateful instances when interposing on the
mutation methods. Note that the "get" method, however, must remain
static to support the interface required by Allocator objects.
2019-11-21 15:35:56 +00:00
Matthew Parkinson
7faefbbb0e
Merge pull request #102 from microsoft/cq-free
...
Code quality for `free`
2019-11-21 12:13:06 +00:00
Matthew Parkinson
1d0c42449e
CR feedback
2019-11-21 11:39:55 +00:00
Matthew Parkinson
3f9e63209d
Make CI show clangformat failures.
2019-11-21 11:39:55 +00:00
Matthew Parkinson
df1dfa55db
improved comments and rename field
...
Replaced used with needed, the number of objects needed empty this slab.
Some mild improvement to the comments.
2019-11-21 11:39:55 +00:00
Matthew Parkinson
efd5228da6
Store a full pointer in the Metaslab
...
This improves the codegen.
2019-11-21 11:39:55 +00:00
Matthew Parkinson
cb4b8fa545
Changes the representation in Metaslab Used
...
Used is now set to 1, when the slab is full. This means that the test
for
used - 1 == 0
can be used to detect leaving full, and entering empty, reducing fast
path deallocation branchs by 1.
2019-11-19 16:25:27 +00:00
David Chisnall
093b3cc650
Make the get_reference() method on ThreadAlloc public.
...
This is required so that we can replace the thread allocator during
setup for the library compartmentalisation case.
2019-11-18 14:44:30 +00:00
David Chisnall
31941eac06
Add explicit qualification.
...
Calling a superclass method requires explicit qualification when the
superclass is a templated class.
2019-11-18 13:16:51 +00:00
Matthew Parkinson
b889f11d04
Merge pull request #99 from CTSRD-CHERI/for-upstream-stats-underflow
...
Fix stats underflow
2019-11-15 10:10:06 +00:00
Nathaniel Filardo
3b2f521c46
allocstats: assert count doesn't go negative
2019-11-14 22:59:02 +00:00
Nathaniel Filardo
574700318e
debug_is_empty: don't dealloc() free space
...
We know that these are small objects and that they have already had
their cache friendly offsets applied, so jump in to the dealloc path
futher down, below the stats calls.
Split small_dealloc_offseted into a wrapper around the core to avoid
inlining too much into the debug function.
While here, move the handling of the Remote objects into its own block
so that `p` is out of scope thereafter.
Fixes https://github.com/microsoft/snmalloc/issues/98
2019-11-14 22:59:02 +00:00
Matthew Parkinson
97c87f2e91
Merge pull request #96 from microsoft/usemalloc_fix
...
Modified pass through
2019-11-14 14:48:58 +00:00
Matthew Parkinson
8853ee701e
Merge pull request #97 from microsoft/memory_leak
...
Memory leak
2019-11-14 14:48:11 +00:00
Matthew Parkinson
7a3f0eb50b
Clang format
2019-11-14 14:23:56 +00:00