Microchip® Advanced Software Framework

lwip-port-1.4.1/at32uc3/sys_arch.c File Reference
#include "lwip/debug.h"
#include "lwip/sys.h"
#include "lwip/opt.h"
#include "lwip/stats.h"

Data Structures

struct  TimeoutlistPerThread
 

Macros

#define SYS_ARCH_BLOCKING_TICKTIMEOUT   ((portTickType)10000)
 

Functions

u32_t sys_arch_mbox_fetch (sys_mbox_t *mbox, void **msg, u32_t timeout)
 Wait for a new message to arrive in the mbox. More...
 
u32_t sys_arch_mbox_tryfetch (sys_mbox_t *mbox, void **msg)
 Wait for a new message to arrive in the mbox. More...
 
sys_prot_t sys_arch_protect (void)
 
u32_t sys_arch_sem_wait (sys_sem_t *sem, u32_t timeout)
 Wait for a semaphore for the specified timeout. More...
 
void sys_arch_unprotect (sys_prot_t pval)
 
void sys_init (void)
 
void sys_mbox_free (sys_mbox_t *mbox)
 Delete an mbox. More...
 
err_t sys_mbox_new (sys_mbox_t *mBoxNew, int size)
 Create a new mbox of specified size. More...
 
void sys_mbox_post (sys_mbox_t *mbox, void *msg)
 Post a message to an mbox - may not fail -> blocks if full, only used from tasks not from ISR. More...
 
void sys_mbox_set_invalid (sys_mbox_t *mbox)
 Set an mbox invalid so that sys_mbox_valid returns 0. More...
 
err_t sys_mbox_trypost (sys_mbox_t *mbox, void *msg)
 Try to post a message to an mbox - may fail if full or ISR. More...
 
int sys_mbox_valid (sys_mbox_t *mbox)
 Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid. More...
 
void sys_mutex_free (sys_mutex_t *mutex)
 Delete a semaphore. More...
 
void sys_mutex_lock (sys_mutex_t *mutex)
 Lock a mutex. More...
 
err_t sys_mutex_new (sys_mutex_t *mutex)
 Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores should be used instead. More...
 
void sys_mutex_set_invalid (sys_mutex_t *mutex)
 Set a mutex invalid so that sys_mutex_valid returns 0. More...
 
void sys_mutex_unlock (sys_mutex_t *mutex)
 Unlock a mutex. More...
 
int sys_mutex_valid (sys_mutex_t *mutex)
 Check if a mutex is valid/allocated: return 1 for valid, 0 for invalid. More...
 
void sys_sem_free (sys_sem_t *sem)
 Delete a semaphore. More...
 
err_t sys_sem_new (sys_sem_t *sem, u8_t count)
 Create a new semaphore. More...
 
void sys_sem_set_invalid (sys_sem_t *sem)
 Set a semaphore invalid so that sys_sem_valid returns 0. More...
 
void sys_sem_signal (sys_sem_t *sem)
 Signals a semaphore. More...
 
int sys_sem_valid (sys_sem_t *sem)
 Check if a sempahore is valid/allocated: return 1 for valid, 0 for invalid. More...
 
sys_thread_t sys_thread_new (const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio)
 The only thread function: Creates a new thread. More...
 

Variables

static u16_t NbActiveThreads = 0
 
static struct TimeoutlistPerThread Threads_TimeoutsList [SYS_THREAD_MAX]
 
volatile unsigned portLONG ulCriticalNesting
 

#define SYS_ARCH_BLOCKING_TICKTIMEOUT   ((portTickType)10000)

u32_t sys_arch_mbox_fetch ( sys_mbox_t mbox,
void **  msg,
u32_t  timeout 
)

Wait for a new message to arrive in the mbox.

Parameters
mboxmbox to get a message from
msgpointer where the message is stored
timeoutmaximum time (in milliseconds) to wait for a message
Returns
time (in milliseconds) waited for a message, may be 0 if not waited or SYS_ARCH_TIMEOUT on timeout The returned time has to be accurate to prevent timer jitter!
u32_t sys_arch_mbox_tryfetch ( sys_mbox_t mbox,
void **  msg 
)

Wait for a new message to arrive in the mbox.

