/****************************************************
/* By Tom Green and Dennis Cronin */
/* 10/19/92 */
/****************************************************/
/* function pointer */
typedef void (*fptr)(void);
/* this is a wait_q structure */
typedef struct wait_q{
void *task_ptr;
int mesg_flg;
}wait_q;
/* SSX prototypes */
int ssx_init(void);
void ssx_run(void);
void ssx_stop(void);
int ssx_task_create(unsigned char task_pri, unsigned char task_id,fptr task_ptr,
unsigned int stack_size,char *name);
void ssx_task_delay(long ticks);
int ssx_task_delete(unsigned char task_id);
unsigned char ssx_change_priority(unsigned char new_priority);
void ssx_wait(wait_q *wqptr);
int ssx_wait_with_alarm(wait_q *wqptr,long timeout);
int ssx_alert(wait_q *wqptr);
void ssx_clock_tick(void);
void ssx_set_time(long ticks);
long ssx_get_time(void);
void ssx_lock(void);
void ssx_unlock(void);
void ssx_switch(void);
/* SSX status codes */
#define SUCCESS 0
/* task ID error */
#define TID_ERR 1
/* message waiting error */
#define MW_ERR 2
/* no TCBs error */
#define TCB_ERR 3
/* could not allocate stack for task */
#define STACK_ERR 4
/* task timed out (wait_with_alarm) */
#define TO_ERR 5
/* error initializing SSX */
#define INIT_ERROR 6
/* initialize semaphore to having waiting message */
#define SET_SEMAPHORE(wqptr) (wqptr)->mesg_flg=1; \
(wqptr)->task_ptr=NULL
/* initialize wait_q to NULL task_ptr and no
* message waiting */
#define INIT_WAIT_Q(wqptr) (wqptr)->mesg_flg=0; \
(wqptr)->task_ptr=NULL
/* End of File */