SAMPScheduler.h
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:3k
源码类别:

DVD

开发平台:

Others

  1. #include "Config.h" // Global Configuration - do not remove!
  2. #include "playcoresampsamp_gen.h"
  3. #ifndef SAMPSCHEDULER_H_
  4. #define SAMPSCHEDULER_H_
  5. #define MESSAGE_LENGTH 12
  6. #define MAX_NUM_OF_MESSAGE          6  
  7. #define SAMP_API_PARAM (gns.sacd.samp_api_param)
  8. // *****************************************************************************
  9. // * Types definition
  10. // *****************************************************************************
  11. //general
  12. //#define OPTIMIZE_PARAMETER_SIZE
  13. #ifdef OPTIMIZE_PARAMETER_SIZE
  14. typedef UINT16 IDENT;
  15. typedef UINT16 TIMEOUT;
  16. typedef PRI PRIORITY;
  17. typedef UINT16 CAPACITY;
  18. typedef UINT16 UNITS;
  19. #define OS_FOREVER 0xffffu
  20. #else
  21. typedef UINT32 IDENT;
  22. typedef UINT32 TIMEOUT;
  23. typedef UINT32 PRIORITY;
  24. typedef UINT32 CAPACITY;
  25. typedef UINT32 UNITS;
  26. #define OS_FOREVER 0xfffffffful
  27. #endif
  28. //task status states
  29. typedef enum
  30. {
  31. TASK_NOT_STARTED = 0,
  32. TASK_STATUS_READY,
  33. TASK_STATUS_WAITING_FOR_MESSAGE,
  34. TASK_STATUS_WAITING_FOR_SEMAPHORE
  35. } SAMP_TASK_STATUS;
  36. //task control block
  37. typedef struct
  38. {
  39.    UINT16 Status;
  40.    UINT16 SemaphoreID;
  41.    UINT16 MailboxID;
  42.    void* MessagePtr;
  43.    UINT16 StackOff;
  44.    UINT32 SDRAMStackAddr;
  45. }
  46. TCB;
  47. //task context
  48. typedef struct
  49. {
  50. UH bp;
  51.    UH di;
  52.    UH si;
  53. FP task; /* procedure */
  54. } TASK_CONTEXT;
  55. //semaphore
  56. typedef UINT16 SEMAPHORE;
  57. //mailbox
  58. typedef struct
  59. {
  60. UINT8 Message[MESSAGE_LENGTH];
  61. }
  62. MESSAGE;
  63. typedef struct
  64. {
  65.    UINT16 Capacity;
  66. UINT16 MessageCount;
  67.    UINT16 WritePointer;
  68.    UINT16 ReadPointer;
  69. MESSAGE *MessageQueue;
  70. }
  71. MAILBOX;
  72. SAMP(ErrCode) SAMP(OS_TaskCreate) (PRIORITY Priority, size_t Stacksize, void(*Entry)(void),IDENT *Id);
  73. SAMP(ErrCode) SAMP(OS_TaskDelete) (IDENT Id);
  74. SAMP(ErrCode) SAMP(OS_SemCreate) (UNITS Units,IDENT *Id);
  75. SAMP(ErrCode) SAMP(OS_SemDelete) (IDENT Id);
  76. SAMP(ErrCode) SAMP(OS_SemP) (IDENT Id,TIMEOUT Timeout);
  77. SAMP(ErrCode) SAMP(OS_SemV) (IDENT Id);
  78. SAMP(ErrCode) SAMP(OS_MboxCreate) (CAPACITY Capacity,IDENT *Id);
  79. SAMP(ErrCode) SAMP(OS_MboxDelete) (IDENT Id);
  80. SAMP(ErrCode) SAMP(OS_SendMsg) (IDENT Id,void *Ptr,size_t Size);
  81. SAMP(ErrCode) SAMP(OS_ISendMsg) (IDENT Id,void *Ptr,size_t Size);
  82. SAMP(ErrCode) SAMP(OS_RecvMsg) (IDENT Id,TIMEOUT Timeout,void *Ptr,size_t Size,size_t *Msgsize);
  83. SAMP(ErrCode) SAMP(OS_GetTime)(UINT32 *Ticks);
  84. SAMP(ErrCode) SAMP(OS_TimerEvery)(UINT32 Ticks, void (*Callback)(void), IDENT *Id);
  85. SAMP(ErrCode) SAMP(OS_TimerCancel)(IDENT Id);
  86. int SAMP_SchedulerInstall(void);
  87. void SAMP_SchedulerRemove (void);
  88. #endif