From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng2.m.smailru.net (smtpng2.m.smailru.net [94.100.179.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CB708469719 for ; Thu, 15 Oct 2020 02:41:42 +0300 (MSK) References: <3bcd42aa108daa198825597b97e54d4c09c0c1b0.1602541394.git.alexander.turenko@tarantool.org> From: Vladislav Shpilevoy Message-ID: Date: Thu, 15 Oct 2020 01:41:41 +0200 MIME-Version: 1.0 In-Reply-To: <3bcd42aa108daa198825597b97e54d4c09c0c1b0.1602541394.git.alexander.turenko@tarantool.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Tarantool-patches] [PATCH v3 02/16] module api: expose box region List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Turenko Cc: tarantool-patches@dev.tarantool.org Thanks for the patch! See 3 comments below. > diff --git a/src/exports.h b/src/exports.h > index 6d8303180..7861bb529 100644 > --- a/src/exports.h > +++ b/src/exports.h > @@ -218,6 +218,10 @@ EXPORT(fiber_is_cancelled) > EXPORT(fiber_join) > EXPORT(fiber_new) > EXPORT(fiber_new_ex) > +EXPORT(box_region_aligned_alloc) > +EXPORT(box_region_alloc) > +EXPORT(box_region_truncate) > +EXPORT(box_region_used) 1. Could you please keep the function list sorted? 'b' < 'f'. 2. Don't we want to also export reserve/aligned_reserve, while we are here? They are useful when need to write data knowing its maximal size, and then call alloc() with the exact size in the end. > diff --git a/src/lib/core/fiber.h b/src/lib/core/fiber.h > index 16ee9f414..a3014cc0a 100644 > --- a/src/lib/core/fiber.h > +++ b/src/lib/core/fiber.h > @@ -386,6 +386,82 @@ struct slab_cache; > +/** > + * Allocate size bytes from the box region. > + * > + * Don't use this function to allocate a memory block for a value > + * or array of values of a type with alignment requirements. A > + * violation of alignment requirements leads to undefined > + * behaviour. > + */ > +API_EXPORT void * > +box_region_alloc(size_t size); > + > +/** > + * Allocate size bytes from the box region with given alignment. > + * > + * Alignment must be a power of 2. > + */ > +API_EXPORT void * > +box_region_aligned_alloc(size_t size, size_t alignment); > + > +/** > + * Truncate the box region to the given size. > + */ > +void 3. + API_EXPORT. > +box_region_truncate(size_t size); > + > /** \endcond public */