-
Notifications
You must be signed in to change notification settings - Fork 180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add tlsf_extend_pool function #18
base: master
Are you sure you want to change the base?
Conversation
could work with sbrk to extend the pool size dynamically Change-Id: I4f2cda419f88a31bc478e74813ebcd0d1275617c
@@ -977,45 +977,68 @@ size_t tlsf_alloc_overhead(void) | |||
return block_header_overhead; | |||
} | |||
|
|||
pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes) | |||
pool_t tlsf_extend_pool(tlsf_t tlsf, void* mem, size_t bytes, size_t incr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
API is ambiguous. I'd prefer:
pool_t tlsf_extend_pool(tlsf_t tlsf, pool_t pool, size_t incr);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I also think your prototype is better, but since the alignment may happen, it's impossible to recover the original size by finding the sentinal block. That's why the caller need pass the old size again.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What about:
pool_t tlsf_resize_pool(tlsf_t tlsf, pool_t pool, size_t oldBytes, size_t newBytes)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's also my initial thinking, but it's very hard(if not possible) to reduce the running pool size since some memory may be using by user. That's why I:
- Name the new function tlsf_extend_pool
- Pass the increased bytes instead new size(newBytes may smaller than oldBytes)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's very hard(if not possible) to reduce the running pool size since some memory may be using by user.
Documentation will warn about dangerousness of reducing running pool size.
User anyway should know what he is doing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The function just try to extend the pool:
- The algo to reduce pool is totally different
- And the condition to call reduce is also different
so the function is better to indicate what it can do and what not to do explicitly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, looks reasonable.
@@ -977,45 +977,68 @@ size_t tlsf_alloc_overhead(void) | |||
return block_header_overhead; | |||
} | |||
|
|||
pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes) | |||
pool_t tlsf_extend_pool(tlsf_t tlsf, void* mem, size_t bytes, size_t incr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, looks reasonable.
could work with sbrk to extend the pool size dynamically