home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / GNU_C++ / LIB / MTLB49CF.LZH / include / mintbind.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-05  |  22.0 KB  |  629 lines

  1. #ifndef _MINTBIND_H
  2. #define _MINTBIND_H
  3.  
  4. #ifndef _OSBIND_H
  5. #include <osbind.h>
  6. #endif
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #ifdef __TURBOC__
  13.  
  14. /* we supply a library of bindings for TurboC / PureC */
  15.  
  16. int Syield( void );                /* GEMDOS 0xff */
  17. int Fpipe( short *ptr );            /* GEMDOS 0x100 */
  18. long Fcntl( int f, long arg, int cmd);        /* GEMDOS 0x104 */
  19. #define Fcntl(f, arg, cmd) Fcntl(f, (long)(arg), cmd)
  20. long Finstat( int f );                /* GEMDOS 0x105 */
  21. long Foutstat( int f );                /* GEMDOS 0x106 */
  22. long Fgetchar(int f, int mode);            /* GEMDOS 0x107 */
  23. long Fputchar( int f, long c, int mode );     /* GEMDOS 0x108 */
  24. long Pwait( void );                /* GEMDOS 0x109 */
  25. int Pnice( int delta );                /* GEMDOS 0x10a */
  26. int Pgetpid( void );                /* GEMDOS 0x10b */
  27. int Pgetppid( void );                /* GEMDOS 0x10c */
  28. int Pgetpgrp( void );                /* GEMDOS 0x10d */
  29. int Psetpgrp(int pid, int newgrp);        /* GEMDOS 0x10e */
  30. int Pgetuid( void );                /* GEMDOS 0x10f */
  31. int Psetuid( int id );                /* GEMDOS 0x110 */
  32. int Pkill( int pid, int sig );            /* GEMDOS 0x111 */
  33. long Psignal(int sig, long handler);        /* GEMDOS 0x112 */
  34. long Pvfork( void );                /* GEMDOS 0x113 */
  35. int Pgetgid( void );                /* GEMDOS 0x114 */
  36. int Psetgid(int id);                /* GEMDOS 0x115 */
  37. long Psigblock(unsigned long mask);        /* GEMDOS 0x116 */
  38. long Psigsetmask(unsigned long mask);        /* GEMDOS 0x117 */
  39. long Pusrval(long arg);                /* GEMDOS 0x118 */
  40. int Pdomain(int newdom);            /* GEMDOS 0x119 */
  41. void Psigreturn( void );            /* GEMDOS 0x11a */
  42. long Pfork( void );                /* GEMDOS 0x11b */
  43. long Pwait3(int flag, long *rusage);        /* GEMDOS 0x11c */
  44. int Fselect(unsigned int timeout, long *rfds, long *wfds, long *xfds); /* GEMDOS 0x11d */
  45. int Prusage( long r[8] );            /* GEMDOS 0x11e */
  46. long Psetlimit(int lim, long value);        /* GEMDOS 0x11f */
  47. long Talarm( long secs );            /* GEMDOS 0x120 */
  48. void Pause( void );                /* GEMDOS 0x121 */
  49. long Sysconf( int n );                /* GEMDOS 0x122 */
  50. long Psigpending( void );            /* GEMDOS 0x123 */
  51. long Dpathconf( const char *name, int n );    /* GEMDOS 0x124 */
  52. long Pmsg( int mode, long mbox, void *msg );     /* GEMDOS 0x125 */
  53. long Fmidipipe( int pid, int in, int out );    /* GEMDOS 0x126 */
  54. int Prenice( int pid, int delta );        /* GEMDOS 0x127 */
  55. long Dopendir( const char *name, int flag );    /* GEMDOS 0x128 */
  56. long Dreaddir( int buflen, long dir, char *buf); /*GEMDOS 0x129 */
  57. #define Dreaddir(buflen, dir, buf) Dreaddir(buflen, (long)(dir), buf)
  58. long Drewinddir( long dir );            /* GEMDOS 0x12a */
  59. #define Drewinddir(dir) Drewinddir((long)(dir))
  60. long Dclosedir( long dir );            /* GEMDOS 0x12b */
  61. #define Dclosedir(dir) Dclosedir((long)(dir))
  62. long Fxattr( int flag, char *name, void *buf );    /* GEMDOS 0x12c */
  63. long Flink( char *oldname, char *newname );    /* GEMDOS 0x12d */
  64. long Fsymlink( char *oldname, char *newname );    /* GEMDOS 0x12e */
  65. long Freadlink( int siz, char *buf, char *name); /*GEMDOS 0x12f */
  66. long Dcntl( int cmd, char *name, long arg );    /* GEMDOS 0x130 */
  67. long Fchown( char *name, int uid, int gid);    /* GEMDOS 0x131 */
  68. long Fchmod( char *name, int mode );        /* GEMDOS 0x132 */
  69. int Pumask( int mask );                /* GEMDOS 0x133 */
  70. long Psemaphore(int mode, long id, long timeout); /* GEMDOS 0x134 */
  71. int Dlock( int mode, int drive );        /* GEMDOS 0x135 */
  72. void Psigpause( unsigned long mask);        /* GEMDOS 0x136 */
  73. long Psigaction(int sig, long act, long oact);    /* GEMDOS 0x137 */
  74. #define Psigaction(sig, act, oact) \
  75.     Psigaction(sig, (long)(act), (long)(oact))
  76. int Pgeteuid( void );                /* GEMDOS 0x138 */
  77. int Pgetegid( void );                /* GEMDOS 0x139 */
  78. long Pwaitpid(int pid, int flag, long *rusage);    /* GEMDOS 0x13a */
  79. long Dgetcwd(char *path, int drv, int size);    /* GEMDOS 0x13b */
  80. long Salert(char *msg);                /* GEMDOS 0x13c */
  81.  
  82. /* The following are not yet official... */
  83. long Tmalarm( long secs );            /* GEMDOS 0x13d */
  84. long Psigintr( short vec, short sig);        /* GEMDOS 0x13e */
  85. long Suptime( long *uptime, long *avenrun);        /* GEMDOS 0x13f */
  86. long Dxreaddir( short len, long handle, char * buf, long xattr, long *xret );    /* GEMDOS 0x142 */
  87. short Dseteuid( short id );            /* GEMDOS 0x143 */
  88. short Dsetegid( short id );            /* GEMDOS 0x144 */
  89. short Dsetauid( short id );            /* GEMDOS 0x145 */
  90. short Dgetauid( short id );            /* GEMDOS 0x146 */
  91. long Pgetgroups( short gidsetlen, _GID_T *gidset );    /* GEMDOS 0x147 */
  92. long Psetgroups( short gidsetlen, _GID_T *gidset );    /* GEMDOS 0x148 */
  93. long Tsetitimer( short which, long *interval, long *value, long *ointerval, long *ovalue );    /* GEMDOS 0x149 */
  94. short Psetreuid( short rid, short eid );    /* GEMDOS 0x14e */
  95. short Psetregid( short rid, short eid );    /* GEMDOS 0x14f */
  96. long Sync( void );                /* GEMDOS 0x150 */
  97. void Shutdown( long restart );            /* GEMDOS 0x151 */
  98. char *Dreadlabel( char *path, char *label, short maxlen );        /* GEMDOS 0x152 */
  99. char *Dwritelabel( char *path, char *label);        /* GEMDOS 0x153 */
  100. long Ssystem(short mode, long arg1, long arg2);    /* GEMDOS 0x154 */
  101. #define Ssystem(mode, arg1, arg2) \
  102.    Ssystem(mode, (long)(arg1), (long)(arg2))
  103. long Tgettimeofday(long tvp, long tzp);            /* GEMDOS 0x155 */
  104. #define Tgettimeofday(tvp, tzp) \
  105.    Tgettimeofday((long)tvp, (long)tzp)
  106.  
  107.  
  108. #else /* !__TURBOC__ */
  109.  
  110. #ifdef __LATTICE__
  111.  
  112. void _vmv(int);
  113. short _smv(int);
  114. int _imv(int);
  115. long _lmv(int);
  116.  
  117. int _im8(int,long[8]);
  118. void _vml(int,long);
  119. short _sms(int,int);
  120. short _smr(int,short *);
  121. long _lms(int,int);
  122. long _lml(int,long);
  123. long _lmu(int,unsigned long);
  124. long _lmp(int,void *);
  125. long _lmC(int,const char *);
  126.  
  127. void _vmls(int,long,int);
  128. short _smss(int,int,int);
  129. short _smsl(int,int,long);
  130. short _smls(int,long,int);
  131.  
  132. long _lmss(int,int,int);
  133. long _lmsl(int,int,long);
  134. long _lmsp(int,int,void *);
  135. long _lmps(int,void *,int);
  136. long _lmCs(int,const char *,short);
  137. long _lmpp(int,void *,void *);
  138. long _lmCC(int,const char *,const char *);
  139.  
  140. short _smsls(int,int,long,int);
  141. int _imssq(int,int,int,long *);
  142. long _lmsss(int,int,int,int);
  143. long _lmsls(int,int,long,int);
  144. long _lmsll(int,int,int,long);
  145. long _lmslp(int,int,long,void *);
  146. long _lmspl(int,int,void *,long);
  147. long _lmsCl(int,int,const char *,long);
  148. long _lmspp(int,int,void *,void *);
  149. long _lmspC(int,int,void *,const char *);
  150. long _lmlss(int,long,int,int);
  151. long _lmCss(int,const char *,int,int);
  152. long _lmcss(int,char *,int,int);
  153. short _smsqqq(int,int,long *,long *,long *);
  154.  
  155. #pragma inline _vmv((short))    {register d2,a2; "4e41";}
  156. #pragma inline d0=_smv((short))    {register d2,a2; "4e41";}
  157. #pragma inline d0=_imv((short))    {register d2,a2; "4e41";}
  158. #pragma inline d0=_lmv((short))    {register d2,a2; "4e41";}
  159.  
  160. #pragma inline d0=_im8((short),)    {register d2,a2; "4e41";}
  161. #pragma inline _vml((short),)    {register d2,a2; "4e41";}
  162. #pragma inline d0=_sms((short),(short))    {register d2,a2; "4e41";}
  163. #pragma inline d0=_smr((short),)    {register d2,a2; "4e41";}
  164. #pragma inline d0=_lms((short),(short))    {register d2,a2; "4e41";}
  165. #pragma inline d0=_lml((short),)    {register d2,a2; "4e41";}
  166. #pragma inline d0=_lmu((short),)    {register d2,a2; "4e41";}
  167. #pragma inline d0=_lmp((short),)    {register d2,a2; "4e41";}
  168. #pragma inline d0=_lmC((short),)    {register d2,a2; "4e41";}
  169.  
  170. #pragma inline _vmls((short),,(short))    {register d2,a2; "4e41";}
  171. #pragma inline d0=_smss((short),(short),(short))    {register d2,a2; "4e41";}
  172. #pragma inline d0=_smsl((short),(short),)    {register d2,a2; "4e41";}
  173. #pragma inline d0=_smls((short),,(short))    {register d2,a2; "4e41";}
  174. #pragma inline d0=_lmss((short),(short),(short))    {register d2,a2; "4e41";}
  175. #pragma inline d0=_lmsl((short),(short),)    {register d2,a2; "4e41";}
  176. #pragma inline d0=_lmsp((short),(short),)    {register d2,a2; "4e41";}
  177. #pragma inline d0=_lmps((short),,(short))    {register d2,a2; "4e41";}
  178. #pragma inline d0=_lmCs((short),,(short))    {register d2,a2; "4e41";}
  179. #pragma inline d0=_lmpp((short),,)    {register d2,a2; "4e41";}
  180. #pragma inline d0=_lmCC((short),,)    {register d2,a2; "4e41";}
  181.  
  182. #pragma inline d0=_smsls((short),(short),,(short))    {register d2,a2; "4e41";}
  183. #pragma inline d0=_imssq((short),(short),(short),)    {register d2,a2; "4e41";}
  184. #pragma inline d0=_lmsss((short),(short),(short),(short))    {register d2,a2; "4e41";}
  185. #pragma inline d0=_lmsls((short),(short),,(short))    {register d2,a2; "4e41";}
  186. #pragma inline d0=_lmsll((short),(short),(short),)    {register d2,a2; "4e41";}
  187. #pragma inline d0=_lmlss((short),,(short),(short))    {register d2,a2; "4e41";}
  188. #pragma inline d0=_lmslp((short),(short),,)    {register d2,a2; "4e41";}
  189. #pragma inline d0=_lmspl((short),(short),,)    {register d2,a2; "4e41";}
  190. #pragma inline d0=_lmsCl((short),(short),,)    {register d2,a2; "4e41";}
  191. #pragma inline d0=_lmspp((short),(short),,)    {register d2,a2; "4e41";}
  192. #pragma inline d0=_lmspC((short),(short),,)    {register d2,a2; "4e41";}
  193. #pragma inline d0=_lmlss((short),,(short),(short))    {register d2,a2; "4e41";}
  194. #pragma inline d0=_lmCss((short),,(short),(short))    {register d2,a2; "4e41";}
  195. #pragma inline d0=_lmcss((short),,(short),(short))    {register d2,a2; "4e41";}
  196. #pragma inline d0=_smsqqq((short),(short),,,)    {register d2,a2; "4e41";}
  197.  
  198. #define Syield() _smv(0xff)
  199. #define Fpipe(a) _smr(0x100, a)
  200. #define Fcntl(a, b, c) _smsls(0x104, a, (long)b, c)
  201. #define Finstat(a) _lms(0x105, a)
  202. #define Foutstat(a) _lms(0x106, a)
  203. #define Fgetchar(a, b) _lmss(0x107, a, b)
  204. #define Fputchar(a, b, c) _lmsls(0x108, a, b, c)
  205. #define Pwait() _lmv(0x109)
  206. #define Pnice(a) _sms(0x10a, a)
  207. #define Pgetpid() _smv(0x10b)
  208. #define Pgetppid() _smv(0x10c)
  209. #define Pgetpgrp() _smv(0x10d)
  210. #define Psetpgrp(a, b) _smss(0x10e, a, b)
  211. #define Pgetuid() _smv(0x10f)
  212. #define Psetuid(a) _sms(0x110, a)
  213. #define Pkill(a, b) _smss(0x111, a, b)
  214. #define Psignal(a, b) _lmsl(0x112, a, b)
  215. #define Pvfork() _smv(0x113)
  216. #define Pgetgid() _smv(0x114)
  217. #define Psetgid(a) _sms(0x115, a)
  218. #define Psigblock(a) _lmu(0x116, a)
  219. #define Psigsetmask(a) _lmu(0x117, a)
  220. #define Pusrval(a) _lml(0x118, a)
  221. #define Pdomain(a) _sms(0x119, a)
  222. #define Psigreturn() _vmv(0x11a)
  223. #define Pfork() _lmv(0x11b)
  224. #define Pwait3(a, b) _lmsp(0x11c, a, b)
  225. #define Fselect(a, b, c, d) _smsqqq(0x11d, a, b, c, d)
  226. #define Prusage(a) _im8(0x11e, a)
  227. #define Psetlimit(a, b) _lmsl(0x11f, a, b)
  228. #define Talarm(a) _lml(0x120, a)
  229. #define Pause() _vmv(0x121)
  230. #define Sysconf(a) _lms(0x122, a)
  231. #define Psigpending() _lmv(0x123)
  232. #define Dpathconf(a, b) _lmCs(0x124, a, b)
  233. #define Pmsg(a, b, c) _lmslp(0x125, a, b, c)
  234. #define Fmidipipe(a, b, c) _lmsss(0x126, a, b, c)
  235. #define Prenice(a, b) _smss(0x127, a, b)
  236. #define Dopendir(a, b) _lmps(0x128, a, b)
  237. #define Dreaddir(a, b, c) _lmslp(0x129, a, b, c)
  238. #define Drewinddir(a) _lml(0x12a, a)
  239. #define Dclosedir(a) _lml(0x12b, a)
  240. #define Fxattr(a, b, c) _lmspp(0x12c, a, b, c)
  241. #define Flink(a, b) _lmCC(0x12d, a, b)
  242. #define Fsymlink(a, b) _lmCC(0x12e, a, b)
  243. #define Freadlink(a, b, c) _lmspC(0x12f, a, b, c)
  244. #define Dcntl(a, b, c) _lmsCl(0x130, a, b, (long)c)
  245. #define Fchown(a, b, c) _lmCss(0x131, a, b, c)
  246. #define Fchmod(a, b) _lmCs(0x132, a, b)
  247. #define Pumask(a) _sms(0x133, a)
  248. #define Psemaphore(a, b, c) _lmsll(0x134, a, b, c)
  249. #define Dlock(a, b) _smss(0x135, a, b)
  250. #define Psigpause(a) _vml(0x136,a)
  251. #define Psigaction(a, b, c) _lmsll(0x137, a, (long)b, (long)c)
  252. #define Pgeteuid() _imv(0x138)
  253. #define Pgetegid() _imv(0x139)
  254. #define Pwaitpid(a, b, c) _imssq(0x13a, a, b, c)
  255. #define Dgetcwd(a, b, c) _lmcss(0x13b, a, b, c)
  256. #define Salert(a) _lmC(0x13c, a)
  257.  
  258. #else /* !__LATTICE__ */
  259.  
  260. #ifdef __GNUC_INLINE__
  261.  
  262. /* see osbind.h for __extension__ and AND_MEMORY */
  263.  
  264. #define trap_1_wwlw(n, a, b, c)                        \
  265. __extension__                                \
  266. ({                                    \
  267.     register long retvalue __asm__("d0");                \
  268.     short _a = (short)(a);                        \
  269.     long  _b = (long) (b);                        \
  270.     short  _c = (short) (c);                    \
  271.                                         \
  272.     __asm__ volatile                        \
  273.     ("\
  274.         movw    %4,sp@-; \
  275.         movl    %3,sp@-; \
  276.         movw    %2,sp@-; \
  277.         movw    %1,sp@-; \
  278.         trap    #1;    \
  279.         lea    sp@(10),sp " \
  280.     : "=r"(retvalue)            /* outputs */        \
  281.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  282.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  283.       AND_MEMORY                            \
  284.     );                                \
  285.     retvalue;                            \
  286. })
  287.  
  288. #define trap_1_wwww(n, a, b, c)                        \
  289. __extension__                                \
  290. ({                                    \
  291.     register long retvalue __asm__("d0");                \
  292.     short _a = (short)(a);                        \
  293.     short  _b = (short)(b);                        \
  294.     short  _c = (short)(c);                        \
  295.                                         \
  296.     __asm__ volatile                        \
  297.     ("\
  298.         movw    %4,sp@-; \
  299.         movw    %3,sp@-; \
  300.         movw    %2,sp@-; \
  301.         movw    %1,sp@-; \
  302.         trap    #1;    \
  303.         addqw    #8,sp "                    \
  304.     : "=r"(retvalue)            /* outputs */        \
  305.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  306.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  307.       AND_MEMORY                            \
  308.     );                                \
  309.     retvalue;                            \
  310. })
  311.  
  312. #define trap_1_wwwl(n, a, b, c)                        \
  313. __extension__                                \
  314. ({                                    \
  315.     register long retvalue __asm__("d0");                \
  316.     short _a = (short)(a);                        \
  317.     short  _b = (short)(b);                        \
  318.     long  _c = (long)(c);                        \
  319.                                         \
  320.     __asm__ volatile                        \
  321.     ("\
  322.         movl    %4,sp@-; \
  323.         movw    %3,sp@-; \
  324.         movw    %2,sp@-; \
  325.         movw    %1,sp@-; \
  326.         trap    #1;    \
  327.         lea     sp@(10),sp "                    \
  328.     : "=r"(retvalue)            /* outputs */        \
  329.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  330.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  331.       AND_MEMORY                            \
  332.     );                                \
  333.     retvalue;                            \
  334. })
  335.  
  336. #define trap_1_wwl(n, a, b)                        \
  337. __extension__                                \
  338. ({                                    \
  339.     register long retvalue __asm__("d0");                \
  340.     short _a = (short)(a);                        \
  341.     long  _b = (long) (b);                        \
  342.                                         \
  343.     __asm__ volatile                        \
  344.     ("\
  345.         movl    %3,sp@-; \
  346.         movw    %2,sp@-; \
  347.         movw    %1,sp@-; \
  348.         trap    #1;    \
  349.         addqw    #8,sp "                    \
  350.     : "=r"(retvalue)            /* outputs */        \
  351.     : "g"(n), "r"(_a), "r"(_b)        /* inputs  */        \
  352.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  353.       AND_MEMORY                            \
  354.     );                                \
  355.     retvalue;                            \
  356. })
  357.  
  358. #if __GNUC__ > 1
  359. #define trap_1_wwllll(n, a, b, c, d, e)                    \
  360. __extension__                                \
  361. ({                                    \
  362.     register long retvalue __asm__("d0");                \
  363.     short _a = (short)(a);                        \
  364.     long  _b = (long) (b);                        \
  365.     long  _c = (long) (c);                        \
  366.     long  _d = (long) (d);                        \
  367.     long  _e = (long) (e);                        \
  368.                                         \
  369.     __asm__ volatile                        \
  370.     ("\
  371.         movl    %6,sp@-; \
  372.         movl    %5,sp@-; \
  373.         movl    %4,sp@-; \
  374.         movl    %3,sp@-; \
  375.         movw    %2,sp@-; \
  376.         movw    %1,sp@-; \
  377.         trap    #1;    \
  378.         lea     sp@(20),sp "                    \
  379.     : "=r"(retvalue)            /* outputs */        \
  380.     : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d), "r"(_e) /* inputs  */ \
  381.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  382.       AND_MEMORY                            \
  383.     );                                \
  384.     retvalue;                            \
  385. })
  386. #else
  387. #define trap_1_wwllll(n, a, b, c, d, e)                    \
  388. ({                                    \
  389.     register long retvalue __asm__("d0");                \
  390.     short _a = (short)(a);            \
  391.     long  _b = (long) (b);            \
  392.     long  _c = (long) (c);            \
  393.     long  _d = (long) (d);            \
  394.     long  _e = (long) (e);            \
  395.                                         \
  396.     __asm__ volatile                        \
  397.     ("\
  398.         movl    %4,sp@-; \
  399.         movl    %3,sp@-; \
  400.         movl    %2,sp@-; \
  401.         movl    %1,sp@-; \
  402.         movw    %0,sp@-    "                    \
  403.     :                          /* outputs */    \
  404.     : "r"(_a), "r"(_b), "r"(_c), "r"(_d), "r"(_e) /* inputs  */    \
  405.     );                                \
  406.                                     \
  407.     __asm__ volatile                        \
  408.     ("\
  409.         movw    %1,sp@-; \
  410.         trap    #1;    \
  411.         lea     sp@(20),sp "                    \
  412.     : "=r"(retvalue)            /* outputs */        \
  413.     : "g"(n)                /* inputs  */        \
  414.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  415.     );                                \
  416.     retvalue;                            \
  417. })
  418. #endif
  419.  
  420. #else
  421.  
  422. #ifdef __GNUC__
  423. # ifndef __MSHORT__
  424. #  define __LONG_TRAPS__
  425. # endif
  426. #endif
  427.  
  428. #ifndef __LONG_TRAPS__
  429. # ifndef trap_1_w
  430. #  define trap_1_w(n)        gemdos(n)
  431. #  define trap_1_wl(n,a)        gemdos(n, (long)(a))
  432. #  define trap_1_wll(n, a, b)    gemdos(n, (long)(a), (long)(b))
  433. #  define trap_1_ww(n,a)        gemdos(n, a)
  434. #  define trap_1_www(n,a,b)    gemdos(n, a, b)
  435. #  define trap_1_wwlll(n,a,b,c,d) gemdos(n, a, (long)(b), (long)(c), (long)(d))
  436. #  define trap_1_wwll(n, a, b, c)    gemdos(n, a, (long)(b), (long)(c))
  437. #  define trap_1_wlw(n, a, b)    gemdos(n, (long)(a), b)
  438. #  define trap_1_wlww(n, a, b, c)    gemdos(n, (long)(a), b, c)
  439. #  define trap_13_w(n)        bios(n)
  440. #  define trap_14_w(n)        xbios(n)
  441. # endif
  442. # define trap_1_wwlw(n,a,b,c)    gemdos(n, a, (long)(b), c)
  443. # define trap_1_wwww(n,a,b,c)    gemdos(n, a, b, c)
  444. # define trap_1_wwl(n, a, b)    gemdos(n, a, (long)(b))
  445. # define trap_1_wwwl(n,a,b,c)    gemdos(n, a, b, (long)(c))
  446. # define trap_1_wwllll(n, a, b, c, d, e) \
  447.         gemdos(n, a, (long)(b), (long)(c), (long)(d), (long)(e))
  448. #endif /* __LONG_TRAPS__ */
  449.  
  450. #endif /* __GNUC_INLINE__ */
  451.  
  452. #define    Syield()                        \
  453.         (int)trap_1_w(0xff)
  454. #define Fpipe(ptr)                        \
  455.         (int)trap_1_wl(0x100, (long)(ptr))
  456. #define Fcntl(f, arg, cmd)                    \
  457.         trap_1_wwlw(0x104, (short)(f), (long)(arg), (short)(cmd))
  458. #define Finstat(f)                        \
  459.         trap_1_ww(0x105, (short)(f))
  460. #define Foutstat(f)                        \
  461.         trap_1_ww(0x106, (short)(f))
  462. #define Fgetchar(f, mode)                    \
  463.         trap_1_www(0x107, (short)(f), (short)(mode))
  464. #define Fputchar(f, ch, mode)                    \
  465.         trap_1_wwlw(0x108, (short)(f), (long)(ch), (short)(mode))
  466.  
  467. #define Pwait()                            \
  468.         trap_1_w(0x109)
  469. #define Pnice(delta)                        \
  470.         (int)trap_1_ww(0x10a, (short)(delta))
  471. #define Pgetpid()                        \
  472.         (int)trap_1_w(0x10b)
  473. #define Pgetppid()                        \
  474.         (int)trap_1_w(0x10c)
  475. #define Pgetpgrp()                        \
  476.         (int)trap_1_w(0x10d)
  477. #define Psetpgrp(pid, grp)                    \
  478.         (int)trap_1_www(0x10e, (short)(pid), (short)(grp))
  479. #define Pgetuid()                        \
  480.         (int)trap_1_w(0x10f)
  481. #define Psetuid(id)                        \
  482.         (int)trap_1_ww(0x110, (short)(id))
  483. #define Pkill(pid, sig)                        \
  484.         (int)trap_1_www(0x111, (short)(pid), (short)(sig))
  485. #define Psignal(sig, handler)                    \
  486.         trap_1_wwl(0x112, (short)(sig), (long)(handler))
  487. #define Pvfork()                        \
  488.         trap_1_w(0x113)
  489. #define Pgetgid()                        \
  490.         (int)trap_1_w(0x114)
  491. #define Psetgid(id)                        \
  492.         (int)trap_1_ww(0x115, (short)(id))
  493. #define Psigblock(mask)                        \
  494.         trap_1_wl(0x116, (unsigned long)(mask))
  495. #define Psigsetmask(mask)                    \
  496.         trap_1_wl(0x117, (unsigned long)(mask))
  497. #define Pusrval(arg)                        \
  498.         trap_1_wl(0x118, (long)(arg))
  499. #define Pdomain(arg)                        \
  500.         (int)trap_1_ww(0x119, (short)(arg))
  501. #define Psigreturn()                        \
  502.         (void)trap_1_w(0x11a)
  503. #define Pfork()                            \
  504.         trap_1_w(0x11b)
  505. #define Pwait3(flag, rusage)                    \
  506.         trap_1_wwl(0x11c, (short)(flag), (long)(rusage))
  507. #define Fselect(time, rfd, wfd, xfd)                \
  508.         (int)trap_1_wwlll(0x11d, (unsigned short)(time), (long)(rfd), \
  509.                 (long)(wfd), (long)(xfd))
  510. #define Prusage(rsp)                        \
  511.         (int)trap_1_wl(0x11e, (long)(rsp))
  512. #define Psetlimit(i, val)                    \
  513.         trap_1_wwl(0x11f, (short)(i), (long)(val))
  514.  
  515. #define Talarm(sec)                        \
  516.         trap_1_wl(0x120, (long)(sec))
  517. #define Pause()                            \
  518.         (void)trap_1_w(0x121)
  519. #define Sysconf(n)                        \
  520.         trap_1_ww(0x122, (short)(n))
  521. #define Psigpending()                        \
  522.         trap_1_w(0x123)
  523. #define Dpathconf(name, which)                    \
  524.         trap_1_wlw(0x124, (long)(name), (short)(which))
  525.  
  526. #define Pmsg(mode, mbox, msg)                    \
  527.         trap_1_wwll(0x125, (short)(mode), (long)(mbox), (long)(msg))
  528. #define Fmidipipe(pid, in, out)                    \
  529.         trap_1_wwww(0x126, (short)(pid), (short)(in),(short)(out))
  530. #define Prenice(pid, delta)                    \
  531.         (int)trap_1_www(0x127, (short)(pid), (short)(delta))
  532. #define Dopendir(name, flag)                    \
  533.         trap_1_wlw(0x128, (long)(name), (short)(flag))
  534. #define Dreaddir(len, handle, buf)                \
  535.         trap_1_wwll(0x129, (short)(len), (long)(handle), (long)(buf))
  536. #define Drewinddir(handle)                    \
  537.         trap_1_wl(0x12a, (long)(handle))
  538. #define Dclosedir(handle)                    \
  539.         trap_1_wl(0x12b, (long)(handle))
  540. #define Fxattr(flag, name, buf)                    \
  541.         trap_1_wwll(0x12c, (short)(flag), (long)(name), (long)(buf))
  542. #define Flink(old, new)                        \
  543.         trap_1_wll(0x12d, (long)(old), (long)(new))
  544. #define Fsymlink(old, new)                    \
  545.         trap_1_wll(0x12e, (long)(old), (long)(new))
  546. #define Freadlink(siz, buf, linknm)                \
  547.         trap_1_wwll(0x12f, (short)(siz), (long)(buf), (long)(linknm))
  548. #define Dcntl(cmd, name, arg)                    \
  549.         trap_1_wwll(0x130, (short)(cmd), (long)(name), (long)(arg))
  550. #define Fchown(name, uid, gid)                    \
  551.         trap_1_wlww(0x131, (long)(name), (short)(uid), (short)(gid))
  552. #define Fchmod(name, mode)                    \
  553.         trap_1_wlw(0x132, (long)(name), (short)(mode))
  554. #define Pumask(mask)                        \
  555.         (int)trap_1_ww(0x133, (short)(mask))
  556. #define Psemaphore(mode, id, tmout)                \
  557.         trap_1_wwll(0x134, (short)(mode), (long)(id), (long)(tmout))
  558. #define Dlock(mode, drive)                    \
  559.         (int)trap_1_www(0x135, (short)(mode), (short)(drive))
  560. #define Psigpause(mask)                        \
  561.         (void)trap_1_wl(0x136, (unsigned long)(mask))
  562. #define Psigaction(sig, act, oact)                    \
  563.         trap_1_wwll(0x137, (short)(sig), (long)(act), (long)(oact))
  564. #define Pgeteuid()                        \
  565.         (int)trap_1_w(0x138)
  566. #define Pgetegid()                        \
  567.         (int)trap_1_w(0x139)
  568. #define Pwaitpid(pid,flag, rusage)                \
  569.         trap_1_wwwl(0x13a, (short)(pid), (short)(flag), (long)(rusage))
  570. #define Dgetcwd(path, drv, size)                \
  571.         trap_1_wlww(0x13b, (long)(path), (short)(drv), (short)(size))
  572. #define Salert(msg)                        \
  573.         trap_1_wl(0x13c, (long)(msg))
  574. /* The following are not yet official... */
  575. #define Tmalarm(ms)                        \
  576.         trap_1_wl(0x13d, (long)(ms))
  577. #define Psigintr(vec, sig)                    \
  578.         trap_1_www(0x13e, (short)(vec), (short)(sig))
  579. #define Suptime(uptime, avenrun)                \
  580.         trap_1_wll(0x13f, (long)(uptime), (long)(avenrun))
  581. #define Dxreaddir(len, handle, buf, xattr, xret)        \
  582.         trap_1_wwllll(0x142, (short)(len), (long)(handle), \
  583.                   (long)(buf), (long)(xattr), (long)(xret))
  584. #define Pseteuid(id)                        \
  585.         (int)trap_1_ww(0x143, (short)(id))
  586. #define Psetegid(id)                        \
  587.         (int)trap_1_ww(0x144, (short)(id))
  588. #define Psetauid(id)                        \
  589.         (int)trap_1_ww(0x145, (short)(id))
  590. #define Pgetauid()                        \
  591.         (int)trap_1_w(0x146)
  592. #define Pgetgroups(gidsetlen, gidset)                \
  593.         trap_1_wwl(0x147, (short)(gidsetlen), (long)(gidset))
  594. #define Psetgroups(gidsetlen, gidset)                \
  595.         trap_1_wwl(0x148, (short)(gidsetlen), (long)(gidset))
  596. #define Tsetitimer(which, interval, value, ointerval, ovalue)    \
  597.         trap_1_wwllll(0x149, (short)(which), (long)(interval), \
  598.                   (long)(value), (long)(ointerval), (long)(ovalue))
  599. #define Psetreuid(rid, eid)   \
  600.         (int)trap_1_www(0x14e, (short)(rid), (short)(eid))
  601. #define Psetregid(rid, eid)   \
  602.         (int)trap_1_www(0x14f, (short)(rid), (short)(eid))
  603. #define Sync()   \
  604.         trap_1_w(0x150)
  605. #define Shutdown(restart)  \
  606.         trap_1_wl(0x151, (long)(restart))
  607. #define Dreadlabel(path, label, maxlen)  \
  608.         trap_1_wllw(0x152, (long)(path), (long)(label), (short)(maxlen))
  609. #define Dwritelabel(path, label)  \
  610.         trap_1_wll(0x153, (long)(path), (long)(label))
  611. #define Ssystem(mode, arg1, arg2) \
  612.         trap_1_wwll(0x154, (int)(mode), (long)(arg1), (long)(arg2))
  613. #define Tgettimeofday(tvp, tzp) \
  614.         trap_1_wll(0x155, (long)(tvp), (long)(tzp))
  615. #define Tsettimeofday(tvp, tzp) \
  616.         trap_1_wll(0x156, (long)(tvp), (long)(tzp))
  617. #define Tadjtime(delta, olddelta) \
  618.         trap_1_wll(0x157, (long)(delta), (long)(olddelta))
  619.  
  620. #endif /* __LATTICE__ */
  621. #endif /* __TURBOC__ */
  622.  
  623. #ifdef __cplusplus
  624. }
  625. #endif
  626.  
  627. #endif /* _MINTBIND_H */
  628.  
  629.