diff options
author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-03-19 21:43:36 +0000 |
---|---|---|
committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-03-19 21:43:36 +0000 |
commit | 54a3226134172a4f71e9bafaaf1a3f2a79ed6d5e (patch) | |
tree | e0680cb11144a2af199116819634968a9e47b096 | |
parent | 43cb89ea6b50a255f39cfb8959343436d55eb692 (diff) | |
download | fpc-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.inc | 86 | ||||
-rw-r--r-- | rtl/freebsd/sysnr.inc | 225 |
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; |