diff --git a/src/include/visibility.h b/src/include/visibility.h index 4450c9495c..5de2682a8c 100644 --- a/src/include/visibility.h +++ b/src/include/visibility.h @@ -1,6 +1,6 @@ /**************************************************************************** * - * Copyright (C) 2012-2018 PX4 Development Team. All rights reserved. + * Copyright (C) 2012-2019 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -59,68 +59,67 @@ # define __END_DECLS #endif + + + + /* exit() is used on NuttX to exit a task. However on Posix, it will exit the * whole application, so we prevent its use there. There are cases where it * still needs to be used, thus we remap system_exit to exit. */ #define system_exit exit - -#if defined(ENABLE_LOCKSTEP_SCHEDULER) - +#if !defined(__PX4_NUTTX) #include -#include - -#define system_usleep usleep -#pragma GCC poison usleep -#define system_sleep sleep -#pragma GCC poison sleep - -#define system_clock_gettime clock_gettime -#define system_clock_settime clock_settime - -#include -#define system_pthread_cond_timedwait pthread_cond_timedwait -// We can't poison pthread_cond_timedwait because it seems to be used in the -// include. - #ifdef __cplusplus #include #endif +/* We should include cstdlib or stdlib.h but this doesn't + * compile because many C++ files include stdlib.h and would + * need to get changed. */ #pragma GCC poison exit +#endif // !defined(__PX4_NUTTX) -#include -#ifdef __cplusplus -#include -#endif - -// We don't poison usleep and sleep on NuttX because it is used in dependencies -// like uavcan and we don't need to fake time on the real system. -#include +/* For SITL lockstep we fake the clock, sleeping, and timedwaits + * Therefore, we prefix these syscalls with system_. */ #include - -#else // defined(ENABLE_LOCKSTEP_SCHEDULER) - -#include -#include - -#define system_usleep usleep -#define system_sleep sleep #define system_clock_gettime clock_gettime #define system_clock_settime clock_settime +/* We can't poison clock_settime/clock_gettime because they are + * used in DriverFramework. */ + +#if !defined(__PX4_NUTTX) +#include +// We can't include this for NuttX otherwise we get conflicts for read/write +// symbols in cannode. +#endif // !defined(__PX4_NUTTX) #define system_pthread_cond_timedwait pthread_cond_timedwait - -#endif +/* We can't poison pthread_cond_timedwait because it seems to be used in the + * include. */ + + +/* We don't poison usleep and sleep because it is used in dependencies + * like uavcan and DriverFramework. */ +#if !defined(__PX4_NUTTX) +#include +// We can't include this for NuttX otherwise we get conflicts for read/write +// symbols in cannode. +#endif // !defined(__PX4_NUTTX) +#define system_usleep usleep +#define system_sleep sleep -#if defined(__PX4_NUTTX) /* On NuttX we call clearenv() so we cannot use getenv() and others (see * px4_task_spawn_cmd() in px4_nuttx_tasks.c). * We need to include the headers declaring getenv() before the pragma, * otherwise it will trigger a poison error. */ +#if defined(__PX4_NUTTX) #include #ifdef __cplusplus #include #endif +/* We should include cstdlib or stdlib.h but this doesn't + * compile because many C++ files include stdlib.h and would + * need to get changed. */ #pragma GCC poison getenv setenv putenv #endif // defined(__PX4_NUTTX)