home *** CD-ROM | disk | FTP | other *** search
- /* Definitionen fuer "GEMDOS"-``Inline''-Betriebssystemaufrufe.
- *
- * Die Datei ist mit: #include "oscalls.m2h" noch vor dem eigentlichen
- * Programmcode (z.B. als letzte ``Importdatei'') in die M2-Datei einzuladen.
- * Die Datei kann sowohl im aktuellen Verzeichnis zusammen mit den M2-Dateien
- * stehen, als auch im Verzeichnis, in dem der Praeprozessor nach Include-
- * Dateien sucht; falls der GNU-Praeprozessor (gcc-cpp) benutzt wird, muss
- * hierfuer die Environmentvariable GNUINC gesetzt werden, z.B.:
- *
- * setenv GNUINC f:\usr\include\m2
- *
- * Die Argumente der Makros sollten nur einfache (nicht Teil eines RECORDs
- * oder eines ARRAYs), lokale (vor allem keine VAR-Parameter) Variablen sein.
- *
- * "GEMDOS": Es wird nur das Datenregister D0 fuer die Parameteruebergabe
- * benoetigt, das "GEMDOS" selbst veraendert die Register D0-D2 und A0-A2.
- */
-
- /* "GEMDOS"-Funktionsnummern */
-
- #define PTERM0 0
- #define CCONIN 1
- #define CCONOUT 2
- #define CAUXIN 3
- #define CAUXOUT 4
- #define CPRNOUT 5
- #define CRAWIO 6
- #define CRAWCIN 7
- #define CNECIN 8
- #define CCONWS 9
- #define CCONRS 10
- #define CCONIS 11
- #define DSETDRV 14
- #define CCONOS 16
- #define CPRNOS 17
- #define CAUXIS 18
- #define CAUXOS 19
- #define MADDALT 20
- #define DGETDRV 25
- #define FSETDTA 26
- #define SUPER 32
- #define TGETDATE 42
- #define TSETDATE 43
- #define TGETTIME 44
- #define TSETTIME 45
- #define FGETDTA 47
- #define SVERSION 48
- #define PTERMRES 49
- #define DFREE 54
- #define DCREATE 57
- #define DDELETE 58
- #define DSETPATH 59
- #define FCREATE 60
- #define FOPEN 61
- #define FCLOSE 62
- #define FREAD 63
- #define FWRITE 64
- #define FDELETE 65
- #define FSEEK 66
- #define FATTRIB 67
- #define MXALLOC 68
- #define FDUP 69
- #define FFORCE 70
- #define DGETPATH 71
- #define MALLOC 72
- #define MFREE 73
- #define MSHRINK 74
- #define PEXEC 75
- #define PTERM 76
- #define FSFIRST 78
- #define FSNEXT 79
- #define FRENAME 86
- #define FDATIME 87
- #define FLOCK 92
-
- #if MINT /* "MiNT-GEMDOS"-Erweiterungen (bis Version 0.99) */
- #define SYIELD 255
- #define FPIPE 256
- #define FCNTL 260
- #define FINSTAT 261
- #define FOUTSTAT 262
- #define FGETCHAR 263
- #define FPUTCHAR 264
- #define PWAIT 265
- #define PNICE 266
- #define PGETPID 267
- #define PGETPPID 268
- #define PGETPGRP 269
- #define PSETPGRP 270
- #define PGETUID 271
- #define PSETUID 272
- #define PKILL 273
- #define PSIGNAL 274
- #define PVFORK 275
- #define PGETGID 276
- #define PSETGID 277
- #define PSIGBLOCK 278
- #define PSIGSETMASK 279
- #define PUSRVAL 280
- #define PDOMAIN 281
- #define PSIGRETURN 282
- #define PFORK 283
- #define PWAIT3 284
- #define FSELECT 285
- #define PRUSAGE 286
- #define PSETLIMIT 287
- #define TALARM 288
- #define PAUSE 289
- #define SYSCONF 290
- #define PSIGPENDING 291
- #define DPATHCONF 292
- #define PMSG 293
- #define FMIDIPIPE 294
- #define PRENICE 295
- #define DOPENDIR 296
- #define DREADDIR 297
- #define DREWINDDIR 298
- #define DCLOSEDIR 299
- #define FXATTR 300
- #define FLINK 301
- #define FSYMLINK 302
- #define FREADLINK 303
- #define DCNTL 304
- #define FCHOWN 305
- #define FCHMOD 306
- #define PUMASK 307
- #define PSEMAPHORE 308
- #define DLOCK 309
- #define PSIGPAUSE 310
- #define PSIGACTION 311
- #define PGETEUID 312
- #define PGETEGID 313
- #define PWAITPID 314
- #define DGETCWD 315
- #define SALERT 316
- #endif /* MINT */
-
- /* "XBIOS" */
- #define SUPEXEC 38
- /* "BIOS" */
- #define SETEXC 5
-
-
- #define DTRAP 4E41H
- #define BTRAP 4E4DH
- #define XTRAP 4E4EH
-
- #define PSHW 3F00H /* MOVE.W D0, -(sp) */
- #define PSHL 2F00H /* MOVE.L D0, -(sp) */
- #define PSHC 3F3CH /* MOVE.W #<const>, -(sp) */
- #define ADDQ2 548FH /* ADDQ.l #2, sp */
- #define ADDQ4 588FH /* ADDQ.l #4, sp */
- #define ADDQ6 5C8FH /* ADDQ.l #6, sp */
- #define ADDQ8 508FH /* ADDQ.l #8, sp */
- #define LEA 4FEFH /* LEA <const>(sp), sp */
-
-
- #if HM2 || TDIM2 || MM2 || LPRM2 || SPCM2 || FTLM2
-
- #define DCALL0(f)\
- CODE(PSHC,f,DTRAP,ADDQ2)
-
- #define DCALL1w(f,p)\
- SETREG(0,p);CODE(PSHW,PSHC,f,DTRAP,ADDQ4)
-
- #define DCALL2w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ6)
-
- #define DCALL3w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
-
- #define DCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,ADDQ8)
-
- #define DCALL1w2l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,12)
-
- #define DCALL1w3l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHL);\
- SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,16)
-
- #define DCALL2w1l(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,10)
-
- #define DCALL2w2l(f,p1,p2,p3,p4)\
- SETREG(0,p4);CODE(PSHL);SETREG(0,p3);CODE(PSHL);SETREG(0,p2);CODE(PSHW);\
- SETREG(0,p1);CODE(PSHW,PSHC,f,DTRAP,LEA,14)
-
- #define DCALL1w1l1w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHL);SETREG(0,p1);\
- CODE(PSHW,PSHC,f,DTRAP,LEA,10)
-
- #define DCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,DTRAP,ADDQ6)
-
- #define DCALL2l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,LEA,10)
-
- #define DCALL1l1w(f,p1,p2)\
- SETREG(0,p2);CODE(PSHW);SETREG(0,p1);CODE(PSHL,PSHC,f,DTRAP,ADDQ8)
-
- #define DCALL1l2w(f,p1,p2,p3)\
- SETREG(0,p3);CODE(PSHW);SETREG(0,p2);CODE(PSHW);SETREG(0,p1);\
- CODE(PSHL,PSHC,f,DTRAP,LEA,10)
-
-
- #define XCALL1l(f,p)\
- SETREG(0,p);CODE(PSHL,PSHC,f,XTRAP,ADDQ6)
-
- #define BCALL1w1l(f,p1,p2)\
- SETREG(0,p2);CODE(PSHL);SETREG(0,p1);CODE(PSHW,PSHC,f,BTRAP,ADDQ8)
-
- #endif
-
-
- /*==========================================================================*/
- /* "GEMDOS"-Calls */
- /*==========================================================================*/
-
-
- #define Pterm0()\
- DCALL0(PTERM0)
-
- #define Cconin(_KEY)\
- SAVEREGS\
- DCALL0(CCONIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define Cconout(_CHAR)\
- SAVEREGS\
- DCALL1w(CCONOUT,_CHAR);\
- RESTOREREGS
-
- #define Cauxin(_CHAR)\
- SAVEREGS\
- DCALL0(CAUXIN);\
- RESTOREREGS\
- GETSWREG(0,_CHAR)
-
- #define Cauxout(_CHAR)\
- SAVEREGS\
- DCALL1w(CAUXOUT,_CHAR);\
- RESTOREREGS
-
- #define Cprnout(_CHAR)\
- SAVEREGS\
- DCALL1w(CPRNOUT,_CHAR);\
- RESTOREREGS
-
- #define Crawio(_DAT,_RES)\
- SAVEREGS\
- DCALL1w(CRAWIO,_DAT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Crawcin(_KEY)\
- SAVEREGS\
- DCALL0(CRAWCIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define Cnecin(_KEY)\
- SAVEREGS\
- DCALL0(CNECIN);\
- RESTOREREGS\
- GETLREG(0,_KEY)
-
- #define Cconws(_STR)\
- SAVEREGS\
- DCALL1l(CCONWS,_STR);\
- RESTOREREGS
-
- #define Cconrs(_BUF)\
- SAVEREGS\
- DCALL1l(CCONRS,_BUF);\
- RESTOREREGS
-
- #define Cconis(_STAT)\
- SAVEREGS\
- DCALL0(CCONIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define Dsetdrv(_DRV,_DRIVES)\
- SAVEREGS\
- DCALL1w(DSETDRV,_DRV);\
- RESTOREREGS\
- GETLREG(0,_DRIVES)
-
- #define Cconos(_STAT)\
- SAVEREGS\
- DCALL0(CCONOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define Cprnos(_STAT)\
- SAVEREGS\
- DCALL0(CPRNOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define Cauxis(_STAT)\
- SAVEREGS\
- DCALL0(CAUXIS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define Cauxos(_STAT)\
- SAVEREGS\
- DCALL0(CAUXOS);\
- RESTOREREGS\
- GETSWREG(0,_STAT)
-
- #define Maddalt(_START,_SIZE,_RES)\
- SAVEREGS\
- DCALL2l(MADDALT,_START,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dgetdrv(_DRV)\
- SAVEREGS\
- DCALL0(DGETDRV);\
- RESTOREREGS\
- GETUWREG(0,_DRV)
-
- #define Fsetdta(_DTA)\
- SAVEREGS\
- DCALL1l(FSETDTA,_DTA);\
- RESTOREREGS
-
- #define Super(_DAT,_VAL)\
- SAVEREGS\
- DCALL1l(SUPER,_DAT);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define Tgetdate(_DATE)\
- SAVEREGS\
- DCALL0(TGETDATE);\
- RESTOREREGS\
- GETUWREG(0,_DATE)
-
- #define Tsetdate(_DATE,_RES)\
- SAVEREGS\
- DCALL1w(TSETDATE,_DATE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Tgettime(_TIME)\
- SAVEREGS\
- DCALL0(TGETTIME);\
- RESTOREREGS\
- GETUWREG(0,_TIME)
-
- #define Tsettime(_TIME,_RES)\
- SAVEREGS\
- DCALL1w(TSETTIME,_TIME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fgetdta(_DTA)\
- SAVEREGS\
- DCALL0(FGETDTA);\
- RESTOREREGS\
- GETREGADR(0,_DTA)
-
- #define Sversion(_VERS)\
- SAVEREGS\
- DCALL0(SVERSION);\
- RESTOREREGS\
- GETUWREG(0,_VERS)
-
- #define Ptermres(_KEEP,_RET)\
- DCALL1l1w(PTERMRES,_KEEP,_RET)
-
- #define Dfree(_BUF,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DFREE,_BUF,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dcreate(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCREATE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Ddelete(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DDELETE,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dsetpath(_PATH,_RES)\
- SAVEREGS\
- DCALL1l(DSETPATH,_PATH);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fcreate(_FILE,_ATTR,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FCREATE,_FILE,_ATTR);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define Fopen(_FILE,_MODE,_HNDL)\
- SAVEREGS\
- DCALL1l1w(FOPEN,_FILE,_MODE);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define Fclose(_HNDL,_RES)\
- SAVEREGS\
- DCALL1w(FCLOSE,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fread(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FREAD,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define Fwrite(_HNDL,_LEN,_BUF,_CNT)\
- SAVEREGS\
- DCALL1w2l(FWRITE,_HNDL,_LEN,_BUF);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define Fdelete(_FILE,_RES)\
- SAVEREGS\
- DCALL1l(FDELETE,_FILE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fseek(_OFF,_HNDL,_MODE,_POS)\
- SAVEREGS\
- DCALL1l2w(FSEEK,_OFF,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_POS)
-
- #define Fattrib(_FILE,_FLAG,_ATTR,_OLD)\
- SAVEREGS\
- DCALL1l2w(FATTRIB,_FILE,_FLAG,_ATTR);\
- RESTOREREGS\
- GETSWREG(0,_OLD)
-
- #define Mxalloc(_SIZE,_MODE,_ADR)\
- SAVEREGS\
- DCALL1l1w(MXALLOC,_SIZE,_MODE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define Fdup(_STD,_HNDL)\
- SAVEREGS\
- DCALL1w(FDUP,_STD);\
- RESTOREREGS\
- GETLREG(0,_HNDL)
-
- #define Fforce(_STD,_HNDL,_RES)\
- SAVEREGS\
- DCALL2w(FFORCE,_STD,_HNDL);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dgetpath(_PATH,_DRV,_RES)\
- SAVEREGS\
- DCALL1l1w(DGETPATH,_PATH,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Malloc(_SIZE,_ADR)\
- SAVEREGS\
- DCALL1l(MALLOC,_SIZE);\
- RESTOREREGS\
- GETREGADR(0,_ADR)
-
- #define Mfree(_ADR,_RES)\
- SAVEREGS\
- DCALL1l(MFREE,_ADR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Mshrink(_ADR,_SIZE,_RES)\
- SAVEREGS\
- DCALL1w2l(MSHRINK,0,_ADR,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pexec(_MODE,_PROG,_TAIL,_ENV,_RES)\
- SAVEREGS\
- DCALL1w3l(PEXEC,_MODE,_PROG,_TAIL,_ENV);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Pterm(_RET)\
- DCALL1w(PTERM,_RET)
-
- #define Fsfirst(_FILE,_ATTR,_RES)\
- SAVEREGS\
- DCALL1l1w(FSFIRST,_FILE,_ATTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fsnext(_RES)\
- SAVEREGS\
- DCALL0(FSNEXT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Frename(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL1w2l(FRENAME,0,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fdatime(_DATIME,_FILE,_FLAG)\
- SAVEREGS\
- DCALL1l2w(FDATIME,_DATIME,_FILE,_FLAG);\
- RESTOREREGS
-
- #define Flock(_HDL,_MODE,_FROM,_LEN,_RES)\
- SAVEREGS\
- DCALL2w2l(FLOCK,_HDL,_MODE,_FROM,_LEN);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Supexec(_PROC)\
- SAVEREGS\
- XCALL1l(SUPEXEC,_PROC);\
- RESTOREREGS
-
- #define Setexc(_VEC,_ADR,_OLD)\
- SAVEREGS\
- BCALL1w1l(SETEXC,_VEC,_ADR);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #if MINT
- /*==========================================================================*/
- /* MiNT-Calls */
- /*==========================================================================*/
-
- #define Syield()\
- SAVEREGS\
- DCALL0(SYIELD);\
- RESTOREREGS
-
- #define Fpipe(_PTR,_RES)\
- SAVEREGS\
- DCALL1l(FPIPE,_PTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fcntl(_HNDL,_ARG,_CMD,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FCNTL,_HNDL,_ARG,_CMD);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Finstat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FINSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define Foutstat(_HNDL,_CNT)\
- SAVEREGS\
- DCALL1w(FOUTSTAT,_HNDL);\
- RESTOREREGS\
- GETLREG(0,_CNT)
-
- #define Fgetchar(_HNDL,_MODE,_RES)\
- SAVEREGS\
- DCALL2w(FGETCHAR,_HNDL,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Fputchar(_HNDL,_CHAR,_MODE,_RES)\
- SAVEREGS\
- DCALL1w1l1w(FPUTCHAR,_HNDL,_CHAR,_MODE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Pwait(_RES)\
- SAVEREGS\
- DCALL0(PWAIT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Pnice(_DELTA,_PRIO)\
- SAVEREGS\
- DCALL1w(PNICE,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_PRIO)
-
- #define Pgetpid(_PID)\
- SAVEREGS\
- DCALL0(PGETPID);\
- RESTOREREGS\
- GETUWREG(0,_PID)
-
- #define Pgetppid(_PPID)\
- SAVEREGS\
- DCALL0(PGETPPID);\
- RESTOREREGS\
- GETUWREG(0,_PPID)
-
- #define Pgetpgrp(_PGRP)\
- SAVEREGS\
- DCALL0(PGETPGRP);\
- RESTOREREGS\
- GETUWREG(0,_PGRP)
-
- #define Psetpgrp(_PID,_GRP,_RES)\
- SAVEREGS\
- DCALL2w(PSETPGRP,_PID,_GRP);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pgetuid(_UID)\
- SAVEREGS\
- DCALL0(PGETUID);\
- RESTOREREGS\
- GETUWREG(0,_UID)
-
- #define Psetuid(_UID,_RES)\
- SAVEREGS\
- DCALL1w(PSETUID,_UID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pkill(_PID,_SIG,_RES)\
- SAVEREGS\
- DCALL2w(PKILL,_PID,_SIG);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Psignal(_SIG,_HANDLER,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSIGNAL,_SIG,_HANDLER);\
- RESTOREREGS\
- GETREGADR(0,_OLD)
-
- #define Pvfork(_RES)\
- SAVEREGS\
- DCALL0(PVFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pgetgid(_GID)\
- SAVEREGS\
- DCALL0(PGETGID);\
- RESTOREREGS\
- GETUWREG(0,_GID)
-
- #define Psetgid(_GID,_RES)\
- SAVEREGS\
- DCALL1w(PSETGID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Psigblock(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGBLOCK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define Psigsetmask(_MASK,_OLD)\
- SAVEREGS\
- DCALL1l(PSIGSETMASK,_MASK);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define Pusrval(_ARG,_VAL)\
- SAVEREGS\
- DCALL1l(PUSRVAL,_ARG);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define Pdomain(_DOM,_OLD)\
- SAVEREGS\
- DCALL1w(PDOMAIN,_DOM);\
- RESTOREREGS\
- GETSWREG(0,_OLD)
-
- #define Psigreturn()\
- SAVEREGS\
- DCALL0(PSIGRETURN);\
- RESTOREREGS
-
- #define Pfork(_RES)\
- SAVEREGS\
- DCALL0(PFORK);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pwait3(_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL1w1l(PWAIT3,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Fselect(_TIMEOUT,_RFDS,_WFDS,_XFDS,_RES)\
- SAVEREGS\
- DCALL1w3l(FSELECT,_TIMEOUT,_RFDS,_WFDS,_XFDS);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Prusage(_RSCADR)\
- SAVEREGS\
- DCALL1l(PRUSAGE,_RSCADR);\
- RESTOREREGS
-
- #define Psetlimit(_LIM,_VAL,_OLD)\
- SAVEREGS\
- DCALL1w1l(PSETLIMIT,_LIM,_VAL);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define Talarm(_SECS,_OLD)\
- SAVEREGS\
- DCALL1l(TALARM,_SECS);\
- RESTOREREGS\
- GETLREG(0,_OLD)
-
- #define Pause()\
- SAVEREGS\
- DCALL0(PAUSE);\
- RESTOREREGS
-
- #define Sysconf(_WHICH,_VAL)\
- SAVEREGS\
- DCALL1w(SYSCONF,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define Psigpending(_SIGS)\
- SAVEREGS\
- DCALL0(PSIGPENDING);\
- RESTOREREGS\
- GETLREG(0,_SIGS)
-
- #define Dpathconf(_NAME,_WHICH,_VAL)\
- SAVEREGS\
- DCALL1l1w(DPATHCONF,_NAME,_WHICH);\
- RESTOREREGS\
- GETLREG(0,_VAL)
-
- #define Pmsg(_MODE,_MBOXID,_MSGPTR,_RES)\
- SAVEREGS\
- DCALL1w2l(PMSG,_MODE,_MBOXID,_MSGPTR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fmidipipe(_PID,_IN,_OUT,_RES)\
- SAVEREGS\
- DCALL3w(FMIDIPIPE,_PID,_IN,_OUT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Prenice(_PID,_DELTA,_CURRENT)\
- SAVEREGS\
- DCALL2w(PRENICE,_PID,_DELTA);\
- RESTOREREGS\
- GETLREG(0,_CURRENT)
-
- #define Dopendir(_NAME,_FLAG,_DIR)\
- SAVEREGS\
- DCALL1l1w(DOPENDIR,_NAME,_FLAG);\
- RESTOREREGS\
- GETLREG(0,_DIR)
-
- #define Dreaddir(_LEN,_DIR,_BUF,_RES)\
- SAVEREGS\
- DCALL1w2l(DREADDIR,_LEN,_DIR,_BUF);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Drewinddir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DREWINDDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dclosedir(_DIR,_RES)\
- SAVEREGS\
- DCALL1l(DCLOSEDIR,_DIR);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fxattr(_FLAG,_NAME,_XATTR,_RES)\
- SAVEREGS\
- DCALL1w2l(FXATTR,_FLAG,_NAME,_XATTR);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Flink(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fsymlink(_OLD,_NEW,_RES)\
- SAVEREGS\
- DCALL2l(FSYMLINK,_OLD,_NEW);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Freadlink(_BUFSIZ,_BUF,_NAME,_RES)\
- SAVEREGS\
- DCALL1w2l(FREADLINK,_BUFSIZ,_BUF,_NAME);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Dcntl(_CMD,_NAME,_ARG,_RES)\
- SAVEREGS\
- DCALL1w2l(DCNTL,_CMD,_NAME,_ARG);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Fchown(_FILE,_UID,_GID,_RES)\
- SAVEREGS\
- DCALL1l2w(FCHOWN,_FILE,_UID,_GID);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Fchmod(_FILE,_MODE,_RES)\
- SAVEREGS\
- DCALL1l1w(FCHMOD,_FILE,_MODE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pumask(_MODE,_OLD)\
- SAVEREGS\
- DCALL1w(PUMASK,_MODE);\
- RESTOREREGS\
- GETUWREG(0,_OLD)
-
- #define Psemaphore(_MODE,_ID,_TOUT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSEMAPHORE,_MODE,_ID,_TOUT);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Dlock(_MODE,_DRV,_RES)\
- SAVEREGS\
- DCALL2w(DLOCK,_MODE,_DRV);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Psigpause(_SIGMASK)\
- SAVEREGS\
- DCALL1l(PSIGPAUSE,_SIGMASK);\
- RESTOREREGS
-
- #define Psigaction(_SIG,_ACT,_OACT,_RES)\
- SAVEREGS\
- DCALL1w2l(PSIGACTION,_SIG,_ACT,_OACT);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Pgeteuid(_EUID)\
- SAVEREGS\
- DCALL0(PGETEUID);\
- RESTOREREGS\
- GETUWREG(0,_EUID)
-
- #define Pgetegid(_EGID)\
- SAVEREGS\
- DCALL0(PGETEGID);\
- RESTOREREGS\
- GETUWREG(0,_EGID)
-
- #define Pwaitpid(_PID,_FLAG,_RUSAGE,_RES)\
- SAVEREGS\
- DCALL2w1l(PWAITPID,_PID,_FLAG,_RUSAGE);\
- RESTOREREGS\
- GETLREG(0,_RES)
-
- #define Dgetcwd(_PATH,_DRV,_SIZE,_RES)\
- SAVEREGS\
- DCALL1l2w(DGETCWD,_PATH,_DRV,_SIZE);\
- RESTOREREGS\
- GETSWREG(0,_RES)
-
- #define Salert(_MSG)\
- SAVEREGS\
- DCALL1l(SALERT,_MSG);\
- RESTOREREGS
-
- #endif /* MINT */
-
-