#include "lwip/opt.h"
#include "lwip/err.h"
#include "arch/sys_arch.h"
Data Structures | |
struct | sys_timeo |
struct | sys_timeouts |
Macros | |
#define | SYS_ARCH_DEC(var, val) |
#define | SYS_ARCH_DECL_PROTECT(lev) |
SYS_LIGHTWEIGHT_PROT define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection for certain critical regions during buffer allocation, deallocation and memory allocation and deallocation. More... | |
#define | SYS_ARCH_GET(var, ret) |
#define | SYS_ARCH_INC(var, val) |
#define | SYS_ARCH_PROTECT(lev) |
#define | SYS_ARCH_SET(var, val) |
#define | SYS_ARCH_TIMEOUT 0xffffffffUL |
Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait. More... | |
#define | SYS_ARCH_UNPROTECT(lev) |
#define | SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT |
#define | sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg) |
Typedefs | |
typedef void(* | sys_timeout_handler )(void *arg) |
Functions | |
u32_t | sys_arch_mbox_fetch (sys_mbox_t mbox, void **msg, u32_t timeout) |
u32_t | sys_arch_mbox_tryfetch (sys_mbox_t mbox, void **msg) |
u32_t | sys_arch_sem_wait (sys_sem_t sem, u32_t timeout) |
struct sys_timeouts * | sys_arch_timeouts (void) |
void | sys_init (void) |
u32_t | sys_jiffies (void) |
void | sys_mbox_fetch (sys_mbox_t mbox, void **msg) |
Wait (forever) for a message to arrive in an mbox. More... | |
void | sys_mbox_free (sys_mbox_t mbox) |
sys_mbox_t | sys_mbox_new (int size) |
void | sys_mbox_post (sys_mbox_t mbox, void *msg) |
err_t | sys_mbox_trypost (sys_mbox_t mbox, void *msg) |
void | sys_msleep (u32_t ms) |
Sleep for some ms. More... | |
u32_t | sys_now (void) |
Returns the current time in milliseconds. More... | |
void | sys_sem_free (sys_sem_t sem) |
sys_sem_t | sys_sem_new (u8_t count) |
void | sys_sem_signal (sys_sem_t sem) |
void | sys_sem_wait (sys_sem_t sem) |
Wait (forever) for a semaphore to become available. More... | |
int | sys_sem_wait_timeout (sys_sem_t sem, u32_t timeout) |
Wait for a semaphore with timeout (specified in ms) More... | |
sys_thread_t | sys_thread_new (char *name, void(*thread)(void *arg), void *arg, int stacksize, int prio) |
void | sys_timeout (u32_t msecs, sys_timeout_handler h, void *arg) |
Create a one-shot timer (aka timeout). More... | |
void | sys_untimeout (sys_timeout_handler h, void *arg) |
Go through timeout list (for this task only) and remove the first matching entry, even though the timeout has not triggered yet. More... | |
#define SYS_ARCH_DEC | ( | var, | |
val | |||
) |
#define SYS_ARCH_DECL_PROTECT | ( | lev | ) |
SYS_LIGHTWEIGHT_PROT define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection for certain critical regions during buffer allocation, deallocation and memory allocation and deallocation.
#define SYS_ARCH_GET | ( | var, | |
ret | |||
) |
#define SYS_ARCH_INC | ( | var, | |
val | |||
) |
#define SYS_ARCH_PROTECT | ( | lev | ) |
#define SYS_ARCH_SET | ( | var, | |
val | |||
) |
#define SYS_ARCH_TIMEOUT 0xffffffffUL |
Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait.
#define SYS_ARCH_UNPROTECT | ( | lev | ) |
#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT |
#define sys_mbox_tryfetch | ( | mbox, | |
msg | |||
) | sys_arch_mbox_tryfetch(mbox, msg) |
typedef void(* sys_timeout_handler)(void *arg) |
u32_t sys_arch_mbox_fetch | ( | sys_mbox_t | mbox, |
void ** | msg, | ||
u32_t | timeout | ||
) |
References NULL, pdFALSE, SYS_ARCH_BLOCKING_TICKTIMEOUT, SYS_ARCH_TIMEOUT, xQueueReceive, and xTaskGetTickCount().
Referenced by sys_mbox_fetch().
u32_t sys_arch_mbox_tryfetch | ( | sys_mbox_t | mbox, |
void ** | msg | ||
) |
References NULL, pdFALSE, SYS_MBOX_EMPTY, and xQueueReceive.
References pdFALSE, SYS_ARCH_BLOCKING_TICKTIMEOUT, SYS_ARCH_TIMEOUT, xSemaphoreTake, and xTaskGetTickCount().
Referenced by mem_malloc(), sys_msleep(), and sys_sem_wait().
struct sys_timeouts* sys_arch_timeouts | ( | void | ) |
References i, NbActiveThreads, TimeoutlistPerThread::pid, Threads_TimeoutsList, TimeoutlistPerThread::timeouts, and xTaskGetCurrentTaskHandle().
Referenced by sys_mbox_fetch(), sys_sem_wait(), sys_timeout(), and sys_untimeout().
void sys_init | ( | void | ) |
References i, NbActiveThreads, sys_timeouts::next, NULL, TimeoutlistPerThread::pid, SYS_THREAD_MAX, Threads_TimeoutsList, and TimeoutlistPerThread::timeouts.
Referenced by lwip_init().
u32_t sys_jiffies | ( | void | ) |
void sys_mbox_fetch | ( | sys_mbox_t | mbox, |
void ** | msg | ||
) |
Wait (forever) for a message to arrive in an mbox.
While waiting, timeouts (for this thread) are processed.
mbox | the mbox to fetch the message from |
msg | the place to store the message |
References sys_timeo::arg, arg, sys_timeo::h, LOCK_TCPIP_CORE, LWIP_DEBUGF, memp_free(), sys_timeo::next, sys_timeouts::next, NULL, sys_arch_mbox_fetch(), SYS_ARCH_TIMEOUT, sys_arch_timeouts(), SYS_DEBUG, sys_timeo::time, and UNLOCK_TCPIP_CORE.
void sys_mbox_free | ( | sys_mbox_t | mbox | ) |
References SYS_MBOX_NULL, and vQueueDelete().
sys_mbox_t sys_mbox_new | ( | int | size | ) |
References SYS_MBOX_NULL, and xQueueCreate().
Referenced by tcpip_init().
void sys_mbox_post | ( | sys_mbox_t | mbox, |
void * | msg | ||
) |
References pdTRUE, SYS_ARCH_BLOCKING_TICKTIMEOUT, and xQueueSend.
Referenced by tcpip_callback_with_block(), tcpip_timeout(), and tcpip_untimeout().
err_t sys_mbox_trypost | ( | sys_mbox_t | mbox, |
void * | msg | ||
) |
References ERR_MEM, ERR_OK, errQUEUE_FULL, and xQueueSend.
Referenced by tcpip_callback_with_block(), tcpip_input(), and tcpip_trycallback().
void sys_msleep | ( | u32_t | ms | ) |
Sleep for some ms.
Timeouts are NOT processed while sleeping.
ms | number of milliseconds to sleep |
Timeouts are processed while sleeping.
ms | number of milliseconds to sleep |
References ERR_OK, sys_arch_sem_wait(), sys_sem_free(), sys_sem_new(), and sys_sem_wait_timeout().
u32_t sys_now | ( | void | ) |
Returns the current time in milliseconds.
Returns the current time in milliseconds.
References timer_get_ms().
void sys_sem_free | ( | sys_sem_t | sem | ) |
References SYS_SEM_NULL, and vQueueDelete().
Referenced by prvlwIPInit(), and sys_msleep().
References portENTER_CRITICAL, portEXIT_CRITICAL, SYS_SEM_NULL, vSemaphoreCreateBinary, and xSemaphoreTake.
Referenced by mem_init(), prvlwIPInit(), sys_msleep(), and tcpip_init().
void sys_sem_signal | ( | sys_sem_t | sem | ) |
References xSemaphoreGive.
Referenced by mem_malloc(), sswt_handler(), and tcpip_init_done().
void sys_sem_wait | ( | sys_sem_t | sem | ) |
Wait (forever) for a semaphore to become available.
While waiting, timeouts (for this thread) are processed.
sem | semaphore to wait for |
References sys_timeo::arg, arg, sys_timeo::h, LWIP_DEBUGF, memp_free(), sys_timeo::next, sys_timeouts::next, NULL, sys_arch_sem_wait(), SYS_ARCH_TIMEOUT, sys_arch_timeouts(), SYS_DEBUG, and sys_timeo::time.
Wait for a semaphore with timeout (specified in ms)
sem | semaphore to wait |
timeout | timeout in ms (0: wait forever) |
References sswt_cb::psem, sswt_handler(), sys_sem_wait, sys_timeout(), sys_untimeout(), and sswt_cb::timeflag.
Referenced by sys_msleep().
sys_thread_t sys_thread_new | ( | char * | name, |
void(*)(void *arg) | thread, | ||
void * | arg, | ||
int | stacksize, | ||
int | prio | ||
) |
References NbActiveThreads, NULL, pdPASS, TimeoutlistPerThread::pid, SYS_ARCH_DECL_PROTECT, SYS_ARCH_PROTECT, SYS_ARCH_UNPROTECT, Threads_TimeoutsList, and xTaskCreate.
Referenced by low_level_init(), portTASK_FUNCTION(), and tcpip_init().
void sys_timeout | ( | u32_t | msecs, |
sys_timeout_handler | h, | ||
void * | arg | ||
) |
Create a one-shot timer (aka timeout).
Timeouts are processed in the following cases:
msecs | time in milliseconds after that the timer should expire |
h | callback function to call when msecs have elapsed |
arg | argument to pass to the callback function |
References sys_timeo::arg, arg, sys_timeo::h, LWIP_ASSERT, LWIP_DEBUGF, memp_malloc(), sys_timeo::next, sys_timeouts::next, NULL, sys_arch_timeouts(), SYS_DEBUG, sys_timeo::time, and U32_F.
void sys_untimeout | ( | sys_timeout_handler | h, |
void * | arg | ||
) |
Go through timeout list (for this task only) and remove the first matching entry, even though the timeout has not triggered yet.
h | callback function that would be called by the timeout |
arg | callback argument that would be passed to h |
References sys_timeo::arg, sys_timeo::h, LWIP_ASSERT, memp_free(), sys_timeo::next, sys_timeouts::next, NULL, sys_arch_timeouts(), and sys_timeo::time.