* Updated statfs to FreeBSD5+ level. Used a statfs union to provide some backwards compat.

git-svn-id: trunk@17147 -
This commit is contained in:
marco 2011-03-19 21:43:36 +00:00
parent 2b94b3255c
commit 3a12f018f4
2 changed files with 76 additions and 231 deletions

View File

@ -163,16 +163,75 @@ type
_MUTEX_TYPE_MAX
);
type
fsid_t = array[0..1] of cint32;
Const
MNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
MFSNamLen = 16;
type
fsid_t = array[0..1] of cint;
MNAMELEN = 88;
MFSNamELen = 16;
STATFS_VERSION = $20030518;
OMNAMLEN = 88-2*sizeof(clong); // slightly machine specific.
OMFSNamLen = 16;
// Kernel statfs
// 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.
TStatfs = packed record
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 }

View File

@ -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;