OpenCores
URL https://opencores.org/ocsvn/plasma/plasma/trunk

Subversion Repositories plasma

[/] [plasma/] [trunk/] [kernel/] [rtos.h] - Diff between revs 166 and 175

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 166 Rev 175
Line 10... Line 10...
 *    Plasma Real Time Operating System
 *    Plasma Real Time Operating System
 *--------------------------------------------------------------------*/
 *--------------------------------------------------------------------*/
#ifndef __RTOS_H__
#ifndef __RTOS_H__
#define __RTOS_H__
#define __RTOS_H__
 
 
 
// Symmetric Multi-Processing
 
#define OS_CPU_COUNT 1 
 
 
 
// Standard C library calls
#define printf     UartPrintf
#define printf     UartPrintf
//#define printf     UartPrintfPoll
//#define printf     UartPrintfPoll
#define scanf      UartScanf
#define scanf      UartScanf
#ifndef WIN32
#ifndef WIN32
#define malloc(S)  OS_HeapMalloc(NULL, S)
#define malloc(S)  OS_HeapMalloc(NULL, S)
#define free(S)    OS_HeapFree(S)
#define free(S)    OS_HeapFree(S)
#endif
#endif
#define OS_CPU_COUNT 1 //Symmetric Multi-Processing
 
 
 
// Typedefs
// Typedefs
typedef unsigned int   uint32;
typedef unsigned int   uint32;
typedef unsigned short uint16;
typedef unsigned short uint16;
typedef unsigned char  uint8;
typedef unsigned char  uint8;
Line 70... Line 73...
int rand(void);
int rand(void);
void srand(unsigned int seed);
void srand(unsigned int seed);
long strtol(const char *s, const char **end, int base);
long strtol(const char *s, const char **end, int base);
int atoi(const char *s);
int atoi(const char *s);
char *itoa(int num, char *dst, int base);
char *itoa(int num, char *dst, int base);
void dump(const unsigned char *data, int length);
 
#ifndef NO_ELLIPSIS
#ifndef NO_ELLIPSIS
int sprintf(char *s, const char *format, ...);
int sprintf(char *s, const char *format, ...);
int sscanf(char *s, const char *format, ...);
int sscanf(char *s, const char *format, ...);
#endif
#endif
#define _LIBC
#ifdef INCLUDE_DUMP
 
   void dump(const unsigned char *data, int length);
#endif
#endif
 
#ifdef INCLUDE_QSORT
 
   void qsort(void *base,
 
              long n,
 
              long size,
 
              int (*cmp)(const void *,const void *));
 
   void *bsearch(const void *key,
 
                 const void *base,
 
                 long n,
 
                 long size,
 
                 int (*cmp)(const void *,const void *));
 
#endif
 
#ifdef INCLUDE_TIMELIB
 
   #define difftime(time2,time1) (time2-time1)
 
   typedef unsigned long time_t;  //start at 1/1/80
 
   struct tm {
 
      int tm_sec;      //(0,59)
 
      int tm_min;      //(0,59)
 
      int tm_hour;     //(0,23)
 
      int tm_mday;     //(1,31)
 
      int tm_mon;      //(0,11)
 
      int tm_year;     //(0,n) from 1990
 
      int tm_wday;     //(0,6)     calculated
 
      int tm_yday;     //(0,365)   calculated
 
      int tm_isdst;    //          calculated
 
   };
 
   time_t mktime(struct tm *tp);
 
   void gmtime_r(const time_t *tp, struct tm *out);
 
#endif
 
#define _LIBC
 
#endif //_LIBC
 
 
/***************** Assembly **************/
/***************** Assembly **************/
typedef uint32 jmp_buf[20];
typedef uint32 jmp_buf[20];
extern uint32 OS_AsmInterruptEnable(uint32 state);
extern uint32 OS_AsmInterruptEnable(uint32 state);
extern void OS_AsmInterruptInit(void);
extern void OS_AsmInterruptInit(void);
Line 101... Line 134...
void OS_HeapAlternate(OS_Heap_t *Heap, OS_Heap_t *Alternate);
void OS_HeapAlternate(OS_Heap_t *Heap, OS_Heap_t *Alternate);
void OS_HeapRegister(void *Index, OS_Heap_t *Heap);
void OS_HeapRegister(void *Index, OS_Heap_t *Heap);
 
 
/***************** Thread *****************/
/***************** Thread *****************/
#if OS_CPU_COUNT <= 1
#if OS_CPU_COUNT <= 1
 
   // Single CPU
