31b781a2 | 04-Mar-2018 |
Jeremy Soller <jackpot51@gmail.com> |
Support Redox |
cd8d627e | 08-Nov-2017 |
Ian Douglas Scott <ian@iandouglasscott.com> |
Use new allocator API, and otherwise update for new Rust
- New allocator API - Remove the "allocator" feature, which should be unnecessary due to how the new allocator API works - NonZero no longer
Use new allocator API, and otherwise update for new Rust
- New allocator API - Remove the "allocator" feature, which should be unnecessary due to how the new allocator API works - NonZero no longer implements Deref (https://github.com/rust-lang/rust/pull/41064) - NonZero::new() returns an Option; use NonZero::new_unchecked() - Thread locals are no longer 'static (https://github.com/rust-lang/rust/pull/43746) - Changes to feature flags - Use unsafe to access extern static (https://github.com/rust-lang/rust/issues/36247)
show more ...
|
a93871cd | 22-Jul-2017 |
Ivan Enderlin <ivan.enderlin@hoa-project.net> |
Update `sc` to 0.2.1 (#52) |
35fd0db9 | 17-Jan-2017 |
Jorge Aparicio <japaricious@gmail.com> |
add support for Linux on AArch64, MIPS(64), PowerPC(64) and SPARC64 (#43)
by switching from the syscall crate to the sc crate. The sc crate is a
fork of the syscall crate that adds supports for sev
add support for Linux on AArch64, MIPS(64), PowerPC(64) and SPARC64 (#43)
by switching from the syscall crate to the sc crate. The sc crate is a
fork of the syscall crate that adds supports for several other
platforms.
show more ...
|
25c0dbe9 | 19-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Fix bugs in memtrimming related to the byte count.
Various issues (like premature checks) were present in the byte count beforehand. We fix these.
- Fix invalid byte counts. - Add a `LOCAL_MEMTRIM_
Fix bugs in memtrimming related to the byte count.
Various issues (like premature checks) were present in the byte count beforehand. We fix these.
- Fix invalid byte counts. - Add a `LOCAL_MEMTRIM_STOP` constant to `shim`, which serves for the minimum memtrimmed allocator (i.e. it will stop when the byte count is below this value). - Add more logs. - Add assertions about libc interference with SBRK.
There is still some problem when running
show more ...
|
e3190491 | 16-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Multi-level logging and user configuration.
This commit is a complete revision of `shim`. Anything which is configurable of nature is now moved to `shim` allowing complete customizability of `ralloc
Multi-level logging and user configuration.
This commit is a complete revision of `shim`. Anything which is configurable of nature is now moved to `shim` allowing complete customizability of `ralloc`.
But it doesn't end there!
The logs got quite messy before due to the classical TMI problem. We solve this by adding multiple "log levels" each describing a different class of importance.
- Add multi-level logging. - Move each component of shim into distinct modules. - Add allocator canonicalization to `shim`. - Add adjustable constant to `shim`. - Add default OOM handler to `shim`. - Add logging to everything. - Remove the `libc_write` module and add it to `log` instead. - Add colourful OOM message. - Tweak the allocator canonicalization strategy. - Rename the `log!` macro to `bk_log!`, and use the old name for the generalized logging macro. - Remove the `unsafe_no_brk_lock` feature, due to being unsafe in multithreaded environment (and in singlethreaded ones, `unsafe_no_mutex_lock` is sufficient). - Remove the `sys` module in favor of direct `shim` imports.
show more ...
|
998377c6 | 14-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Implement BRK caching.
Previously, BRK was making two syscalls in glibc due to requesting the program break and then setting it. This is fixed by caching this program break.
This commit prepares fo
Implement BRK caching.
Previously, BRK was making two syscalls in glibc due to requesting the program break and then setting it. This is fixed by caching this program break.
This commit prepares for OS memtrimming, which needs a well-defined thread-safe function.
- Completely remove libc dependency due to allocation behavior being uncertain in non-glibc implementation (the POSIX standard tells little to nothing about this). - Move the default OOM handler to shim. - Give an error message in the default OOM handler. - Add SBRK benchmark.
This should improve performance of fresh allocations by 30-40%.
show more ...
|
b7c1f1bf | 12-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Valgrind support.
We add first-class debugger support by providing functions for marking memory blocks uninitialized/free to the debugger. The default implementation is wired to valgrind, but it can
Valgrind support.
We add first-class debugger support by providing functions for marking memory blocks uninitialized/free to the debugger. The default implementation is wired to valgrind, but it can easily be replaced.
show more ...
|
78084f16 | 09-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Bump shim to 0.1.1 |
453db854 | 08-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Logging symbols for shim
To allow custom logging target, we replace the direct libc symbols by an import from the shim crate, which can then be replace to match desired behavior. |
cdec4b0e | 03-Aug-2016 |
ticki <ticki@users.noreply.github.com> |
Ralloc 1.0.0: A trait-based local/global allocator model.
- Use a trait-based approach to local/global allocators. In particular, we make what was previously provided by `Bookkeeper` to a trait in
Ralloc 1.0.0: A trait-based local/global allocator model.
- Use a trait-based approach to local/global allocators. In particular, we make what was previously provided by `Bookkeeper` to a trait in which the custom methods are overriden. - Enable ralloc-based block list reallocation. Instead of using BRK for this, we allow the allocator itself to manage the bookkeeper's capacity. This is done by adding the guarantee of the vector's capacity always being greater than or equal two the length plus two. - Remove the `UniCell` primitive and provides a `MoveCell` primitive instead. - Move `Bookkeeper`-specific methods to `Bookkeeper`'s impl instead of the `Allocator` trait. - Introduce the `LazyInit` primitive, which provides functionality similar to the `lazy_static` crate. In particular, it allows for an initializer to be executed if initialization is needed. This is used for allocating the initial segment. - Use lonely method for allocation API (abolish `lock`, which is no longer relevant due to the new model). - Due to an unsoundness discovered by @nilset, we remove the correctness guarantee of the "seperate deallocation" example. - Remove microcaches. This method is outdated with the new model. In the future, it will likely be replaced by a small-allocation LL arena. - Wrap TLS variables in a newtype that guarantees against crossthread leakage. - Update the tests.
show more ...
|
c8adc1ea | 29-Jul-2016 |
ticki <ticki@users.noreply.github.com> |
Performance pass for ralloc: global-local allocator model, TLS allocator, and more
- Ralloc now has a global-local allocator model where the local allocator requests memory from the global allocator
Performance pass for ralloc: global-local allocator model, TLS allocator, and more
- Ralloc now has a global-local allocator model where the local allocator requests memory from the global allocator. This allows for...
- ...thread-local storage allocators. The local allocator stores the allocator in a TLS static, bypassing the mutex.
- Changes to OOM handling: the OOM handleris no longer allocator-specific, but instead global
- Thread-local OOMs
- Tweak canonicalization.
- Add UniCell primive, which allow for single-threaded mutexes
- Tests and stuff.
show more ...
|
2443f0e4 | 14-Jul-2016 |
ticki <ticki@users.noreply.github.com> |
Move remove_at to Bookkeeper |
49840afd | 05-Jul-2016 |
Jeremy Soller <jackpot51@gmail.com> |
Add shim |