Bill Fischofer(Bill-Fischofer-Linaro) replied on github web page:

test/validation/api/shmem/shmem.c
@@ -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;
+
+       if (capa.max_align == 0 || capa.max_align > MEGA)
+               align = MEGA;
+
+       printf("\n    size:  %" PRIu64 "\n", size);
+       printf("    align: %" PRIu64 "\n", align);
+
+       shm = odp_shm_reserve("test_max_reserve", size, align, 0);
+       CU_ASSERT(shm != ODP_SHM_INVALID);
+
+       data = odp_shm_addr(shm);
+       CU_ASSERT(data != NULL);
+
+       if (data) {
+               memset(data, 0xde, size);
+               for (i = 0; i < size; i++) {
+                       if (data[i] != 0xde) {
+                               CU_FAIL("Data error");


Comment:
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.


https://github.com/Linaro/odp/pull/446#discussion_r165526484
updated_at 2018-02-02 09:00:36

Reply via email to