Skip to content
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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

xiaoxiang781216
Copy link

could work with sbrk to extend the pool size dynamically

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)
Copy link

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);

Copy link
Author

@xiaoxiang781216 xiaoxiang781216 Mar 10, 2021

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.

Copy link

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)

Copy link
Author

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:

  1. Name the new function tlsf_extend_pool
  2. Pass the increased bytes instead new size(newBytes may smaller than oldBytes)

Copy link

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.

Copy link
Author

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:

  1. The algo to reduce pool is totally different
  2. 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.

Copy link

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)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, looks reasonable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants