From 5053fb8acc9fd7bb004aa5f8542a9b4a08b03138 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 2 Jan 2013 21:45:17 +1100 Subject: [PATCH] HAL_PX4: implement atomic operations --- libraries/AP_HAL_PX4/Scheduler.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libraries/AP_HAL_PX4/Scheduler.cpp b/libraries/AP_HAL_PX4/Scheduler.cpp index bfc90b5777..d95e22cf22 100644 --- a/libraries/AP_HAL_PX4/Scheduler.cpp +++ b/libraries/AP_HAL_PX4/Scheduler.cpp @@ -164,6 +164,12 @@ void PX4Scheduler::resume_timer_procs() { void PX4Scheduler::begin_atomic() { _nested_atomic_ctr++; + if (_nested_atomic_ctr == 1) { + sigset_t set; + sigemptyset(&set); + sigaddset(&set, MAIN_TIMER_SIGNAL); + sigprocmask(SIG_BLOCK, &set, NULL); + } } void PX4Scheduler::end_atomic() { @@ -172,6 +178,12 @@ void PX4Scheduler::end_atomic() { return; } _nested_atomic_ctr--; + if (_nested_atomic_ctr == 0) { + sigset_t set; + sigemptyset(&set); + sigaddset(&set, MAIN_TIMER_SIGNAL); + sigprocmask(SIG_UNBLOCK, &set, NULL); + } } void PX4Scheduler::reboot()