Skip to content

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
}

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.

}

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