Petri Savolainen(psavol) replied on github web page:
@@ -212,6 +214,55 @@ void shmem_test_basic(void)
CU_ASSERT(0 == odp_shm_free(shm));
+ * maximum size reservation
+static void shmem_test_max_reserve(void)
+ odp_shm_capability_t capa;
+ odp_shm_t shm;
+ uint64_t size, align;
+ uint8_t *data;
+ uint64_t i;
+ memset(&capa, 0, sizeof(odp_shm_capability_t));
+ CU_ASSERT_FATAL(odp_shm_capability(&capa) == 0);
+ CU_ASSERT(capa.max_blocks > 0);
+ size = capa.max_size;
+ align = capa.max_align;
+ /* Assuming that system has at least MAX_MEMORY_USED bytes available */
+ if (capa.max_size == 0 || capa.max_size > MAX_MEMORY_USED)
+ size = MAX_MEMORY_USED;
Since actual amount of available memory typically depends on system load. SHM
implementation may not have a limit (max_size==0), or limit may be due to
address space (e.g. 40bit == 1TB). System might not have always the max amount
(e.g. 1TB) available. I limit validation test to assume that at least 100MB
should be always available.
> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
> @muvarov `odp_shm_capability()` already tells the application the largest
> contiguous size it can reserve (`max_size`) and the maximum number of
> reserves it can do (`max_blocks`). This is just hinting to the implementation
> the total size of all reserves the application will do.
>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>> An additional `printf()` giving a bit more detail (i.e., `i` value) would be
>> useful here.
>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>> Shouldn't `MEGA` be a power of 2 for alignment purposes? I.e., 1024 x 1024
>>> rather than 1000 x 1000? And if the implementation supports an even higher
>>> `max_align` why not test that as well?
>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>> Why do you want to limit the size in a test that named
>>>> `shmem_test_max_reserve()`? If `capa.max_size == 0` then you have to pick
>>>> a specific target, but if it's non-zero why wouldn't you want to try to
>>>> reserve that much to see if the limit is true?
>>>>> muvarov wrote
>>>>> 0 - means not specified. And what about continuous of memory chunks?
>>>>> Requesting one big continues shared memory chunk is not general solution.
updated_at 2018-02-02 09:00:36