Hi Stephane,

On 01/12/2021 00:20, Stephane Viau wrote:
+/* Memory & peripherals */
+#define CONFIG_INMATE_REGIONS_NUM      (1)
+#define CONFIG_INMATE_REGIONS          \
+       MEM_REGION_RWXL(0xc0000000, CONFIG_INMATE_BASE, MB(16)),   /* RAM */    
\

just picking out this aspect here. I found a way how we can even get rid of CONFIG_INMATE_REGIONS_NUM.

The problem is, we need to know the storage size in advance, in order to declare the array. This is why you have CONFIG_INMATE_REGIONS_NUM definition.

But with your new macros, we have the definition inside CONFIG_INMATE_REGIONS, and we can easily reuse it: We can first use it for calculating the storage size, and later we can use it inside the definition. Have a look at the following snippet. The compiler eats it. I guess you should get the basic idea:

----8<----

#include <stdio.h>

struct foo {
        int a;
        int b;
};

#define MEMBER(A, B)    \
        {       .a = A, \
                .b = B, \
        }

#define MEMBERS \
        MEMBER(1, 2),   \
        MEMBER(3, 4),   \
        MEMBER(5, 6),

#define MEMBERS_NUM \
        (sizeof((struct foo[]){MEMBERS}) / sizeof(struct foo))

struct foo asd[MEMBERS_NUM] = {
        MEMBERS
};

int main(void)
{
        printf("%u\n", MEMBERS_NUM);
}


----8<----

This way, we could get rid of all the *_NUM-macros, and have the values calculated automatically (and correctly). What do you think?

Thanks
  Ralf

--
You received this message because you are subscribed to the Google Groups 
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jailhouse-dev/d53d89b2-1896-8bff-02ae-3d4c3ba312ca%40oth-regensburg.de.

Reply via email to