osposix.inc 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. {
  2. $Id$
  3. Copyright (c) 2002 by Marco van de Voort.
  4. Declarations to import basic syscalls declarations into other base
  5. units.
  6. The conditional uselibc can be used to switch from libc to syscall
  7. usage for basic primitives, but it is best to use unit POSIX if
  8. possible. Note that the system unit must also be compiled using uselibc.
  9. This program is free software; you can redistribute it and/or modify
  10. it under the terms of the GNU General Public License as published by
  11. the Free Software Foundation; either version 2 of the License, or
  12. (at your option) any later version.
  13. This program is distributed in the hope that it will be useful,
  14. but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. GNU General Public License for more details.
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. ****************************************************************************
  21. }
  22. Uses Sysctl;
  23. {$I bsdtypes.inc}
  24. {$I bsdmacro.inc}
  25. {$ifdef uselibc}
  26. {$Linklib c}
  27. { var
  28. Errno : cint; external name 'errno';}
  29. function sys_time(var tloc:time_t): time_t; cdecl; external name 'time';
  30. function sys_open(const path: pchar; flags : cint; mode: mode_t):cint; cdecl; external name 'open';
  31. function sys_close(fd : cint): cint; cdecl; external name 'close';
  32. function sys_lseek(fd : cint; offset : off_t; whence : cint): off_t; cdecl; external name 'lseek';
  33. function sys_read(fd: cint; buf: pchar; nbytes : size_t): ssize_t; cdecl; external name 'read';
  34. function sys_write(fd: cint;const buf:pchar; nbytes : size_t): ssize_t; cdecl; external name 'write';
  35. function sys_unlink(const path: pchar): cint; cdecl; external name 'unlink';
  36. function sys_rename(const old : pchar; const newpath: pchar): cint; cdecl;external name 'rename';
  37. function sys_stat(const path: pchar; var buf : stat): cint; cdecl; external name 'stat';
  38. function sys_chdir(const path : pchar): cint; cdecl; external name 'chdir';
  39. function sys_mkdir(const path : pchar; mode: mode_t):cint; cdecl; external name 'mkdir';
  40. function sys_rmdir(const path : pchar): cint; cdecl; external name 'rmdir';
  41. function sys_opendir(const dirname : pchar): pdir; cdecl; external name 'opendir';
  42. function sys_readdir(var dirp : dir) : pdirent;cdecl; external name 'readdir';
  43. function sys_closedir(var dirp : dir): cint; cdecl; external name 'closedir';
  44. procedure sys_exit(status : cint); cdecl; external name '_exit';
  45. function sys_sigaction(sig: cint; var act : sigactionrec; var oact : sigactionrec): cint; cdecl; external name 'sigaction';
  46. function sys_ftruncate(fd : cint; flength : off_t): cint; cdecl; external name 'ftruncate';
  47. function sys_rename(const old : pchar; const newpath: pchar): cint; cdecl;external name 'rename';
  48. function sys_fstat(fd : cint; var sb : stat): cint; cdecl; external name 'fstat';
  49. function sys_fork : pid_t; cdecl; external name 'fork';
  50. function sys_execve(const path : pchar; const argv : ppchar; const envp: ppchar): cint; cdecl; external name 'execve';
  51. function sys_waitpid(pid : pid_t; var stat_loc : cint; options: cint): pid_t; cdecl; external name 'waitpid';
  52. function sys_access(const pathname : pchar; amode : cint): cint; cdecl; external name 'access';
  53. // function sys_uname(var name: utsname): cint; cdecl; external name 'uname';
  54. function sys_Dup(oldd:cint):cint; cdecl; external name 'dup';
  55. function sys_Dup2(oldd:cint;newd:cint):cint; cdecl; external name 'dup2';
  56. {$else}
  57. {*****************************************************************************
  58. --- Main:The System Call Self ---
  59. *****************************************************************************}
  60. { The system designed for Linux can't be used for FreeBSD so easily, since
  61. FreeBSD pushes arguments, instead of loading them to registers.}
  62. function sys_time(var tloc:time_t): time_t; external name 'FPC_SYSC_TIME';
  63. function sys_open(const path: pchar; flags : cint; mode: mode_t):cint; external name 'FPC_SYSC_OPEN';
  64. function sys_close(fd : cint): cint; external name 'FPC_SYSC_CLOSE';
  65. function sys_lseek(fd : cint; offset : off_t; whence : cint): off_t; external name 'FPC_SYSC_LSEEK';
  66. function sys_read(fd: cint; buf: pchar; nbytes : size_t): ssize_t; external name 'FPC_SYSC_READ';
  67. function sys_write(fd: cint;const buf:pchar; nbytes : size_t): ssize_t; external name 'FPC_SYSC_WRITE';
  68. function sys_unlink(const path: pchar): cint; external name 'FPC_SYSC_UNLINK';
  69. function sys_rename(const old : pchar; const newpath: pchar): cint; external name 'FPC_SYSC_RENAME';
  70. function sys_stat(const path: pchar; var buf : stat):cint; external name 'FPC_SYSC_STAT';
  71. function sys_chdir(const path : pchar): cint; external name 'FPC_SYSC_CHDIR';
  72. function sys_mkdir(const path : pchar; mode: mode_t):cint; external name 'FPC_SYSC_MKDIR';
  73. function sys_rmdir(const path : pchar): cint; external name 'FPC_SYSC_RMDIR';
  74. function sys_opendir(const dirname : pchar): pdir; external name 'FPC_SYSC_OPENDIR';
  75. function sys_closedir(var dirp : dir): cint; external name 'FPC_SYSC_CLOSEDIR';
  76. function sys_readdir(var dirp : dir) : pdirent; external name 'FPC_SYSC_READDIR';
  77. procedure sys_exit(status : cint); external name 'FPC_SYSC_EXIT';
  78. function sys_sigaction(sig: cint; var act : sigactionrec; var oact : sigactionrec): cint; external name 'FPC_SYSC_SIGACTION';
  79. function sys_ftruncate(fd : cint; flength : off_t): cint; external name 'FPC_SYSC_FTRUNCATE';
  80. function sys_fstat(fd : cint; var sb : stat): cint; external name 'FPC_SYSC_FSTAT';
  81. function sys_fork : pid_t; external name 'FPC_SYSC_FORK';
  82. function sys_execve(const path : pchar; const argv : ppchar; const envp: ppchar): cint; external name 'FPC_SYSC_EXECVE';
  83. function sys_waitpid(pid : pid_t; var stat_loc : cint; options: cint): pid_t; external name 'FPC_SYSC_WAITPID';
  84. function sys_access(const pathname : pchar; amode : cint): cint;external name 'FPC_SYSC_ACCESS';
  85. function sys_Dup(oldd:cint):cint; external name 'FPC_SYSC_DUP';
  86. function sys_Dup2(oldd:cint;newd:cint):cint; external name 'FPC_SYSC_DUP2';
  87. function geterrno:longint; external name 'FPC_SYS_GETERRNO';
  88. procedure seterrno (i:longint); external name 'FPC_SYS_SETERRNO';
  89. {$endif}
  90. {$I bsdfuncs.inc}
  91. {
  92. $Log$
  93. Revision 1.5 2002-09-07 16:01:17 peter
  94. * old logs removed and tabs fixed
  95. Revision 1.4 2002/08/21 07:03:16 marco
  96. * Fixes from Tuesday.
  97. Revision 1.3 2002/08/19 12:29:11 marco
  98. * First working POSIX *BSD system unit.
  99. }