[
https://issues.apache.org/jira/browse/TS-2581?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15276955#comment-15276955
]
ASF GitHub Bot commented on TS-2581:
------------------------------------
Github user jpeach commented on a diff in the pull request:
https://github.com/apache/trafficserver/pull/622#discussion_r62565638
--- Diff: iocore/eventsystem/IOBuffer.cc ---
@@ -271,3 +272,74 @@ IOBufferReader::memcpy(const void *ap, int64_t len,
int64_t offset)
return p;
}
+
+void *
+ats_malloc_pool(size_t size)
+{
+ void *ptr = NULL;
+ size_t total_required_size = size + sizeof(uint64_t);
+
+ if (likely(size > 0)) {
+ if (unlikely(total_required_size > DEFAULT_MAX_BUFFER_SIZE)) {
+ // we need to fall back to ats_malloc for large allocations
+ ptr = ats_malloc(total_required_size);
+ } else {
+ int64_t iobuffer_index = iobuffer_size_to_index(total_required_size);
+ ink_release_assert(iobuffer_index >= 0);
+
+ ptr = ioBufAllocator[iobuffer_index].alloc_void();
+ Debug("allocator_pool",
+ "Allocating a block from iobuf index %ld (block size %ld),
requested_size = %ld, alloc size = %ld at location %p",
+ iobuffer_index, index_to_buffer_size(iobuffer_index), size,
total_required_size, ptr);
+ }
--- End diff --
This looks really similar to ``IOBufferData::alloc``?
> Add / modify APIs to allow easy freelist allocation of iobuffer's from C/C++
> plugins
> ------------------------------------------------------------------------------------
>
> Key: TS-2581
> URL: https://issues.apache.org/jira/browse/TS-2581
> Project: Traffic Server
> Issue Type: New Feature
> Components: TS API
> Reporter: Leif Hedstrom
> Assignee: Jason Kenny
> Labels: api-addition, newbie
> Fix For: 7.0.0
>
>
> This would allow for efficient allocations in plugins, such that they can do
> an in-place new() on a chunk of memory (iobuffer).
> The API / features should make it easy and possible to asks for an iobuffer
> of at least size <x>. It can return a bigger one, at which point, you'd waste
> some. But this allows us to reuse / repurpose the existing iobuffer
> allocation.
> Phil points out that there are existing iobuffer allocation APIs, so maybe
> something in conjunction with that is appropriate. I would like for this to
> be easy on the plugin user though, such that it's as simple as "malloc/free"
> chains.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)