NetBurner 3.3.4
PDF Version
nbrtos.h File Reference

NetBurner Real-Time Operating System API. More...

#include <predef.h>
#include <constants.h>
#include <basictypes.h>
#include <nbrtoscpu.h>

Go to the source code of this file.

Classes

class  TickTimeout
 TickTimeouts are used to facilitate sequential function calls with timeout parameters that need to index from an initial start time and be proof against TimeTick rollover. More...
 
class  OS_SEM
 Semaphores are used to control access to shared resource critical section, or to communicate between tasks. More...
 
class  OS_MBOX
 Mailboxes are used to communicate between tasks. More...
 
class  OS_Q
 A queue functions as a fixed size FIFO for communication between tasks. More...
 
class  OS_FIFO
 A FIFO is used to pass structures from one task to another. Note: Structures to be passed must have an unused (void *) pointer as its first element. This precludes passing C++ objects with virtual member functions. More...
 
class  OS_CRIT
 An OS_CRIT object is used to establish critical sections of code that can only be run by one task at a time. Tasks that try to claim a critical section which is currently claimed by another task will stop and wait for that task to leave the critical section before continuing execution. More...
 
class  OS_FLAGS
 An OS_FLAGS object is used to set, clear, and pend on a set of flags that is held and maintained by the object. More...
 
class  OSLockObj
 A simple wrapper class that helps use OS locks effectively. More...
 
class  OSCriticalSectionObj
 A simple wrapper class that helps utilize OS_CRIT objects more effectively. More...
 
class  OSLockAndCritObj
 A simple wrapper class that helps utilize OS_CRIT objects to lock tasks and enter critical sections more effectively. More...
 
class  OSSpinCrit
 A simple wrapper class that uses an OS_CRIT object to try and claim a critical section, and will continue the attempt until it is able to do so. More...
 

Macros

#define OS_STAT_RDY   0x00
 Ready to run.
 
#define OS_STAT_MBOX   0x01
 Pending on mailbox.
 
#define OS_STAT_SEM   0x02
 Pending on semaphore.
 
#define OS_STAT_Q   0x04
 Pending on queue.
 
#define OS_STAT_FIFO   0x08
 Pending on FIFO.
 
#define OS_STAT_CRIT   0x10
 Pending on Critical Section.
 
#define OS_STAT_DELAY   0x20
 Reserved.
 
#define OS_STAT_RES4   0x40
 Reserved.
 
#define OS_STAT_RES5   0x80
 Reserved.
 
#define OS_NO_ERR   0
 No Error.
 
#define OS_TIMEOUT   10
 Timeout.
 
#define OS_MBOX_FULL   20
 Mailbox Full.
 
#define WAIT_FOREVER   0
 
#define OSSimpleTaskCreatewName(x, p, n)
 This macro functions the same as OSTaskCreatewName(). More...
 

Functions

void OSFlagSet (OS_FLAGS *flags, uint32_t bits_to_set)
 This function sets the corresponding bits asserted in bits_to_set of an OS_FLAGS object pointed to by *flags. More...
 
void OSFlagClear (OS_FLAGS *flags, uint32_t bits_to_clr)
 This function clears the bits asserted in bits_to_clr of an OS_FLAGS object pointed to by *flags.. More...
 
uint8_t OSFlagPendAny (OS_FLAGS *flags, uint32_t bit_mask, uint16_t timeout)
 This function waits a number of time ticks specified by timeout until any of the flags indicated by bit_mask are set. More...
 
uint8_t OSFlagPendAnyNoWait (OS_FLAGS *flags, uint32_t bit_mask)
 This function immediately checks to see if any of the flag bits indicated by bit_mask are set; it does not wait. More...
 
uint8_t OSFlagPendAll (OS_FLAGS *flags, uint32_t bit_mask, uint16_t timeout)
 This function waits a number of time ticks specified by timeout until all the flags indicated by bit_mask are set. More...
 
uint8_t OSFlagPendAllNoWait (OS_FLAGS *flags, uint32_t bit_mask)
 This function immediately checks to see if all the flag bits indicated by bit_mask are set; it does not wait. More...
 
uint32_t OSFlagState (OS_FLAGS *flags)
 This function returns the current values of the flags stored in the OS_FLAGS object structure. More...
 
uint8_t OSTaskCreatewName (void(*task)(void *dptr), void *data, void *pstktop, void *pstkbot, uint8_t prio, const char *name)
 This function creates a new task. More...
 
void OSTimeWaitUntil (uint32_t to_when)
 Delay the task until the specified value of the system timer tick. The number of system ticks per second is defined by the constant: TICKS_PER_SECOND in <nburn_install>/nbrtos/include/constants.h. The default value is 20 ticks per second. More...
 
void OSTimeDly (uint32_t to_count)
 Delay the task until the specified value of the system timer ticks. The number of system ticks per second is defined by the constant: TICKS_PER_SECOND in <nburn_install>/nbrtos/include/constants.h. The default value is 20 ticks per second. More...
 