#define OS_CpuIndex() 0
#define OS_CpuIndex() 0
#define OS_CriticalBegin() OS_AsmInterruptEnable(0)
#define OS_CriticalBegin() OS_AsmInterruptEnable(0)
#define OS_CriticalEnd(S) OS_AsmInterruptEnable(S)
#define OS_CriticalEnd(S) OS_AsmInterruptEnable(S)
#define OS_SpinLock() 0
#define OS_SpinLock() 0
#define OS_SpinUnlock(S) 
#define OS_SpinUnlock(S) 
#define OS_SpinLockGet() 0
   #define OS_SpinCountGet() 0
#define OS_SpinLockSet(S)
   #define OS_SpinCountSet(S)
#else
#else
 
   // Symmetric multiprocessing
uint32 OS_CpuIndex(void);
uint32 OS_CpuIndex(void);
#define OS_CriticalBegin() OS_SpinLock()
#define OS_CriticalBegin() OS_SpinLock()
#define OS_CriticalEnd(S) OS_SpinUnlock(S)
#define OS_CriticalEnd(S) OS_SpinUnlock(S)
uint32 OS_SpinLock(void);
uint32 OS_SpinLock(void);
void OS_SpinUnlock(uint32 state);
void OS_SpinUnlock(uint32 state);
uint32 OS_SpinLockGet(void);
   uint32 OS_SpinCountGet(void);
void OS_SpinLockSet(uint32 count);
   void OS_SpinCountSet(uint32 count);
 
   void OS_CpuInterrupt(uint32 cpuIndex, uint32 bitfield);
#endif
#endif
 
 
#ifdef WIN32
#ifdef WIN32
#define STACK_SIZE_MINIMUM (1024*4)
#define STACK_SIZE_MINIMUM (1024*4)
#else
#else
Line 143... Line 179...
void OS_ThreadInfoSet(OS_Thread_t *Thread, void *Info);
void OS_ThreadInfoSet(OS_Thread_t *Thread, void *Info);
void *OS_ThreadInfoGet(OS_Thread_t *Thread);
void *OS_ThreadInfoGet(OS_Thread_t *Thread);
uint32 OS_ThreadPriorityGet(OS_Thread_t *Thread);
uint32 OS_ThreadPriorityGet(OS_Thread_t *Thread);
void OS_ThreadPrioritySet(OS_Thread_t *Thread, uint32 Priority);
void OS_ThreadPrioritySet(OS_Thread_t *Thread, uint32 Priority);
void OS_ThreadTick(void *Arg);
void OS_ThreadTick(void *Arg);
 
void OS_ThreadCpuLock(OS_Thread_t *Thread, int CpuIndex);
 
 
/***************** Semaphore **************/
/***************** Semaphore **************/
#define OS_SUCCESS 0
#define OS_SUCCESS 0
#define OS_ERROR  -1
#define OS_ERROR  -1
#define OS_WAIT_FOREVER -1
#define OS_WAIT_FOREVER -1
Line 183... Line 220...
void OS_TimerDelete(OS_Timer_t *Timer);
void OS_TimerDelete(OS_Timer_t *Timer);
void OS_TimerStart(OS_Timer_t *Timer, uint32 Ticks, uint32 TicksRestart);
void OS_TimerStart(OS_Timer_t *Timer, uint32 Ticks, uint32 TicksRestart);
void OS_TimerStop(OS_Timer_t *Timer);
void OS_TimerStop(OS_Timer_t *Timer);
 
 
/***************** ISR ********************/
/***************** ISR ********************/
void OS_InterruptServiceRoutine(uint32 Status);
#define STACK_EPC 88/4
 
void OS_InterruptServiceRoutine(uint32 Status, uint32 *Stack);
void OS_InterruptRegister(uint32 Mask, OS_FuncPtr_t FuncPtr);
void OS_InterruptRegister(uint32 Mask, OS_FuncPtr_t FuncPtr);
uint32 OS_InterruptStatus(void);
uint32 OS_InterruptStatus(void);
uint32 OS_InterruptMaskSet(uint32 Mask);
uint32 OS_InterruptMaskSet(uint32 Mask);
uint32 OS_InterruptMaskClear(uint32 Mask);
uint32 OS_InterruptMaskClear(uint32 Mask);
 
 
/***************** Init ******************/
/***************** Init ******************/
void OS_Init(uint32 *HeapStorage, uint32 Bytes);
void OS_Init(uint32 *HeapStorage, uint32 Bytes);
void OS_Start(void);
void OS_Start(void);
void OS_Assert(void);
void OS_Assert(void);
void MainThread(void *Arg);
void MainThread(void *Arg);
 
void OS_DebuggerInit(void);
 
 
/***************** UART ******************/
/***************** UART ******************/
typedef uint8* (*PacketGetFunc_t)(void);
typedef uint8* (*PacketGetFunc_t)(void);
void UartInit(void);
void UartInit(void);
void UartWrite(int C);
void UartWrite(int C);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.