From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp60.i.mail.ru (smtp60.i.mail.ru [217.69.128.40]) (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 3FDC0469719 for ; Thu, 15 Oct 2020 16:16:56 +0300 (MSK) Date: Thu, 15 Oct 2020 16:17:16 +0300 From: Alexander Turenko Message-ID: <20201015131716.4wmw66boyslayssy@tkn_work_nb> References: <3bcd42aa108daa198825597b97e54d4c09c0c1b0.1602541394.git.alexander.turenko@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: 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: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org On Thu, Oct 15, 2020 at 01:41:41AM +0200, Vladislav Shpilevoy wrote: > 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'. Ouch, sorry for this. Fixed on the branch. > > 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. I don't like to do something in a hurry and without proper documentation and test. It surely worth it, so included into my backlog. > > > 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. Fixed on the branches. > > > +box_region_truncate(size_t size); > > + > > /** \endcond public */