diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2016-12-14 21:31:25 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-01-05 21:13:09 -0800 |
commit | 32b064108a94fa163b5e9f9aef2b85615c68ee1d (patch) | |
tree | e5cd6fe1bf84f555d5aa32f7ab970eb9001f827e /test/shmalloc.tasklist | |
parent | 02d9c311ec93b3dc87f8c600b9f3653e3b13009a (diff) | |
download | chrome-ec-32b064108a94fa163b5e9f9aef2b85615c68ee1d.tar.gz |
common: introduce malloc/free implementation
The new code allows to replace the existing one buffer at a time
shared memory facility with a malloc/free implementation. A new
configuration option is being provided (CONFIG_MALLOC).
The names of functions allocating and freeing memory are not being
changed to allow to switch between the two implementations seamlessly.
A double linked list of buffers is used to keep track of free and
allocated memory. During initialization the entire free memory block
is considered a single free buffer. No allocations/frees are allowed
from within interrupts. The control structures are protected by a
semaphore, so allocate and free invocation could be blocking.
A test is added which randomly allocates and frees memory, continuing
until all branches in the allocate and free functions are taken.
BUG=chrome-os-partner:
TEST=make buildall -j succeeds, which includes testing the new
malloc/free implementation.
Change-Id: I5e71c0190c6c247ec73bb459f66a6d7a06e3d248
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/420466
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'test/shmalloc.tasklist')
-rw-r--r-- | test/shmalloc.tasklist | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/shmalloc.tasklist b/test/shmalloc.tasklist new file mode 100644 index 0000000000..ab483e513f --- /dev/null +++ b/test/shmalloc.tasklist @@ -0,0 +1,19 @@ +/* + * Copyright 2016 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/** + * List of enabled tasks in the priority order + * + * The first one has the lowest priority. + * + * For each task, use the macro TASK_TEST(n, r, d, s) where : + * 'n' in the name of the task + * 'r' in the main routine of the task + * 'd' in an opaque parameter passed to the routine at startup + * 's' is the stack size in bytes; must be a multiple of 8 + */ +#define CONFIG_TEST_TASK_LIST + |