On 2026-05-04 15:19, raiden00pl wrote:
" ## Strict POSIX compliance" is the first point in the INVIOLABLES.md,
so I assume this is the main purpose of NuttX's existence. The main
priority
is POSIX, everything else is an addition - that's how I understand it.

The thing is - in my opinion - that interpretation of "strict POSIX compliance" is application-dependent.

Let's have an application that doesn't know real (calendar) time (so it always starts in year 1970) and never runs for more than a day or few days at most. Such an application will always have top four bytes of time_t and clock_t values set to zero.

Under such conditions, the compiler (optimizer) is entitled to simply remove any calculations involving those bytes and even not allocate space for them - that's with clock_t/time_t defined as uint64_t.

The compiler obviously cannot know how the application will be used - but the application author does and can state that in the configuration. "Use uint32_t for time_t/clock_t" then simply becomes "Size of time_t/clock_t is 64 bits but I declare that top 4 bytes of that are always zero". Using uint32_t is simply a way to tell the compiler that it should skip the top 4 bytes of uint64_t. Then you have compliant time_t/clock_t AND do not waste program memory/RAM.

Yes, it is at the cost of some #ifdefs

Reply via email to