home *** CD-ROM | disk | FTP | other *** search
- /* sys/syslib.h (c) Copyright 1990 H.Rogers */
-
- #ifndef __SYS_SYSLIB_H
- #define __SYS_SYSLIB_H
-
- #ifndef __SYS_OS_H
- #include "sys/os.h"
- #endif
-
- extern void __main(void); /* assembler initialization */
- extern void _main(void); /* C initialization */
-
- extern void _exit(int); /* C exit */
- extern void __exit(int); /* assembler exit */
-
-
- #define STAKSIZ 4096
-
- /* __break is initialised to __lomem & __stack to __himem - STAKSIZ;
- * __stack is extended downwards in 512 byte chunks by x$stack_overflow()
- * and __break is extended upwards by brk() and sbrk(). The sl
- * register is usually equal to __stack. Should x$stack_overflow()
- * attempt to extend __stack below __break then SIGSTAK is raised.
- * Should brk() or sbrk() be asked to extend __break above __stack
- * then they return with ENOMEM. */
-
- extern char *__cli; /* command line from OS_GetEnv */
-
- extern void *__base; /* BASE = Image$$RO$$Base */
- extern void *__lomem; /* LOMEM = Image$$RW$$Limit */
- extern void *__himem; /* HIMEM from OS_GetEnv */
-
- extern void *__break; /* end of address space */
- extern void *__stack; /* start of stack */
-
- extern unsigned int __time[2]; /* start time */
-
-
- /* OS_ChangeEnvironment is used to set up exception handlers. These
- * handlers use OS_CallBack to raise signals in the foreground process.
- * RTFM for more info. */
-
- /* struct handler contains all the information about an
- * OS_ChangeEnvironment handler */
-
- struct handler
- {
- void (*h)(void); /* address of handler (0 = default) */
- unsigned int r; /* r12/0 handler arg. (0 = default) */
- void *b; /* buffer pointer (0 = default) */
- };
-
- /* struct proc contains all the info. needed to restore
- * the RiscOS environment prior to a call to OS_Exit */
-
- struct proc
- {
- struct handler h[13]; /* handlers 0-12 */
- };
-
- extern struct proc __Cproc[1]; /* this C process */
- extern struct proc __Oproc[1]; /* the old (calling) process */
-
- extern os_error *__rdenv(int,struct handler *); /* OS_ChangeEnvironment */
- extern os_error *__wrenv(int,struct handler *); /* OS_ChangeEnvironment */
-
- /* The asterisked handlers do nothing; the others raise signals. */
-
- extern void __h_sigill(void); /* undefined instruction handler */
- extern void __h_sigbus(void); /* prefetch & data abort handler */
- extern void __h_sigsegv(void); /* address exception handler */
- extern void __h_sigfpe(void); /* FPE handler (other exception) */
-
- extern void __h_error(void); /* error handler */
- extern void __h_sigint(void); /* escape handler */
- extern void __h_event(void); /* * event handler */
-
- extern void __h_sigsys(void); /* * unused SWI handler */
-
- extern void __h_sigalrm(void); /* SIGALRM handler */
-
- extern void __h_cback(void); /* callback handler */
-
-
- extern unsigned int __cbreg[16]; /* callback handler register buffer */
-
- extern char *__h_errbuf; /* error handler buffer */
-
- #endif
-