drv_hrt: fix TSAN issues

This commit is contained in:
Julian Oes
2026-02-18 12:44:41 +13:00
parent 9074c81838
commit 261cc16077
2 changed files with 12 additions and 6 deletions
+10 -4
View File
@@ -134,7 +134,10 @@ void hrt_store_absolute_time(volatile hrt_abstime *t)
*/
bool hrt_called(struct hrt_call *entry)
{
return (entry->deadline == 0);
hrt_lock();
bool result = (entry->deadline == 0);
hrt_unlock();
return result;
}
/*
@@ -416,12 +419,15 @@ hrt_call_invoke()
call->deadline = 0;
/* invoke the callout (if there is one) */
if (call->callout) {
hrt_callout callout = call->callout;
void *arg = call->arg;
if (callout) {
// Unlock so we don't deadlock in callback
hrt_unlock();
//PX4_INFO("call %p: %p(%p)", call, call->callout, call->arg);
call->callout(call->arg);
//PX4_INFO("call %p: %p(%p)", call, callout, arg);
callout(arg);
hrt_lock();
}