ardupilot/libraries/AP_HAL/Semaphores.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

33 lines
678 B
C++
Raw Normal View History

#include "AP_HAL.h"
extern const AP_HAL::HAL &hal;
/*
implement WithSemaphore class for WITH_SEMAPHORE() support
*/
WithSemaphore::WithSemaphore(AP_HAL::Semaphore *mtx, uint32_t line) :
WithSemaphore(*mtx, line)
{}
WithSemaphore::WithSemaphore(AP_HAL::Semaphore &mtx, uint32_t line) :
_mtx(mtx)
{
2024-01-16 18:11:26 -04:00
#ifndef HAL_BOOTLOADER_BUILD
bool in_main = hal.scheduler->in_main_thread();
if (in_main) {
hal.util->persistent_data.semaphore_line = line;
}
2024-01-16 18:11:26 -04:00
#endif
_mtx.take_blocking();
2024-01-16 18:11:26 -04:00
#ifndef HAL_BOOTLOADER_BUILD
if (in_main) {
hal.util->persistent_data.semaphore_line = 0;
}
2024-01-16 18:11:26 -04:00
#endif
}
WithSemaphore::~WithSemaphore()
{
_mtx.give();
}