forked from Archive/PX4-Autopilot
Posix: add '#pragma GCC poison exit'
Generally exit() should not be used on Posix, because it exits the whole program instead of only the task.
This commit is contained in:
parent
9193312bd0
commit
4e6139d9fb
|
@ -330,7 +330,7 @@ Client::_sig_handler(int sig_num)
|
|||
|
||||
if (_client_send_pipe_fd < 0) {
|
||||
PX4_ERR("pipe open fail");
|
||||
exit(-1);
|
||||
system_exit(-1);
|
||||
}
|
||||
|
||||
int bytes_to_send = get_client_send_packet_length(&packet);
|
||||
|
@ -338,7 +338,7 @@ Client::_sig_handler(int sig_num)
|
|||
|
||||
if (bytes_sent != bytes_to_send) {
|
||||
PX4_ERR("write fail");
|
||||
exit(-1);
|
||||
system_exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ void
|
|||
px4_systemreset(bool to_bootloader)
|
||||
{
|
||||
PX4_WARN("Called px4_system_reset");
|
||||
exit(0);
|
||||
system_exit(0);
|
||||
}
|
||||
|
||||
px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int stack_size, px4_main_t entry,
|
||||
|
|
|
@ -59,6 +59,18 @@
|
|||
# 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
|
||||
#ifdef __PX4_POSIX
|
||||
#include <stdlib.h>
|
||||
#ifdef __cplusplus
|
||||
#include <cstdlib>
|
||||
#endif
|
||||
#pragma GCC poison exit
|
||||
#endif
|
||||
|
||||
#ifdef __PX4_NUTTX
|
||||
/* On NuttX we call clearenv() so we cannot use getenv() and others (see px4_task_spawn_cmd() in px4_nuttx_tasks.c).
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 3bdfdf3db201d19dc243a1a1f1f3f85b55d08212
|
||||
Subproject commit b439556d54aa53532586e69de87cc720af4543c2
|
|
@ -87,7 +87,7 @@ public:
|
|||
|
||||
void task_main();
|
||||
|
||||
void exit() { _force_task_exit = true; }
|
||||
void exit_task() { _force_task_exit = true; }
|
||||
|
||||
private:
|
||||
void publish_led_control(led_control_s &led_control);
|
||||
|
|
|
@ -39,7 +39,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <string.h> /* memset, etc */
|
||||
#include <stdlib.h> /* exit */
|
||||
|
||||
#define oom() exit(-1)
|
||||
// FIXME: this needs to be checked: we need to handle OOM properly instead of just exiting
|
||||
#define oom() system_exit(-1)
|
||||
|
||||
typedef void (ctor_f)(void *dst, const void *src);
|
||||
typedef void (dtor_f)(void *elt);
|
||||
|
|
|
@ -48,7 +48,7 @@ void list_builtins(apps_map_type &apps)
|
|||
int shutdown_main(int argc, char *argv[])
|
||||
{
|
||||
printf("Shutting down\n");
|
||||
exit(0);
|
||||
system_exit(0);
|
||||
}
|
||||
|
||||
int list_tasks_main(int argc, char *argv[])
|
||||
|
|
Loading…
Reference in New Issue