g_system_timer must be handler in a special way if there are external modules
This commit is contained in:
parent
42e0c5329d
commit
fe35751ec2
@ -53,18 +53,44 @@
|
|||||||
/* Efficient, direct access to OS global timer variables will be supported
|
/* Efficient, direct access to OS global timer variables will be supported
|
||||||
* if the execution environment has direct access to kernel global data.
|
* if the execution environment has direct access to kernel global data.
|
||||||
* The code in this execution context can access the kernel global data
|
* The code in this execution context can access the kernel global data
|
||||||
* directly if: (1) we are not running tick-less (in which case there is
|
* directly if:
|
||||||
* no global timer data), (2) this is an un-protected, non-kernel build, or
|
*
|
||||||
* (2) this is a protected build, but this code is being built for execution
|
* 1. We are not running tick-less (in which case there is no global timer
|
||||||
* within the kernel space.
|
* data),
|
||||||
|
* 2. This is an un-protected, non-kernel build,
|
||||||
|
* 3. This is a protected build, but this code is being built for execution
|
||||||
|
* within the kernel space.
|
||||||
|
* 4. It we are building with SYSCALLs enabled, but not in a kernel build,
|
||||||
|
* then we can't know a priori whether the code has access to the
|
||||||
|
* global variables or not. In that case we have to assume not.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef __HAVE_KERNEL_GLOBALS
|
#undef __HAVE_KERNEL_GLOBALS
|
||||||
#if !defined(CONFIG_SCHED_TICKLESS) && \
|
#if defined(CONFIG_SCHED_TICKLESS)
|
||||||
(!defined(CONFIG_NUTTX_KERNEL) || defined(__KERNEL__))
|
/* Case 1: There is no global timer data */
|
||||||
# define __HAVE_KERNEL_GLOBALS 1
|
|
||||||
#else
|
|
||||||
# define __HAVE_KERNEL_GLOBALS 0
|
# define __HAVE_KERNEL_GLOBALS 0
|
||||||
|
|
||||||
|
#elif defined(CONFIG_NUTTX_KERNEL)
|
||||||
|
# if defined(__KERNEL__)
|
||||||
|
/* Case 3: Kernel mode of protected kernel build */
|
||||||
|
|
||||||
|
# define __HAVE_KERNEL_GLOBALS 1
|
||||||
|
# else
|
||||||
|
/* User mode of protected kernel build */
|
||||||
|
|
||||||
|
# define __HAVE_KERNEL_GLOBALS 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(CONFIG_LIB_SYSCALL)
|
||||||
|
/* Case 4: Building with SYSCALLs enabled, but not part of a kernel build */
|
||||||
|
|
||||||
|
# define __HAVE_KERNEL_GLOBALS 0
|
||||||
|
|
||||||
|
#else
|
||||||
|
/* Case 2: Un-protected, non-kernel build */
|
||||||
|
|
||||||
|
# define __HAVE_KERNEL_GLOBALS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If CONFIG_SYSTEM_TIME64 is selected and the CPU supports long long types,
|
/* If CONFIG_SYSTEM_TIME64 is selected and the CPU supports long long types,
|
||||||
|
Loading…
Reference in New Issue
Block a user