* rts.h: Update with missing code.

From-SVN: r22327
This commit is contained in:
Jeffrey A Law 1998-09-08 09:42:42 +00:00 committed by Jeff Law
parent e742fecc31
commit 9de92eb5d0
2 changed files with 103 additions and 0 deletions

View File

@ -1,3 +1,7 @@
Tue Sep 8 10:41:38 1998 Jeffrey A Law (law@cygnus.com)
* rts.h: Update with missing code.
Sun Sep 6 01:30:40 1998 Jeffrey A Law (law@cygnus.com)
* allgmem.c: Do not include config.h anymore.

View File

@ -43,10 +43,109 @@ typedef struct
unsigned char /*TaskingEnum*/ type;
} TaskingStruct;
/* how an INSTANCE is implemented */
typedef struct
{
short ptype;
short pcopy;
} INSTANCE;
/* interface to underlaying os */
typedef enum
{
wait_wait,
wait_buffer_send,
wait_buffer_receive,
wait_buffer_free,
wait_event_delay,
wait_event_free,
} Delay_Reason;
extern INSTANCE __whoami ();
extern void *__xmalloc_ ();
#define THIS __whoami()
/* for easier changing to something different,
i.e. allocate_memory */
#define MALLOC(ADDR,SIZE) ADDR = __xmalloc_(SIZE)
#define FREE(ADDR) free (ADDR)
/* definitions for EVENTS */
typedef struct EVENTQUEUE
{
struct EVENTQUEUE *forward; /* next in the list */
struct EVENTQUEUE **listhead; /* pointer to EVENT location */
int priority; /* prio for DELAY or DELAY CASE */
INSTANCE this; /* specify the instance is delayed */
struct EVENTQUEUE *startlist; /* start of the list */
struct EVENTQUEUE *chain; /* list of all events in an DELAY CASE */
int is_continued; /* indicates a continue action on that event */
INSTANCE who_continued; /* indicates who continued */
} Event_Queue;
typedef struct
{
Event_Queue **ev;
unsigned long maxqueuelength;
} Event_Descr;
/* definitions for BUFFERS */
struct BUFFERQUEUE;
typedef struct BUFFER_WAIT_QUEUE
{
struct BUFFER_WAIT_QUEUE *forward;
struct BUFFERQUEUE **bufferaddr;
INSTANCE this;
struct BUFFER_WAIT_QUEUE *startlist;
struct BUFFER_WAIT_QUEUE *chain;
int is_sent;
INSTANCE who_sent; /* instance which have
send a buffer */
unsigned long datalen;
void *dataptr;
} Buffer_Wait_Queue;
typedef struct BUFFER_SEND_QUEUE
{
struct BUFFER_SEND_QUEUE *forward;
int priority;
INSTANCE this;
int is_delayed;
unsigned long datalen;
void *dataptr;
} Buffer_Send_Queue;
typedef struct BUFFERQUEUE
{
Buffer_Wait_Queue *waitqueue;
unsigned long waitqueuelength;
Buffer_Send_Queue *sendqueue;
unsigned long sendqueuelength;
} Buffer_Queue;
typedef struct
{
Buffer_Queue **buf;
unsigned long maxqueuelength;
} Buffer_Descr;
/* descriptor for data */
typedef struct
{
void *ptr;
int length;
} Data_Descr;
/* time format runtime delivers */
typedef struct
{
unsigned long secs;
unsigned long nanosecs;
} RtsTime;
extern void __rtstime (RtsTime *t);
extern int __delay_this (Delay_Reason reason, RtsTime *t, char *file, int lineno);
extern void __continue_that (INSTANCE ins, int prio, char *file, int lineno);
#endif /* __rts_h_ */