mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2026-01-01 01:41:18 +01:00
Merge pull request #21422 from benpicco/suit_worker_trigger
sys/suit: don't block in suit_worker_trigger()
This commit is contained in:
commit
3bfdaeba87
@ -25,6 +25,7 @@
|
||||
#ifndef SUIT_TRANSPORT_WORKER_H
|
||||
#define SUIT_TRANSPORT_WORKER_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#if MODULE_NANOCOAP
|
||||
# include "net/nanocoap.h"
|
||||
#endif
|
||||
@ -38,8 +39,11 @@ extern "C" {
|
||||
*
|
||||
* @param[in] url url pointer containing the full coap url to the manifest
|
||||
* @param[in] len length of the url
|
||||
*
|
||||
* @retval true if the worker was triggered
|
||||
* @retval false if the worker is already busy
|
||||
*/
|
||||
void suit_worker_trigger(const char *url, size_t len);
|
||||
bool suit_worker_trigger(const char *url, size_t len);
|
||||
|
||||
/**
|
||||
* @brief Trigger a SUIT update via a worker thread
|
||||
|
||||
@ -207,11 +207,13 @@ static bool _worker_reap(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
void suit_worker_trigger(const char *url, size_t len)
|
||||
bool suit_worker_trigger(const char *url, size_t len)
|
||||
{
|
||||
mutex_lock(&_worker_lock);
|
||||
if (!mutex_trylock(&_worker_lock)) {
|
||||
return false;
|
||||
}
|
||||
if (!_worker_reap()) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(len != 0); /* A zero-length URI is invalid, but _url[0] == '\0' is
|
||||
@ -222,6 +224,7 @@ void suit_worker_trigger(const char *url, size_t len)
|
||||
_worker_pid = thread_create(_stack, SUIT_WORKER_STACKSIZE, SUIT_COAP_WORKER_PRIO,
|
||||
0,
|
||||
_suit_worker_thread, NULL, "suit worker");
|
||||
return true;
|
||||
}
|
||||
|
||||
void suit_worker_trigger_prepared(const uint8_t *buffer, size_t size)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user