home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / mntinc25.zoo / mintbind.h < prev    next >
C/C++ Source or Header  |  1992-10-18  |  11KB  |  325 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. int Pwaitpid(int pid, int flag, long *rusage);    /* GEMDOS 0x13a */
  79.  
  80. #else /* !__TURBOC__ */
  81.  
  82. #ifdef __GNUC_INLINE__
  83. #define trap_1_wwlw(n, a, b, c)                        \
  84. ({                                    \
  85.     register long retvalue __asm__("d0");                \
  86.     short _a = (short)(a);                        \
  87.     long  _b = (long) (b);                        \
  88.     short  _c = (short) (c);                    \
  89.                                         \
  90.     __asm__ volatile                        \
  91.     ("\
  92.         movw    %4,sp@-; \
  93.         movl    %3,sp@-; \
  94.         movw    %2,sp@-; \
  95.         movw    %1,sp@-; \
  96.         trap    #1;    \
  97.         lea    sp@(10),sp " \
  98.     : "=r"(retvalue)            /* outputs */        \
  99.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  100.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  101.     );                                \
  102.     retvalue;                            \
  103. })
  104.  
  105. #define trap_1_wwww(n, a, b, c)                        \
  106. ({                                    \
  107.     register long retvalue __asm__("d0");                \
  108.     short _a = (short)(a);                        \
  109.     short  _b = (short)(b);                        \
  110.     short  _c = (short)(c);                        \
  111.                                         \
  112.     __asm__ volatile                        \
  113.     ("\
  114.         movw    %4,sp@-; \
  115.         movw    %3,sp@-; \
  116.         movw    %2,sp@-; \
  117.         movw    %1,sp@-; \
  118.         trap    #1;    \
  119.         addqw    #8,sp "                    \
  120.     : "=r"(retvalue)            /* outputs */        \
  121.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  122.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  123.     );                                \
  124.     retvalue;                            \
  125. })
  126.  
  127. #define trap_1_wwwl(n, a, b, c)                        \
  128. ({                                    \
  129.     register long retvalue __asm__("d0");                \
  130.     short _a = (short)(a);                        \
  131.     short  _b = (short)(b);                        \
  132.     long  _c = (long)(c);                        \
  133.                                         \
  134.     __asm__ volatile                        \
  135.     ("\
  136.         movl    %4,sp@-; \
  137.         movw    %3,sp@-; \
  138.         movw    %2,sp@-; \
  139.         movw    %1,sp@-; \
  140.         trap    #1;    \
  141.         lea     sp@(10),sp "                    \
  142.     : "=r"(retvalue)            /* outputs */        \
  143.     : "g"(n), "r"(_a), "r"(_b), "r"(_c)     /* inputs  */        \
  144.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  145.     );                                \
  146.     retvalue;                            \
  147. })
  148.  
  149. #define trap_1_wwl(n, a, b)                        \
  150. ({                                    \
  151.     register long retvalue __asm__("d0");                \
  152.     short _a = (short)(a);                        \
  153.     long  _b = (long) (b);                        \
  154.                                         \
  155.     __asm__ volatile                        \
  156.     ("\
  157.         movl    %3,sp@-; \
  158.         movw    %2,sp@-; \
  159.         movw    %1,sp@-; \
  160.         trap    #1;    \
  161.         addqw    #8,sp "                    \
  162.     : "=r"(retvalue)            /* outputs */        \
  163.     : "g"(n), "r"(_a), "r"(_b)        /* inputs  */        \
  164.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */    \
  165.     );                                \
  166.     retvalue;                            \
  167. })
  168.  
  169. #else
  170.  
  171. #ifdef __GNUC__
  172. # ifndef __MSHORT__
  173. #  define __LONG_TRAPS__
  174. # endif
  175. #endif
  176.  
  177. #ifndef __LONG_TRAPS__
  178. # ifndef trap_1_w
  179. #  define trap_1_w(n)        gemdos(n)
  180. #  define trap_1_wl(n,a)        gemdos(n, (long)(a))
  181. #  define trap_1_wll(n, a, b)    gemdos(n, (long)(a), (long)(b))
  182. #  define trap_1_ww(n,a)        gemdos(n, a)
  183. #  define trap_1_www(n,a,b)    gemdos(n, a, b)
  184. #  define trap_1_wwlll(n,a,b,c,d) gemdos(n, a, (long)(b), (long)(c), (long)(d))
  185. #  define trap_1_wwll(n, a, b, c)    gemdos(n, a, (long)(b), (long)(c))
  186. #  define trap_1_wlw(n, a, b)    gemdos(n, (long)(a), b)
  187. #  define trap_1_wlww(n, a, b, c)    gemdos(n, (long)(a), b, c)
  188. #  define trap_13_w(n)        bios(n)
  189. #  define trap_14_w(n)        xbios(n)
  190. # endif
  191. # define trap_1_wwlw(n,a,b,c)    gemdos(n, a, (long)(b), c)
  192. # define trap_1_wwww(n,a,b,c)    gemdos(n, a, b, c)
  193. # define trap_1_wwl(n, a, b)    gemdos(n, a, (long)(b))
  194. # define trap_1_wwwl(n,a,b,c)    gemdos(n, a, b, (long)(c))
  195. #endif /* __LONG_TRAPS__ */
  196.  
  197. #endif /* __GNUC_INLINE__ */
  198.  
  199. #define    Syield()                        \
  200.         (int)trap_1_w(0xff)
  201. #define Fpipe(ptr)                        \
  202.         (int)trap_1_wl(0x100, (long)(ptr))
  203. #define Fcntl(f, arg, cmd)                    \
  204.         trap_1_wwlw(0x104, (short)(f), (long)(arg), (short)(cmd))
  205. #define Finstat(f)                        \
  206.         trap_1_ww(0x105, (short)(f))
  207. #define Foutstat(f)                        \
  208.         trap_1_ww(0x106, (short)(f))
  209. #define Fgetchar(f, mode)                    \
  210.         trap_1_www(0x107, (short)(f), (short)(mode))
  211. #define Fputchar(f, ch, mode)                    \
  212.         trap_1_wwlw(0x108, (short)(f), (long)(ch), (short)(mode))
  213.  
  214. #define Pwait()                            \
  215.         trap_1_w(0x109)
  216. #define Pnice(delta)                        \
  217.         (int)trap_1_ww(0x10a, (short)(delta))
  218. #define Pgetpid()                        \
  219.         (int)trap_1_w(0x10b)
  220. #define Pgetppid()                        \
  221.         (int)trap_1_w(0x10c)
  222. #define Pgetpgrp()                        \
  223.         (int)trap_1_w(0x10d)
  224. #define Psetpgrp(pid, grp)                    \
  225.         (int)trap_1_www(0x10e, (short)(pid), (short)(grp))
  226. #define Pgetuid()                        \
  227.         (int)trap_1_w(0x10f)
  228. #define Psetuid(id)                        \
  229.         (int)trap_1_ww(0x110, (short)(id))
  230. #define Pkill(pid, sig)                        \
  231.         (int)trap_1_www(0x111, (short)(pid), (short)(sig))
  232. #define Psignal(sig, handler)                    \
  233.         trap_1_wwl(0x112, (short)(sig), (long)(handler))
  234. #define Pvfork()                        \
  235.         trap_1_w(0x113)
  236. #define Pgetgid()                        \
  237.         (int)trap_1_w(0x114)
  238. #define Psetgid(id)                        \
  239.         (int)trap_1_ww(0x115, (short)(id))
  240. #define Psigblock(mask)                        \
  241.         trap_1_wl(0x116, (unsigned long)(mask))
  242. #define Psigsetmask(mask)                    \
  243.         trap_1_wl(0x117, (unsigned long)(mask))
  244. #define Pusrval(arg)                        \
  245.         trap_1_wl(0x118, (long)(arg))
  246. #define Pdomain(arg)                        \
  247.         (int)trap_1_ww(0x119, (short)(arg))
  248. #define Psigreturn()                        \
  249.         (void)trap_1_w(0x11a)
  250. #define Pfork()                            \
  251.         trap_1_w(0x11b)
  252. #define Pwait3(flag, rusage)                    \
  253.         trap_1_wwl(0x11c, (short)(flag), (long)(rusage))
  254. #define Fselect(time, rfd, wfd, xfd)                \
  255.         (int)trap_1_wwlll(0x11d, (unsigned short)(time), (long)(rfd), \
  256.                 (long)(wfd), (long)(xfd))
  257. #define Prusage(rsp)                        \
  258.         (int)trap_1_wl(0x11e, (long)(rsp))
  259. #define Psetlimit(i, val)                    \
  260.         trap_1_wwl(0x11f, (short)(i), (long)(val))
  261.  
  262. #define Talarm(sec)                        \
  263.         trap_1_wl(0x120, (long)(sec))
  264. #define Pause()                            \
  265.         (void)trap_1_w(0x121)
  266. #define Sysconf(n)                        \
  267.         trap_1_ww(0x122, (short)(n))
  268. #define Psigpending()                        \
  269.         trap_1_w(0x123)
  270. #define Dpathconf(name, which)                    \
  271.         trap_1_wlw(0x124, (long)(name), (short)(which))
  272.  
  273. #define Pmsg(mode, mbox, msg)                    \
  274.         trap_1_wwll(0x125, (short)(mode), (long)(mbox), (long)(msg))
  275. #define Fmidipipe(pid, in, out)                    \
  276.         trap_1_wwww(0x126, (short)(pid), (short)(in),(short)(out))
  277. #define Prenice(pid, delta)                    \
  278.         (int)trap_1_www(0x127, (short)(pid), (short)(delta))
  279. #define Dopendir(name, flag)                    \
  280.         trap_1_wlw(0x128, (long)(name), (short)(flag))
  281. #define Dreaddir(len, handle, buf)                \
  282.         trap_1_wwll(0x129, (short)(len), (long)(handle), (long)(buf))
  283. #define Drewinddir(handle)                    \
  284.         trap_1_wl(0x12a, (long)(handle))
  285. #define Dclosedir(handle)                    \
  286.         trap_1_wl(0x12b, (long)(handle))
  287. #define Fxattr(flag, name, buf)                    \
  288.         trap_1_wwll(0x12c, (short)(flag), (long)(name), (long)(buf))
  289. #define Flink(old, new)                        \
  290.         trap_1_wll(0x12d, (long)(old), (long)(new))
  291. #define Fsymlink(old, new)                    \
  292.         trap_1_wll(0x12e, (long)(old), (long)(new))
  293. #define Freadlink(siz, buf, linknm)                \
  294.         trap_1_wwll(0x12f, (short)(siz), (long)(buf), (long)(linknm))
  295. #define Dcntl(cmd, name, arg)                    \
  296.         trap_1_wwll(0x130, (short)(cmd), (long)(name), (long)(arg))
  297. #define Fchown(name, uid, gid)                    \
  298.         trap_1_wlww(0x131, (long)(name), (short)(uid), (short)(gid))
  299. #define Fchmod(name, mode)                    \
  300.         trap_1_wlw(0x132, (long)(name), (short)(mode))
  301. #define Pumask(mask)                        \
  302.         (int)trap_1_ww(0x133, (short)(mask))
  303. #define Psemaphore(mode, id, tmout)                \
  304.         trap_1_wwll(0x134, (short)(mode), (long)(id), (long)(tmout))
  305. #define Dlock(mode, drive)                    \
  306.         (int)trap_1_www(0x135, (short)(mode), (short)(drive))
  307. #define Psigpause(mask)                        \
  308.         (void)trap_1_wl(0x136, (unsigned long)(mask))
  309. #define Psigaction(sig, act, oact)                    \
  310.         trap_1_wwll(0x137, (short)(sig), (long)(act), (long)(oact))
  311. #define Pgeteuid()                        \
  312.         (int)trap_1_w(0x138)
  313. #define Pgetegid()                        \
  314.         (int)trap_1_w(0x139)
  315. #define Pwaitpid(pid,flag, rusage)                \
  316.         trap_1_wwwl(0x13a, (short)(pid), (short)(flag), (long)(rusage))
  317.  
  318. #endif /* __TURBOC__ */
  319.  
  320. #ifdef __cplusplus
  321. }
  322. #endif
  323.  
  324. #endif /* _MINTBIND_H */
  325.