Parameters
mboxmbox to get a message from
msgpointer where the message is stored
timeoutmaximum time (in milliseconds) to wait for a message
Returns
0 (milliseconds) if a message has been received or SYS_MBOX_EMPTY if the mailbox is empty
sys_prot_t sys_arch_protect ( void  )
u32_t sys_arch_sem_wait ( sys_sem_t sem,
u32_t  timeout 
)

Wait for a semaphore for the specified timeout.

Parameters
semthe semaphore to wait for
timeouttimeout in milliseconds to wait (0 = wait forever)
Returns
time (in milliseconds) waited for the semaphore or SYS_ARCH_TIMEOUT on timeout
void sys_arch_unprotect ( sys_prot_t  pval)
void sys_init ( void  )
void sys_mbox_free ( sys_mbox_t mbox)

Delete an mbox.

Parameters
mboxmbox to delete
err_t sys_mbox_new ( sys_mbox_t mbox,
int  size 
)

Create a new mbox of specified size.

Parameters
mboxpointer to the mbox to create
size(miminum) number of messages in this mbox
Returns
ERR_OK if successful, another err_t otherwise
void sys_mbox_post ( sys_mbox_t mbox,
void *  msg 
)

Post a message to an mbox - may not fail -> blocks if full, only used from tasks not from ISR.

Parameters
mboxmbox to posts the message
msgmessage to post (ATTENTION: can be NULL)
void sys_mbox_set_invalid ( sys_mbox_t mbox)

Set an mbox invalid so that sys_mbox_valid returns 0.

err_t sys_mbox_trypost ( sys_mbox_t mbox,
void *  msg 
)

Try to post a message to an mbox - may fail if full or ISR.

Parameters
mboxmbox to posts the message
msgmessage to post (ATTENTION: can be NULL)
int sys_mbox_valid ( sys_mbox_t mbox)

Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid.

void sys_mutex_free ( sys_mutex_t mutex)

Delete a semaphore.

Parameters
mutexthe mutex to delete
void sys_mutex_lock ( sys_mutex_t mutex)

Lock a mutex.

Parameters
mutexthe mutex to lock
err_t sys_mutex_new ( sys_mutex_t mutex)

Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores should be used instead.

Create a new mutex

Parameters
mutexpointer to the mutex to create
Returns
a new mutex
void sys_mutex_set_invalid ( sys_mutex_t mutex)

Set a mutex invalid so that sys_mutex_valid returns 0.

void sys_mutex_unlock ( sys_mutex_t mutex)

Unlock a mutex.

Parameters
mutexthe mutex to unlock
int sys_mutex_valid ( sys_mutex_t mutex)

Check if a mutex is valid/allocated: return 1 for valid, 0 for invalid.

void sys_sem_free ( sys_sem_t sem)

Delete a semaphore.

Parameters
semsemaphore to delete
err_t sys_sem_new ( sys_sem_t sem,
u8_t  count 
)

Create a new semaphore.

Parameters
sempointer to the semaphore to create
countinitial count of the semaphore
Returns
ERR_OK if successful, another err_t otherwise
void sys_sem_set_invalid ( sys_sem_t sem)

Set a semaphore invalid so that sys_sem_valid returns 0.

void sys_sem_signal ( sys_sem_t sem)

Signals a semaphore.

Parameters
semthe semaphore to signal
int sys_sem_valid ( sys_sem_t sem)

Check if a sempahore is valid/allocated: return 1 for valid, 0 for invalid.

sys_thread_t sys_thread_new ( const char *  name,
lwip_thread_fn  thread,
void *  arg,
int  stacksize,
int  prio 
)

The only thread function: Creates a new thread.

Parameters
namehuman-readable name for the thread (used for debugging purposes)
threadthread-function
argparameter passed to 'thread'
stacksizestack size in bytes for the new thread (may be ignored by ports)
priopriority of the new thread (may be ignored by ports)

u16_t NbActiveThreads = 0
static

Referenced by sys_init(), and sys_thread_new().

struct TimeoutlistPerThread Threads_TimeoutsList[SYS_THREAD_MAX]
static

Referenced by sys_init(), and sys_thread_new().

volatile unsigned portLONG ulCriticalNesting