![]() |
RainbowBS Manual
v0.1.0
Written by QWQ([email protected])
|
RainbowBS.h File Reference
#include <stddef.h>
#include <windows.h>#include "RainbowBSConf.h"#include "pt.h"#include "pt-sem.h"#include <stdio.h>#include <string.h>
Include dependency graph for RainbowBS.h:

This graph shows which files directly or indirectly include this file:

Data Structures | |
| struct | tTime |
| Time structure. More... | |
| struct | process_struct |
| Process structure(one process consists one protothread). More... | |
| struct | etime_struct |
| Event timer structure. More... | |
Macros | |
| #define | RBS_VERSION "0.1.0" |
| #define | RBS_VERNUM 0x0100 |
| #define | RBS_VER_MAJOR 0 |
| #define | RBS_VER_MINOR 1 |
| #define | RBS_VER_REVISION 0 |
| #define | RBS_VER_SUBREVISION 0 |
| #define | FALSE 0u |
| #define | TRUE 1u |
| #define | USE_PARA(para) (para = (para)) |
| #define | MIN(v0, v1) (((v0) > (v1)) ? (v1) : (v0)) |
| #define | MAX(v0, v1) (((v0) > (v1)) ? (v0) : (v1)) |
| #define | ABS(v) (((v) >= 0) ? (v) : (-(v))) |
| #define | SWAP(a, b) (a = (a) + (b),b = (a) - (b),a = (a) - (b)) |
| #define | COUNT_OF(a) (sizeof(a)/sizeof(a[0])) |
| #define | _STR(a) #a |
| #define | STR(a) _STR(a) |
| #define | _CONS(a, b) a##b |
| #define | CONS(a, b) _CONS(a,b) |
| #define | ALIGN_F(pointer, power2) (((IPTRDIFF)(pointer) + ((IPTRDIFF)((power2) - 1))) & (~((IPTRDIFF)((power2) - 1)))) |
| #define | ALIGN_B(pointer, power2) ((IPTRDIFF)(pointer) & (~((IPTRDIFF)((power2) - 1)))) |
| #define | HDMM_NULL NULL |
| #define | HBLOCK_NULL NULL |
| #define | HMEM_NULL NULL |
| #define | PROCESS_NONE NULL |
| #define | PROCESS_BROADCAST NULL |
| #define | PROCESS_NAME_STRING(process) ((NULL == (process)) ? "No Name" : (process)->name) |
predefined event type | |
| #define | PROCESS_EVENT_NONE 0x80 |
| #define | PROCESS_EVENT_INIT 0x81 |
| #define | PROCESS_EVENT_POLL 0x82 |
| #define | PROCESS_EVENT_EXIT 0x83 |
| #define | PROCESS_EVENT_SERVICE_REMOVED 0x84 |
| #define | PROCESS_EVENT_CONTINUE 0x85 |
| #define | PROCESS_EVENT_MSG 0x86 |
| #define | PROCESS_EVENT_EXITED 0x87 |
| #define | PROCESS_EVENT_TIMER 0x88 |
| #define | PROCESS_EVENT_COM 0x89 |
| #define | PROCESS_EVENT_MAX 0x8a |
process declaration and definition | |
| #define | PROCESS_THREAD(name, ev, data) |
| Define the body of a process. More... | |
| #define | PROCESS_NAME(name) extern tPROCESS name |
| Declare the name of a process. More... | |
| #define | PROCESS(name, strname) |
| Define a process. More... | |
semaphore declaration and definition | |
| #define | SEM_NAME(name) extern struct pt_sem sem_##name |
| Declare the name of a semaphore. More... | |
| #define | SEM(name, count) |
| Define a semaphore. More... | |
process protothread functions | |
| #define | PROCESS_BEGIN() |
| Define the beginning of a process. More... | |
| #define | PROCESS_END() |
| Define the end of a process. More... | |
| #define | PROCESS_WAIT_EVENT() |
| Wait for an event to be posted to the process. More... | |
| #define | PROCESS_WAIT_EVENT_UNTIL(c) |
| Wait for an event to be posted to the process, with an extra condition. More... | |
| #define | PROCESS_YIELD() |
| Yield the currently running process. | |
| #define | PROCESS_YIELD_UNTIL(c) |
| Yield the currently running process until a condition occurs. More... | |
| #define | PROCESS_WAIT_UNTIL(c) |
| Wait for a condition to occur. More... | |
| #define | PROCESS_WAIT_WHILE(c) |
| Wait for a condition not occur. More... | |
| #define | PROCESS_EXIT() |
| Exit the currently running process. | |
| #define | PROCESS_PT_SPAWN(pt, thread) |
| Spawn a protothread from the process. More... | |
| #define | PROCESS_PAUSE() |
| Yield the process for a short while. More... | |
| #define | PROCESS_WAIT_SEM(name) |
| #define | PROCESS_SIGNAL_SEM(name) |
poll and exit handlers | |
| #define | PROCESS_POLLHANDLER(handler) if(ev == PROCESS_EVENT_POLL) { handler; } |
| Specify an action when a process is polled. More... | |
| #define | PROCESS_EXITHANDLER(handler) if(ev == PROCESS_EVENT_EXIT) { handler; } |
| Specify an action when a process exits. More... | |
statement macros | |
statement macros for debug | |
| #define | RBS_DEBUG_STA(sta) sta |
C statement sta is compiled if enable debug. More... | |
| #define | RBS_DEBUG_IF(exp, sta) if (exp) { sta |
C statement if is compiled if enable debug. More... | |
| #define | RBS_DEBUG_ELSIF(sta1, exp, sta2) sta1;} else if (exp) { sta2 |
C statement else if is compiled if enable debug. More... | |
| #define | RBS_DEBUG_ENDIF(sta) sta;} |
C statement } for if is compiled if enable debug. More... | |
error macro function | |
error macros for debug output | |
| #define | RBS_DEBUG_ERROR(exp, s, sta) |
| Output error information. More... | |
| #define | RBS_DEBUG_ERROR_FORMAT(exp, format, sta, ...) |
| Output format error information conditionally. More... | |
warning macro function | |
warning macros for debug output | |
| #define | RBS_DEBUG_WARN(exp, s) |
| Output warning information conditionally. More... | |
| #define | RBS_DEBUG_WARN_FORMAT(exp, format, ...) |
| Output format warning information conditionally. More... | |
log macro function | |
log macros for debug output | |
| #define | RBS_DEBUG_LOG(s) |
| Output format log information. More... | |
| #define | RBS_DEBUG_LOG_FORMAT(format, ...) |
| Output format log information. More... | |
Typedefs | |
| typedef uint8_t | BOOL |
| typedef int8_t | I8 |
| typedef uint8_t | U8 |
| typedef int16_t | I16 |
| typedef uint16_t | U16 |
| typedef int32_t | I32 |
| typedef uint32_t | U32 |
| typedef int64_t | I64 |
| typedef uint64_t | U64 |
| typedef size_t | USIZE |
| typedef ptrdiff_t | IPTRDIFF |
| typedef U64 | TICK |
| typedef void * | hDMM |
| typedef void * | hBLOCK |
| typedef void * | hMEM |
| typedef U8 | process_event_t |
| typedef void * | process_data_t |
| typedef struct process_struct | tPROCESS |
| Process structure(one process consists one protothread). More... | |
| typedef struct etime_struct | tETIME |
| Event timer structure. More... | |
Functions | |
| BOOL | RBS_Init (void) |
| Initialize RainbowBS. More... | |
| U8 | RBS_GetCPUBits (void) |
| CPU word-width. More... | |
| BOOL | RBS_IsCPULittleEndian (void) |
| Check if CPU is little-endian. More... | |
| BOOL | RBS_IsStackGrowDown (void) |
| Check if stack grows down. More... | |
| void | RBS_MemSet8 (U8 *pDes, U8 fill, USIZE num) |
| Set memory by byte unit. More... | |
| void | RBS_MemSet16 (U16 *pDes, U16 fill, USIZE num) |
| Set memory by two-bytes unit. More... | |
| void | RBS_MemSet32 (U32 *pDes, U32 fill, USIZE num) |
| Set memory by four-bytes unit. More... | |
| void | RBS_MemCpy8 (U8 *pDes, const U8 *pSrc, USIZE num) |
| Copy memory by byte unit. More... | |
| U16 | RBS_Read16L (const U8 **ppData) |
| Read a 16-bits entity in little-endian. More... | |
| U32 | RBS_Read32L (const U8 **ppData) |
| Read a 32-bits entity in little-endian. More... | |
| void | RBS_Write16L (U8 **ppData, U16 data) |
| Write a 16-bits entity in little-endian. More... | |
| void | RBS_Write32L (U8 **ppData, U32 data) |
| Write a 32-bits entity in little-endian. More... | |
| U16 | RBS_Read16B (const U8 **ppData) |
| Read a 16-bits entity in big-endian. More... | |
| U32 | RBS_Read32B (const U8 **ppData) |
| Read a 32-bits entity in big-endian. More... | |
| void | RBS_Write16B (U8 **ppData, U16 data) |
| Write a 16-bits entity in big-endian. More... | |
| void | RBS_Write32B (U8 **ppData, U32 data) |
| Write a 32-bits entity in big-endian. More... | |
| hDMM | RBS_DMM_RegisterBlock (char *pName, void *pDM, USIZE size, USIZE block_size, HMUTEX hMutex) |
| Register the memory area as a dynamic block memory area. More... | |
| hBLOCK | RBS_DMM_AllocZeroBlock (hDMM hDmm) |
| Allocate a free block with zero initialization from the dynamic block memory area. More... | |
| hBLOCK | RBS_DMM_AllocBlock (hDMM hDmm) |
| Allocate a free block from the dynamic block memory area. More... | |
| BOOL | RBS_DMM_FreeBlock (hBLOCK hBlock) |
| Free the allocated block. More... | |
| void * | RBS_DMM_UseHBlock (hBLOCK hBlock) |
| Get the allocated block pointer. More... | |
| BOOL | RBS_DMM_UnuseHBlock (hBLOCK hBlock) |
| Unuse the allocated block area. More... | |
| hDMM | RBS_DMM_RegisterPool (char *pName, void *pDM, USIZE size, BOOL bAntiFrag, U16 handle_count, HMUTEX hMutex) |
| Register the memory area as a dynamic pool memory area. More... | |
| hMEM | RBS_DMM_AllocZeroMem (hDMM hDmm, USIZE size) |
| Allocate a free memory with zero initialization from the dynamic memory area. More... | |
| hMEM | RBS_DMM_AllocMem (hDMM hDmm, USIZE size) |
| Allocate a free memory from the dynamic memory area. More... | |
| hMEM | RBS_DMM_ReallocMem (hMEM hMem, USIZE size) |
| Reallocate a free memory from the same dynamic memory area. More... | |
| BOOL | RBS_DMM_FreeMem (hMEM hMem) |
| Free the allocated memory. More... | |
| void * | RBS_DMM_UseHMem (hMEM hMem) |
| Get the allocated memory pointer. More... | |
| BOOL | RBS_DMM_UnuseHMem (hMEM hMem) |
| Unuse the allocated memory area. More... | |
| USIZE | RBS_DMM_GetHMemSize (hMEM hMem) |
| Get the allocated memory size. More... | |
system information | |
| const char * | RBS_GetVersionString (void) |
| Get RainbowBS version string. More... | |
| const char * | RBS_GetSysInfo (void) |
| Get system description string. More... | |
process functions called from device drivers. | |
| BOOL | process_poll (tPROCESS *ptProcess) |
| Request a process to be polled. More... | |
functions called by the system and boot-up code | |
| U16 | process_run (void) |
| Run the system once - call poll handlers and process one event. More... | |
| BOOL | process_is_running (tPROCESS *ptProcess) |
| Check if a process is running. More... | |
| U16 | process_nevents (void) |
| Number of events waiting to be processed. More... | |
etimer functions called from application programs | |
| void | etimer_set (tETIME *ptEtime, TICK interval) |
| Set an event timer. More... | |
| void | etimer_reset (tETIME *ptEtime) |
| Reset an event timer with the same interval as was previously set. More... | |
| void | etimer_restart (tETIME *ptEtime) |
| Restart an event timer from the current point in time. More... | |
| void | etimer_adjust (tETIME *ptEtime, int timediff) |
| Adjust the expiration time for an event timer. More... | |
| TICK | etimer_expiration_time (tETIME *ptEtime) |
| Get the expiration time for the event timer. More... | |
| TICK | etimer_start_time (tETIME *ptEtime) |
| Get the start time for the event timer. More... | |
| BOOL | etimer_expired (tETIME *ptEtime) |
| Check if an event timer has expired. More... | |
| void | etimer_stop (tETIME *ptEtime) |
| Stop a pending event timer. More... | |
etimer functions called from timer interrupts,by the system | |
| void | etimer_request_poll (void) |
| Make the event timer aware that the clock has changed. More... | |
| BOOL | etimer_pending (void) |
| Check if there are any non-expired event timers. More... | |
time releated | |
| #define | RBS_TICK_MS (1000u/RBS_CFG_TICK_RATE) |
| TICK | RBS_GetTickCount (void) |
| Get system tick. More... | |
| U64 | RBS_GetRunTime (void) |
| Get system running time(ms). More... | |
| void | RBS_GetLocalTime (tTime *ptTime) |
| Get system local time. More... | |
| void | RBS_Delay (U32 milliseconds) |
| Delay some milliseconds. More... | |
convert digit to string | |
| enum | ePOW { SHEX, SBINARY, SDECIMAL } |
| Specific hex,binary or decimal. More... | |
| U8 | RBS_Number2String (U32 value, ePOW ePow, U8 length, char *pText) |
| Convert unsigned digit to ASCII string. More... | |
trigonometric releted | |
| #define | ANG_45DEG 1024 |
| #define | ANG_90DEG (2*ANG_45DEG) |
| #define | ANG_135DEG (3*ANG_45DEG) |
| #define | ANG_180DEG (4*ANG_45DEG) |
| #define | ANG_225DEG (5*ANG_45DEG) |
| #define | ANG_270DEG (6*ANG_45DEG) |
| #define | ANG_315DEG (7*ANG_45DEG) |
| #define | ANG_360DEG (8*ANG_45DEG) |
| int | RBS_sin (int angle) |
| Calculate sine. More... | |
| int | RBS_cos (int angle) |
| Calculate cosine. More... | |
| int | RBS_tan (int angle) |
| Calculate tangent. More... | |
| int | RBS_ctan (int angle) |
| Calculate cotangent. More... | |
process functions called from application programs | |
| #define | PROCESS_CURRENT() process_current |
| Get a pointer to the currently running process. More... | |
| #define | PROCESS_CONTEXT_BEGIN(ptProcess) { tPROCESS *tmp_current = PROCESS_CURRENT();process_current = ptProcess |
| Switch context to another process. More... | |
| #define | PROCESS_CONTEXT_END(ptProcess) process_current = tmp_current; } |
| End a context switch. More... | |
| tPROCESS * | process_current |
| BOOL | process_start (tPROCESS *ptProcess, process_data_t arg) |
| Start a process. More... | |
| BOOL | process_post (tPROCESS *ptProcess, process_event_t ev, void *data) |
| Post an asynchronous event to one or all processes. More... | |
| void | process_send (tPROCESS *ptProcess, process_event_t ev, void *data) |
| Send a synchronous event to a process. More... | |
| void | process_exit (tPROCESS *ptProcess) |
| Cause a process to exit. More... | |
| process_event_t | process_alloc_event (void) |
| Allocate a global event number. More... | |
Detailed Description
RainbowBS Interface.
Generated by
1.8.9.1
