27#ifndef NEXUS_OS_THREADX_H
28#define NEXUS_OS_THREADX_H
179 void* stack,
size_t stack_bytes,
180 UINT priority,
void (*entry)(
void*),
213 const char* name,
void* stack,
214 size_t stack_bytes, UINT priority,
215 void (*entry)(
void*),
228 size_t storage_bytes,
size_t depth,
281 size_t storage_bytes,
size_t depth,
283 size_t maximum_waiters);
nx_result_t
Operation result; success at submission means admission only.
Optional bounded close broadcast; registry is task-only.
nx_threadx_queue_waiter_t * send_waiters
nx_threadx_queue_waiter_t * receive_waiters
One binary latch; publishers quiesce before destruction.
Permanent task has no completion latch, join or destroy.
Exact arbitrary byte items; no native word-size narrowing.
One explicit caller latch per simultaneous close-aware operation.
nx_threadx_notify_t notification
struct nx_threadx_queue_waiter * next
Returning task retains all storage until external successful join.
Single-waiter notification port.
nx_result_t nx_threadx_permanent_task_start(nx_threadx_permanent_task_t *task, const char *name, void *stack, size_t stack_bytes, UINT priority, void(*entry)(void *), void *context)
Start a permanent task without a completion latch.
nx_result_t nx_threadx_notify_destroy(nx_threadx_notify_t *notification)
Destroy only after all publishers and waiter quiesce.
nx_result_t nx_threadx_task_discard_before_scheduler(nx_threadx_task_t *task)
Discard an unused task only inside actual bootstrap.
nx_result_t nx_threadx_queue_waiter_init(nx_threadx_queue_waiter_t *waiter)
Initialize one explicit close-aware operation latch.
nx_result_t nx_threadx_notify_init(nx_threadx_notify_t *notification)
Initialize one binary latch in task or actual bootstrap.
nx_result_t nx_threadx_task_start(nx_threadx_task_t *task, const char *name, void *stack, size_t stack_bytes, UINT priority, void(*entry)(void *), void *context)
Create a cooperatively returning task using exact storage.
nx_result_t nx_threadx_queue_waiter_destroy(nx_threadx_queue_waiter_t *waiter)
Destroy inactive waiter after its operation has returned.
nx_result_t nx_threadx_closable_queue_init(nx_threadx_closable_queue_t *queue, uint8_t *storage, size_t storage_bytes, size_t depth, size_t item_size, size_t maximum_waiters)
Add explicit bounded close broadcast to a byte queue.
bool nx_threadx_isr_allowed(void)
Read-only configurable-IRQ and selected mask-policy gate.
nx_result_t nx_threadx_closable_queue_close(nx_threadx_closable_queue_t *queue)
Reject sends, wake registered waiters, retain queued items.
nx_result_t nx_threadx_queue_send_until(nx_threadx_queue_t *queue, const void *item, nx_time_us_t deadline)
Task-only send; immediate readiness wins over expiration.
nx_result_t nx_threadx_external_tick_setup(uint32_t tick_hz)
Mandatory product hook only for explicit external Tick.
nx_result_t nx_threadx_closable_queue_receive_until(nx_threadx_closable_queue_t *queue, void *item, nx_time_us_t deadline, nx_threadx_queue_waiter_t *waiter)
Receive and drain previously queued items after close.
nx_result_t nx_threadx_closable_queue_send_until(nx_threadx_closable_queue_t *queue, const void *item, nx_time_us_t deadline, nx_threadx_queue_waiter_t *waiter)
Send with immediate close wake and explicit admission.
nx_result_t nx_threadx_closable_queue_destroy(nx_threadx_closable_queue_t *queue)
Destroy only a closed, drained and quiesced queue.
nx_wait_port_t nx_threadx_notify_port(nx_threadx_notify_t *notification)
Bind a sequence hint and one concurrent blocking waiter.
void nx_threadx_fail_stop(nx_result_t reason)
Product failure hook; default parks forever.
nx_result_t nx_threadx_queue_destroy(nx_threadx_queue_t *queue)
Destroy a drained queue after every caller quiesces.
struct nx_threadx_queue_waiter nx_threadx_queue_waiter_t
One explicit caller latch per simultaneous close-aware operation.
nx_result_t nx_threadx_queue_receive_until(nx_threadx_queue_t *queue, void *item, nx_time_us_t deadline)
Task-only receive; output changes only on SUCCESS.
nx_result_t nx_threadx_kernel_enter(void(*startup)(void *), void *context)
Explicit irreversible kernel entry owned by the product.
nx_result_t nx_threadx_queue_init(nx_threadx_queue_t *queue, uint8_t *storage, size_t storage_bytes, size_t depth, size_t item_size)
Initialize an exact arbitrary-byte bounded queue.
nx_result_t nx_threadx_task_join(nx_threadx_task_t *task, nx_time_us_t deadline)
Join a cooperatively returned task and prove detachment.
Absolute monotonic microsecond deadlines and wrap extension.
uint64_t nx_time_us_t
Microseconds in one boot/clock domain; no wall-clock semantics.
Optional sequence-latched waiting without hidden workers.