summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-03-19 21:43:36 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-03-19 21:43:36 +0000
commit54a3226134172a4f71e9bafaaf1a3f2a79ed6d5e (patch)
treee0680cb11144a2af199116819634968a9e47b096
parent43cb89ea6b50a255f39cfb8959343436d55eb692 (diff)
downloadfpc-54a3226134172a4f71e9bafaaf1a3f2a79ed6d5e.tar.gz
* Updated statfs to FreeBSD5+ level. Used a statfs union to provide some backwards compat.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@17147 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--rtl/freebsd/ptypes.inc86
-rw-r--r--rtl/freebsd/sysnr.inc225
2 files changed, 78 insertions, 233 deletions
diff --git a/rtl/freebsd/ptypes.inc b/rtl/freebsd/ptypes.inc
index aacf23c5f5..8bc19db1bf 100644
--- a/rtl/freebsd/ptypes.inc
+++ b/rtl/freebsd/ptypes.inc
@@ -163,16 +163,75 @@ type
_MUTEX_TYPE_MAX
);
-
-Const
- MNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
- MFSNamLen = 16;
type
- fsid_t = array[0..1] of cint;
+ fsid_t = array[0..1] of cint32;
-// Kernel statfs
-
- TStatfs = packed record
+Const
+ MNAMELEN = 88;
+ MFSNamELen = 16;
+ STATFS_VERSION = $20030518;
+ OMNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
+ OMFSNamLen = 16;
+
+// fieldnames start with f_ in headers. Probably 1.0.x simplification that somehow
+// managed to escape the unix rewrite. Make an union+ deprecate after newstatfs is stable.
+
+Type TStatFS = {?} Record
+ case boolean of
+ 0 : ( // current FreeBSD
+ version : cuint32; { structure version number }
+ ftype : cuint32; { type of filesystem }
+ fflags : cuint64; { copy of mount exported flags }
+ bsize : cuint64; { filesystem fragment size }
+ iosize : cuint64; { optimal transfer block size }
+ blocks : cuint64; { total data blocks in filesystem }
+ bfree : cuint64; { free blocks in filesystem }
+ bavail : cint64; { free blocks avail to non-superuser }
+ files : cuint64; { total file nodes in filesystem }
+ ffree : cint64; { free nodes avail to non-superuser }
+ fsyncwrites : cuint64; { count of sync writes since mount }
+ fasyncwrites : cuint64; { count of async writes since mount }
+ fsyncreads : cuint64; { count of sync reads since mount }
+ fasyncreads : cuint64; { count of async reads since mount }
+ spare : array[0..9] of cuint64; { unused spare }
+ namemax : cuint32; { maximum filename length }
+ owner : tuid; { user that mounted the filesystem }
+ fsid : fsid_t; { filesystem id }
+ charspare : array[0..80-1] of ansichar; { spare string space }
+ fstypename : array[0..MFSNAMELEN-1] of ansichar; { filesystem type name }
+ mnfromname : array[0..MNAMELEN-1] of ansichar; { mounted filesystem }
+ mountpoint : array[0..MNAMELEN-1] of ansichar; { directory on which mounted }
+ );
+ 1:( // union for old fieldname's sake.
+ f_version : cuint32; { structure version number }
+ f_type : cuint32; { type of filesystem }
+ f_flags : cuint64; { copy of mount exported flags }
+ f_bsize : cuint64; { filesystem fragment size }
+ f_iosize : cuint64; { optimal transfer block size }
+ f_blocks : cuint64; { total data blocks in filesystem }
+ f_bfree : cuint64; { free blocks in filesystem }
+ f_bavail : cint64; { free blocks avail to non-superuser }
+ f_files : cuint64; { total file nodes in filesystem }
+ f_ffree : cint64; { free nodes avail to non-superuser }
+ f_syncwrites : cuint64; { count of sync writes since mount }
+ f_asyncwrites : cuint64; { count of async writes since mount }
+ f_syncreads : cuint64; { count of sync reads since mount }
+ f_asyncreads : cuint64; { count of async reads since mount }
+ f_spare : array[0..9] of cuint64; { unused spare }
+ f_namemax : cuint32; { maximum filename length }
+ f_owner : tuid; { user that mounted the filesystem }
+ f_fsid : fsid_t; { filesystem id }
+ f_charspare : array[0..80-1] of ansichar; { spare string space }
+ f_fstypename : array[0..MFSNAMELEN-1] of ansichar; { filesystem type name }
+ f_mntfromname : array[0..MNAMELEN-1] of ansichar; { mounted filesystem }
+ f_mntonname : array[0..MNAMELEN-1] of ansichar; { directory on which mounted }
+ );
+ end;
+
+ PStatFS=^TStatFS;
+
+
+ TStatFS4 = packed record
spare2, { place holder}
bsize, { fundamental block size}
iosize, { optimal block size }
@@ -187,18 +246,19 @@ type
fflags : cint; {copy of mount flags}
fsyncwrites,
fasyncwrites : clong;
- fstypename : array[0..MFSNamLen-1] of char;
- mountpoint : array[0..MNAMLEN-1] of char;
+ fstypename : array[0..OMFSNamLen-1] of char;
+ mountpoint : array[0..OMNAMLEN-1] of char;
fsyncreads, { count of sync reads since mount }
fasyncreads : clong;
fspares1 : cshort;
- mnfromname : array[0..MNAMLEN-1] of char;
+ mnfromname : array[0..OMNAMLEN-1] of char;
fspares2 : cshort;
fspare3 : array[0..1] of clong;
end;
- PStatFS=^TStatFS;
+
+ PStatFS4=^TStatFs4;
- mbstate_t = record
+ mbstate_t = record
case byte of
0: (__mbstate8: array[0..127] of char);
1: (_mbstateL: cint64); { for alignment }
diff --git a/rtl/freebsd/sysnr.inc b/rtl/freebsd/sysnr.inc
index 336890adf4..720e8f67d0 100644
--- a/rtl/freebsd/sysnr.inc
+++ b/rtl/freebsd/sysnr.inc
@@ -13,225 +13,7 @@
**********************************************************************}
const
-{ Crude converted FreeBSD 6.1-release syscall.h. Copy and paste if you
- checked the function.
- syscall_nr_syscall = 0;
- syscall_nr_exit = 1;
- syscall_nr_fork = 2;
- syscall_nr_read = 3;
- syscall_nr_write = 4;
- syscall_nr_open = 5;
- syscall_nr_close = 6;
- syscall_nr_wait4 = 7;
- syscall_nr_link = 9;
- syscall_nr_unlink = 10;
- syscall_nr_chdir = 12;
- syscall_nr_fchdir = 13;
- syscall_nr_mknod = 14;
- syscall_nr_chmod = 15;
- syscall_nr_chown = 16;
- syscall_nr_break = 17;
- syscall_nr_getfsstat = 18;
- syscall_nr_getpid = 20;
- syscall_nr_mount = 21;
- syscall_nr_unmount = 22;
- syscall_nr_getuid = 24;
- syscall_nr_geteuid = 25;
- syscall_nr_ptrace = 26;
- syscall_nr_recvmsg = 27;
- syscall_nr_sendmsg = 28;
- syscall_nr_getpeername = 31;
- syscall_nr_getsockname = 32;
- syscall_nr_access = 33;
- syscall_nr_chflags = 34;
- syscall_nr_fchflags = 35;
- syscall_nr_sync = 36;
- syscall_nr_kill = 37;
- syscall_nr_getppid = 39;
- syscall_nr_dup = 41;
- syscall_nr_pipe = 42;
- syscall_nr_getegid = 43;
- syscall_nr_profil = 44;
- syscall_nr_ktrace = 45;
- syscall_nr_getgid = 47;
- syscall_nr_getlogin = 49;
- syscall_nr_setlogin = 50;
- syscall_nr_acct = 51;
- syscall_nr_sigaltstack = 53;
- syscall_nr_ioctl = 54;
- syscall_nr_reboot = 55;
- syscall_nr_revoke = 56;
- syscall_nr_symlink = 57;
- syscall_nr_readlink = 58;
- syscall_nr_execve = 59;
- syscall_nr_umask = 60;
- syscall_nr_chroot = 61;
- syscall_nr_msync = 65;
- syscall_nr_vfork = 66;
- syscall_nr_sbrk = 69;
- syscall_nr_sstk = 70;
- syscall_nr_vadvise = 72;
- syscall_nr_mprotect = 74;
- syscall_nr_madvise = 75;
- syscall_nr_mincore = 78;
- syscall_nr_setgroups = 80;
- syscall_nr_setpgid = 82;
- syscall_nr_swapon = 85;
-
- syscall_nr_getdtablesize = 89;
- syscall_nr_dup2 = 90;
- syscall_nr_fcntl = 92;
- syscall_nr_select = 93;
- syscall_nr_fsync = 95;
- syscall_nr_setpriority = 96;
- syscall_nr_connect = 98;
- syscall_nr_getpriority =100;
- syscall_nr_setsockopt =105;
- syscall_nr_gettimeofday =116;
-
- syscall_nr_fchown =123;
- syscall_nr_fchmod =124;
- syscall_nr_setreuid =126;
- syscall_nr_setregid =127;
- syscall_nr_rename =128;
- syscall_nr_flock =131;
- syscall_nr_mkdir =136;
- syscall_nr_rmdir =137;
- syscall_nr_utimes =138;
- syscall_nr_adjtime =140;
-
- syscall_nr_quotactl =148;
- syscall_nr_nfssvc =155;
- syscall_nr_statfs =157;
- syscall_nr_fstatfs =158;
- syscall_nr_getfh =161;
- syscall_nr_getdomainname =162;
- syscall_nr_setdomainname =163;
- syscall_nr_uname =164;
-
- syscall_nr_rtprio =166;
-
- syscall_nr_ntp_adjtime =176;
- syscall_nr_setegid =182;
- syscall_nr_seteuid =183;
- syscall_nr_stat =188;
- syscall_nr_fstat =189;
- syscall_nr_lstat =190;
- syscall_nr_pathconf =191;
- syscall_nr_fpathconf =192;
- syscall_nr_getrlimit =194;
- syscall_nr_setrlimit =195;
-syscall_nr_getdirentries =196;
- syscall_nr_mmap =197;
- syscall_nr_lseek =199;
- syscall_nr_truncate =200;
- syscall_nr_ftruncate =201;
- syscall_nr___sysctl =202;
- syscall_nr_mlock =203;
- syscall_nr_munlock =204;
- syscall_nr_undelete =205;
- syscall_nr_futimes =206;
- syscall_nr_getpgid =207;
- syscall_nr___semctl =220;
- syscall_nr_semget =221;
- syscall_nr_semop =222;
- syscall_nr_semconfig =223;
- syscall_nr_msgctl =224;
- syscall_nr_msgget =225;
- syscall_nr_msgsnd =226;
- syscall_nr_msgrcv =227;
- syscall_nr_shmat =228;
- syscall_nr_shmctl =229;
- syscall_nr_shmdt =230;
- syscall_nr_shmget =231;
- syscall_nr_clock_gettime =232;
- syscall_nr_clock_settime =233;
- syscall_nr_clock_getres =234;
- syscall_nr_nanosleep =240;
- syscall_nr_minherit =250;
- syscall_nr_openbsd_poll =252;
- syscall_nr_issetugid =253;
- syscall_nr_lchown =254;
- syscall_nr_getdents =272;
- syscall_nr_lchmod =274;
- syscall_nr_netbsd_lchown =275;
- syscall_nr_lutimes =276;
- syscall_nr_netbsd_msync =277;
- syscall_nr_nstat =278;
- syscall_nr_nfstat =279;
- syscall_nr_nlstat =280;
- syscall_nr_fhstatfs =297;
- syscall_nr_fhopen =298;
- syscall_nr_fhstat =299;
- syscall_nr_modnext =300;
- syscall_nr_modstat =301;
- syscall_nr_modfnext =302;
- syscall_nr_modfind =303;
- syscall_nr_kldload =304;
- syscall_nr_kldunload =305;
- syscall_nr_kldfind =306;
- syscall_nr_kldnext =307;
- syscall_nr_kldstat =308;
- syscall_nr_kldfirstmod =309;
- syscall_nr_getsid =310;
- syscall_nr_setresuid =311;
- syscall_nr_setresgid =312;
- syscall_nr_aio_return =314;
- syscall_nr_aio_suspend =315;
- syscall_nr_aio_cancel =316;
- syscall_nr_aio_error =317;
- syscall_nr_aio_read =318;
- syscall_nr_aio_write =319;
- syscall_nr_lio_listio =320;
- syscall_nr_yield =321;
- syscall_nr_thr_sleep =322;
- syscall_nr_thr_wakeup =323;
- syscall_nr_mlockall =324;
- syscall_nr_munlockall =325;
- syscall_nr_sched_setparam =327;
- syscall_nr_sched_getparam =328;
- syscall_nr_sched_setscheduler =329;
- syscall_nr_sched_getscheduler =330;
- syscall_nr_sched_yield =331;
- syscall_nr_sched_get_priority_max =332;
- syscall_nr_sched_get_priority_min =333;
- syscall_nr_sched_rr_get_interval =334;
- syscall_nr_utrace =335;
- syscall_nr_sendfile =336;
- syscall_nr_kldsym =337;
- syscall_nr_jail =338;
- syscall_nr_sigprocmask =340;
- syscall_nr_sigsuspend =341;
- syscall_nr_sigaction =342;
- syscall_nr_sigpending =343;
- syscall_nr_sigreturn =344;
- syscall_nr_sigtimedwait =345;
- syscall_nr___acl_get_file =347;
- syscall_nr___acl_set_file =348;
- syscall_nr___acl_get_fd =349;
- syscall_nr___acl_set_fd =350;
- syscall_nr___acl_delete_file =351;
- syscall_nr___acl_delete_fd =352;
- syscall_nr___acl_aclcheck_file =353;
- syscall_nr___acl_aclcheck_fd =354;
- syscall_nr_extattrctl =355;
- syscall_nr_extattr_set_file =356;
- syscall_nr_extattr_get_file =357;
- syscall_nr_extattr_delete_file =358;
- syscall_nr_aio_waitcomplete =359;
- syscall_nr_getresuid =360;
- syscall_nr_getresgid =361;
- syscall_nr_kse_exit = 379;
- syscall_nr_kse_wakeup = 380;
- syscall_nr_kse_create = 381;
- syscall_nr_kse_thr_interrupt = 382;
- syscall_nr_kse_release = 383;
- syscall_nr_kse_switchin = 440;
-
-}
-
{More or less checked/in use FreeBSD syscalls}
- syscall_nr_getfsstat = 18;
syscall_nr_readv = 120;
syscall_nr_writev = 121;
syscall_nr_pread = 173;
@@ -267,7 +49,11 @@ syscall_nr_getdirentries =196;
syscall_nr_flock = 131;
syscall_nr_fork = 2;
syscall_nr_fstat = 189;
- syscall_nr_fstatfs = 158; // COMPAT4x
+ syscall_nr_statfs4 = 157; // COMPAT4x
+ syscall_nr_fstatfs4 = 158; // COMPAT4x
+ syscall_nr_getfsstat = 395;
+ syscall_nr_statfs = 396;
+ syscall_nr_fstatfs = 397;
syscall_nr_fsync = 95;
syscall_nr_ftruncate = 201;
syscall_nr_getdents = 272;
@@ -311,7 +97,6 @@ syscall_nr_getdirentries =196;
syscall_nr_socket = 97;
syscall_nr_socketpair = 135;
syscall_nr_stat = 188;
- syscall_nr_statfs = 157; // COMPAT4x
syscall_nr_symlink = 57;
syscall_nr_umask = 60;
syscall_nr_unlink = 10;