void OSTaskDelete (void)
 This function deletes the current calling task, but we do not recommend the use of this function because it can cause memory leaks. More...
 
uint8_t OSChangePrio (uint32_t newp)
 This function changes the priority of the calling task. More...
 
void OSLock (void)
 Calling the OSLock function will prevent the OS from changing tasks. More...
 
void OSUnlock (void)
 This function unlocks the OS. More...
 
uint8_t OSSemInit (OS_SEM *psem, long value)
 Initializes a semaphore. More...
 
uint8_t OSSemPost (OS_SEM *psem)
 Increases the value of the semaphore by one. Note: If any higher priority tasks were waiting on the semaphore - it releases them. More...
 
uint8_t OSSemPend (OS_SEM *psem, uint16_t timeout)
 Wait timeout ticks for the value of the semaphore to be non zero. Note: A timeout value of 0 (zero) waits forever. More...
 
uint8_t OSSemPendNoWait (OS_SEM *psem)
 OSSemPendNoWait() is identical to OSSemPend(), but it does not wait. More...
 
uint8_t OSMboxInit (OS_MBOX *pmbox, void *msg)
 This function is used to initialize an OS_MBOX structure. More...
 
uint8_t OSMboxPost (OS_MBOX *pmbox, void *msg)
 This function posts a message to a Mail box. More...
 
void * OSMboxPend (OS_MBOX *pmbox, uint16_t timeout, uint8_t *err)
 Wait timeout ticks for some other task to post to the Mailbox. More...
 
void * OSMboxPendNoWait (OS_MBOX *pmbox, uint8_t *err)
 OSMboxPendNoWait() is identical to OSMboxPend(), but it does not wait. More...
 
uint8_t OSQInit (OS_Q *pq, void **start, uint8_t size)
 A queue functions as a fixed size FIFO for communication between tasks. This function initializes an OS_Q structure. More...
 
uint8_t OSQPost (OS_Q *pq, void *msg)
 This function posts a message to a Queue. More...
 
uint8_t OSQPostFirst (OS_Q *pq, void *msg)
 This function posts a message like OSQPost, but posts the message at the head of the queue. More...
 
uint8_t OSQPostUnique (OS_Q *pq, void *msg)
 This function posts a message like OSQPost, but only if the message isn't already in the queue The function performs a brute force check to see if the message is already in the queue. More...
 
uint8_t OSQPostUniqueFirst (OS_Q *pq, void *msg)
 This function posts a message like OSQPostFirst, but only if the message isn't already in the queue The function performs a brute force check to see if the message is already in the queue. More...
 
void * OSQPend (OS_Q *pq, uint16_t timeout, uint8_t *err)
 Wait timeout ticks for another task to post to the queue. More...
 
void * OSQPendNoWait (OS_Q *pq, uint8_t *err)
 OSQPendNoWait() is identical to the OSQPend() function but it does not wait. More...
 
uint8_t OSFifoInit (OS_FIFO *pFifo)
 Initialize a FIFO, which is used to pass structures from one task to another. More...
 
uint8_t OSFifoPost (OS_FIFO *pFifo, OS_FIFO_EL *pToPost)
 This function posts to a FIFO. More...
 
uint8_t OSFifoPostFirst (OS_FIFO *pFifo, OS_FIFO_EL *pToPost)
 This function is identical to OSFifoPost(), but the element posted is put at the beginning of the FIFO list. More...
 
OS_FIFO_EL * OSFifoPend (OS_FIFO *pFifo, uint16_t timeout)
 This function pends on a FIFO. More...
 
OS_FIFO_EL * OSFifoPendNoWait (OS_FIFO *pFifo)
 This function is identical to the OSFifoPen() function, but it does not wait. More...
 
uint8_t OSCritInit (OS_CRIT *pCrit)
 This function initializes the critical section. More...
 
uint8_t OSCritEnter (OS_CRIT *pCrit, uint16_t timeout)
 This function tries to enter or claim the critical section. More...
 
uint8_t OSCritEnterNoWait (OS_CRIT *pCrit)
 This function tries to enter or claim the critical section. More...
 
uint8_t OSCritLeave (OS_CRIT *pCrit)
 This function releases the critical section. More...
 
void OSChangeTaskDly (uint16_t task_prio, uint32_t to_count)
 This function allows the User to modify the timeout delay for a task that is waiting. More...
 
void OSDumpTCBStacks (void)
 This function dumps information about the UCOS stacks and tasks to stdout. This function is useful for debugging. Note: This function is only valid when NBRTOS_STACKCHECK is defined. More...
 
void OSDumpTasks (void)
 This function dumps the state and call stack for every task to stdout. This function is useful for debugging. Note: This function is only valid when NBRTOS_STACKCHECK is defined. More...
 
void ShowTaskList (void)
 This functions dumps the current RTOS task states to stdio. More...
 

Detailed Description

NetBurner Real-Time Operating System API.