diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-08 09:42:42 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-08 09:42:42 +0000 |
commit | 3b49c80311bb28e6d8079ae76b66d66df1bbc01d (patch) | |
tree | c9990930f146d6de61201528647d19a1aa982f3b /libchill | |
parent | ddcd6f3b487e461d0448d06b9964e6202d58c504 (diff) | |
download | gcc-3b49c80311bb28e6d8079ae76b66d66df1bbc01d.tar.gz |
* rts.h: Update with missing code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22327 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libchill')
-rw-r--r-- | libchill/ChangeLog | 4 | ||||
-rw-r--r-- | libchill/rts.h | 99 |
2 files changed, 103 insertions, 0 deletions
diff --git a/libchill/ChangeLog b/libchill/ChangeLog index e4db8db2fe7..b41b3a4e935 100644 --- a/libchill/ChangeLog +++ b/libchill/ChangeLog @@ -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. diff --git a/libchill/rts.h b/libchill/rts.h index 27019e7c04f..f4c21fa0b26 100644 --- a/libchill/rts.h +++ b/libchill/rts.h @@ -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_ */ |