home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixtools / unixlib / clib / sys / h / syslib < prev    next >
Encoding:
Text File  |  1992-07-21  |  2.8 KB  |  90 lines

  1. /* sys/syslib.h (c) Copyright 1990 H.Rogers */
  2.  
  3. #ifndef __SYS_SYSLIB_H
  4. #define __SYS_SYSLIB_H
  5.  
  6. #ifndef __SYS_OS_H
  7. #include "sys/os.h"
  8. #endif
  9.  
  10. extern void __main(void);    /* assembler initialization */
  11. extern void _main(void);    /* C initialization */
  12.  
  13. extern void _exit(int);     /* C exit */
  14. extern void __exit(int);    /* assembler exit */
  15.  
  16.  
  17. #define STAKSIZ 4096
  18.  
  19. /* __break is initialised to __lomem & __stack to __himem - STAKSIZ;
  20.  * __stack is extended downwards in 512 byte chunks by x$stack_overflow()
  21.  * and __break is extended upwards by brk() and sbrk(). The sl
  22.  * register is usually equal to __stack. Should x$stack_overflow()
  23.  * attempt to extend __stack below __break then SIGSTAK is raised.
  24.  * Should brk() or sbrk() be asked to extend __break above __stack
  25.  * then they return with ENOMEM. */
  26.  
  27. extern char *__cli;        /* command line from OS_GetEnv */
  28.  
  29. extern void *__base;        /* BASE = Image$$RO$$Base */
  30. extern void *__lomem;        /* LOMEM = Image$$RW$$Limit */
  31. extern void *__himem;        /* HIMEM from OS_GetEnv */
  32.  
  33. extern void *__break;        /* end of address space */
  34. extern void *__stack;        /* start of stack */
  35.  
  36. extern unsigned int __time[2];    /* start time */
  37.  
  38.  
  39. /* OS_ChangeEnvironment is used to set up exception handlers. These
  40.  * handlers use OS_CallBack to raise signals in the foreground process.
  41.  * RTFM for more info. */
  42.  
  43. /* struct handler contains all the information about an
  44.  * OS_ChangeEnvironment handler */
  45.  
  46. struct handler
  47.   {
  48.   void            (*h)(void);    /* address of handler (0 = default) */
  49.   unsigned int        r;        /* r12/0 handler arg. (0 = default) */
  50.   void            *b;        /* buffer pointer (0 = default) */
  51.   };
  52.  
  53. /* struct proc contains all the info. needed to restore
  54.  * the RiscOS environment prior to a call to OS_Exit */
  55.  
  56. struct proc
  57.   {
  58.   struct handler    h[13];        /* handlers 0-12 */
  59.   };
  60.  
  61. extern struct proc    __Cproc[1];    /* this C process */
  62. extern struct proc    __Oproc[1];    /* the old (calling) process */
  63.  
  64. extern os_error *__rdenv(int,struct handler *); /* OS_ChangeEnvironment */
  65. extern os_error *__wrenv(int,struct handler *); /* OS_ChangeEnvironment */
  66.  
  67. /* The asterisked handlers do nothing; the others raise signals. */
  68.  
  69. extern void __h_sigill(void);    /*   undefined instruction handler */
  70. extern void __h_sigbus(void);    /*   prefetch & data abort handler */
  71. extern void __h_sigsegv(void);    /*   address exception handler */
  72. extern void __h_sigfpe(void);    /*   FPE handler (other exception) */
  73.  
  74. extern void __h_error(void);    /*   error handler */
  75. extern void __h_sigint(void);    /*   escape handler */
  76. extern void __h_event(void);    /* * event handler */
  77.  
  78. extern void __h_sigsys(void);    /* * unused SWI handler */
  79.  
  80. extern void __h_sigalrm(void);    /*   SIGALRM handler */
  81.  
  82. extern void __h_cback(void);    /*   callback handler */
  83.  
  84.  
  85. extern unsigned int __cbreg[16];    /* callback handler register buffer */
  86.  
  87. extern char *__h_errbuf;        /* error handler buffer */
  88.  
  89. #endif
  90.