nuttx-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [incubator-nuttx] patacongo commented on issue #856: A error in include/errno.h?
Date Fri, 24 Apr 2020 04:49:58 GMT

patacongo commented on issue #856:
URL: https://github.com/apache/incubator-nuttx/issues/856#issuecomment-618799837


   
   > This logic seems to be wrong,(**&& !defined(**KERNEL****))seems redundant.
   > This error looks like copying a line of code, changing it, but forgetting to delete
the extra parts.
   > To be honest, I often make this kind of mistakes.
   > 
   > #elif defined(CONFIG_BUILD_KERNEL) && !defined(**KERNEL**)
   
   No, it is not redundant `CONFIGI_BUILD_KERNEL` and `__KERNEL__` mean very different things.
 The first is a build mode much like Linux where the kernel is built as a separately linked
blob and applications a build as separately linked process blobs.
   
   `__KERNEL__` is an indication that we are currently compiling a portion of the kernel code.
 `__KERNEL__` is valid is all build modes.
   
   So the too definitions are not related and it is correct to specify both.
   
   > # if defined(**KERNEL**)
   > 
   > /* Kernel build. Kernel code has direct access */
   > # define __DIRECT_ERRNO_ACCESS 1
   > # else
   > 
   > /* User libraries for the kernel. Only indirect access from user
   > * libraries
   > */
   > # undef __DIRECT_ERRNO_ACCESS
   > # endif
   > 
   > #endif
   
   This is also correct.  When we are build internal components of the OS then `__KERNEL__`
will be defined and is is correct to access the `errno `variable in a different way by directly
accessin OS internal data.
   
   Code that is not part of the internal OS components must use the indirect method by accessing
the fake variable `errno`.  That is indirect in the since the `errno` is really a function
call and may even translate to an OS system call in certain build modes.
   
   So it all looks correct to me and all makes good sense.
   
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



Mime
View raw message