History log of /fuchsia/zircon/system/ulib/region-alloc/region-alloc.cpp
Revision Date Author Comments
# a65141c2 29-Aug-2018 John Grossman <johngro@google.com>

[region-alloc] Remove custom new/delete

Doing some cleanup of my more ancient bug backlog and I ran across
this one. Follow the bug link for all of the technical details; but
the TL;DR is to remove any need for custom new/delete behavior and to
move to the standard zircon AllocChecker approach.

ZX-334 #done

Test: build and region-alloc unit tests
Change-Id: I663232d0471d2adeb2f0d6cf33bd2211a1693e96


# 31acb8bc 29-Jan-2018 Christopher Anderson <cja@google.com>

[debug] Fix compiler nits so we can build with -Og

All changes were related to uninitialized variables accesses
that are optimized out in other builds.

Change-Id: Ide3d49fb7dcbf8211fa7a3624b7119e837c62019


# f3e2126c 12-Sep-2017 Roland McGrath <mcgrathr@google.com>

[zx] Magenta -> Zircon

The Great Renaming is here!

Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94


# 59e644b1 07-Sep-2017 George Kulakowski <kulakowski@google.com>

[zircon][mxtl->fbl] Rename mxtl to fbl

Change-Id: Ie21b6498e1bfb0a7fa0315e40b9e5c3ee78646be


# d6396fa4 16-Jun-2017 George Kulakowski <kulakowski@google.com>

[ulib][status] Use the MX_OK and MX_ERR_* mx_status_t names

Change-Id: I3ba531de766b559b8922fb4910715c630efc9b82


# 719b4cbd 16-Mar-2017 John Grossman <johngro@google.com>

[assert] Introduce MX_ASSERT

Make magenta style asserts public and defined in magenta/assert.h. Convert
usermode code to use the MX_(ASSERT|DEBUG_ASSERT) versions.

Change-Id: Iec8cc20f9c577cee50bc72bd820d4c1b604b8a86


# 80fbf2dd 27-Feb-2017 George Kulakowski <kulakowski@google.com>

[mxtl] Remove reference-taking variants of AutoLock constructors

Change-Id: I3f2c3a6ff88a4004448e9e90668541203d1ff50e


# e7624707 27-Jan-2017 John Grossman <johngro@google.com>

[region-alloc] Remove RegionAllocator::Region overhead.

RegionAllocator::Regions already know which RegionAllocator they
belong to, and therefor they implicitly know which SlabAllocator they
belong to. Switch to using the MANUAL_DELETE flavor of
SlabAllocators<> to avoid the extra pointer's worth of overhead
involved in tracking which SlabAllocator<> each region came from.

Change-Id: If3556a606138722dc3e61ea12f291b9a6ff394c5


# 3d0071cd 20-Jan-2017 John Grossman <johngro@google.com>

[region-alloc] Remove custom slab allocator from RegionAlloc

Make it use the generic mxtl::SlabAllocator<> instead

Change-Id: Ifa340d816af202fb8566b52a9e836bc55ea95e73


# 2b84fa6b 19-Oct-2016 John Grossman <johngro@google.com>

[utils] Add synchronization to region-alloc library.

Protect RegionAllocators and RegionPools from thread safety issues
using mxtl::Mutex wrappers. While this limits the application of
region-alloc code to non-IRQ contexts, it greatly simplifies issues
surrounding thread safety when using the unique_ptr<> pattern for
automatically releasing regions back to their owner RegionAllocator
pool.

Change-Id: Ib509ba59d5e9a850ddd07e874b2862f54e4a3dc5


# 360d1db0 18-Oct-2016 Viet-Trung Luu <vtl@google.com>

[region-alloc] Fix release builds.

For some reason, gcc's -Werror=maybe-uninitialized picks up this
non-bug, but only in release builds and not in debug.

Change-Id: I3ca9975e11dd1de3bdea7947cc88deb64b57841c


# 37b11110 14-Oct-2016 John Grossman <johngro@google.com>

[utils] Allow subtraction from available region in region-alloc.

Change-Id: I71ce1b2c914c21ebe8cc306a05147bff0cb7141c


# 252e54be 14-Oct-2016 John Grossman <johngro@google.com>

[utils] Allow adding overlapping regions in region-alloc

When adding regions to the set of available regions in the
region-alloc utility library, add a flag which permits the user to
specify that it is OK for the regions being added to overlap with the
existing available regions. If the flag is set, the set of regions
available for allocation will become the union of the existing regions
and the region being added.

It is still not OK to attempt to add a region which intersets any
currently allocated region.

Change-Id: I64d19bbea7197a6ef38ed92cb3743e4392d35812


# 80387c4e 23-Sep-2016 John Grossman <johngro@google.com>

[utils] Add a region allocator utility library.

Add a small utility library (and tests) to manage allocating regions
of a 64-bit space. The general idea is that a user of the library can
create an allocator and add some (non-overlapping) regions to it.
They can then allocate regions from the available regions in the
allocator, either by size and alignment requirement or by specific
base address and size.

C and C++ APIs are provided. The C++ API depends on mxtl, but does
not depend on any particular implementation of new. Instead, it
explicitly uses malloc/free under the hood. Bookkeeping allocation is
done using allocation pools which allocate and carve up slabs of
memory (placing the results on a free list) in order to minimize the
frequency of trips to the heap and avoid heap fragmentation. Limits
can be placed on the total size of a pool, and pools can be shared
across multiple allocators allowing multiple applications in the same
binary to compartmentalize their memory impact.

Change-Id: I007322b66f60c2e520e45013e9c3352a60557af0