Sorry to self-reply.

On 2022/10/12 12:06, fengchengwen wrote:
> Hi Dmitry,
> 
> On 2022/10/11 23:58, Dmitry Kozlyuk wrote:
>> 2022-10-11 12:17 (UTC+0000), Chengwen Feng:
>> [...]
>>> diff --git a/doc/guides/prog_guide/memarea_lib.rst 
>>> b/doc/guides/prog_guide/memarea_lib.rst
>>> new file mode 100644
>>> index 0000000000..85ad57145f
>>> --- /dev/null
>>> +++ b/doc/guides/prog_guide/memarea_lib.rst
>>> @@ -0,0 +1,39 @@
>>> +..  SPDX-License-Identifier: BSD-3-Clause
>>> +    Copyright(c) 2022 HiSilicon Limited
>>> +
>>> +Memarea Library
>>> +===============
>>> +
>>> +Introduction
>>> +------------
>>> +
>>> +The memarea library provides an allocator of variable-size objects, it is
>>> +oriented towards the application layer, which could provides 'region-based
>>> +memory management' function [1].
>>> +
>>> +The main features are as follows:
>>> +
>>> +* The allocated object aligned at ``RTE_CACHE_LINE_SIZE`` default.
>>
>> Isn't this an implementation detail?
>> Stating it in the API description limits optimization opportunities.
>> Cache line alignment is good in many cases,
>> but it can also be a waste of space,
>> e.g. for a thread-unsafe region for small objects.
>> Can this limitation only (temporarily?) apply to user memory?
>> Or can the minimal alignment be a property of memarea?
> 
> You are right, to be more general, I'll add the align parameter to 
> rte_memarea_alloc instead of stating it here.

The memarea is targeted to not so general usage, so v9 doesn't add align 
parameter to rte_memarea_alloc, at least from the internal feedback.
We could add rte_memarea_align_alloc() if the align requirement does exist.

> 
>>
>>> +
>>> +* The memory region can be initialized from the following memory sources:
>>> +  a) HEAP: e.g. invoke ``rte_malloc_socket``. b) LIBC: e.g. invoke
>>> +  posix_memalign to obtain. c) User memory: it can be from e.g. 
>>> rte_extmem_xxx
>>> +  as long as it is available. d) Another memarea: it can be allocated from
>>> +  another memarea.
>>
>> I think mentioning rte_extmem_xxx() is bogus
>> because user memory does not need to be registered with DPDK
>> (I understand it's an example, but still an unrelated reference).
>> Please format as a list.
> 
> okay
> 
>>
>>> +
>>> +* It provides refcnt feature which could be useful in multi-reader 
>>> scenario.
>>> +
>>> +* It supports MT-safe as long as it's specified at creation time.
>>> +
>>> +Library API Overview
>>> +--------------------
>>> +
>>> +The ``rte_memarea_create()`` function is used to create a memarea, the 
>>> function
>>> +returns the pointer to the created memarea or ``NULL`` if the creation 
>>> failed.
>>> +
>>> +The ``rte_memarea_destroy()`` function is used to destroy a memarea.
>>> +
>>> +Reference
>>> +---------
>>> +
>>> +[1] https://en.wikipedia.org/wiki/Region-based_memory_management
>>> diff --git a/doc/guides/rel_notes/release_22_11.rst 
>>> b/doc/guides/rel_notes/release_22_11.rst
>>> index 2da8bc9661..f5a67cec7b 100644
>>> --- a/doc/guides/rel_notes/release_22_11.rst
>>> +++ b/doc/guides/rel_notes/release_22_11.rst
>>> @@ -63,6 +63,12 @@ New Features
>>>    In theory this implementation should work with any target based on
>>>    ``LoongArch`` ISA.
>>>  
>>> +* **Added memarea library.**
>>> +
>>> +  The memarea library is an allocator of variable-size objects, it is 
>>> oriented
>>> +  towards the application layer, which could provides 'region-based memory
>>> +  management' function.
>>
>> "which could provides" -> "providing"
> 
> okay
> 
>>
>>> +
>>>  * **Added support for multiple mbuf pools per ethdev Rx queue.**
>>>  
>>>    The capability allows application to provide many mempools
>> [...]
>> .
>>
> 
> .
> 

Reply via email to