From 59e9da20d89c51425a8a45b1931033f7d15cefde Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 16 Apr 2000 16:08:30 +0000 Subject: [PATCH] * Updated PDir to BSD libc layout. (which is totally different from Linux) --- rtl/bsd/systypes.inc | 334 +++++++++++++++++++++++-------------------- 1 file changed, 175 insertions(+), 159 deletions(-) diff --git a/rtl/bsd/systypes.inc b/rtl/bsd/systypes.inc index f1a361474d..e4dd9920cc 100644 --- a/rtl/bsd/systypes.inc +++ b/rtl/bsd/systypes.inc @@ -1,161 +1,177 @@ -{ - $Id$ - This file is part of the Free Pascal run time library. - Copyright (c) 1999-2000 by Michael Van Canneyt, - member of the Free Pascal development team. - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - - **********************************************************************} -type - -{ - Linux system calls take arguments as follows : - - i386/m68k: - - %eax/%d0 : System call number - %ebx/%d1 : first argument - %ecx/%d2 : second argument - %edx/%d3 : third argumens - %esi/%d3 : fourth argument - %edi/%d4 : fifth argument - - That is why we define a special type, with only these arguments - To make it processor independent, we don't give any system dependent - names, but the rather abstract reg1,reg2 etc; -} - SysCallRegs=record - reg1,reg2,reg3,reg4,reg5,reg6 : longint; - end; - PSysCallRegs=^SysCallRegs; - TSysCallRegs=SysCallRegs; - -{ The following are records for system calls BSD updated } - dirent = packed record - ino : cardinal; { This is not inode number, but "a number - unique for each file on a filesystem"} - reclen : word; - d_type, - namlen : byte; - name : array [0..255] of char; - end; - - pdirent =^dirent; - TDirEnt = dirent; - - TDir = packed record - fd : longint; - loc : longint; - size : integer; - buf : pdirent; - {The following are used in libc, but NOT in the linux kernel sources ??} - nextoff: longint; - dd_max : integer; {size of buf. Irrelevant, as buf is of type dirent} - lock : pointer; - dummy : array[0..1023] of char; - end; - PDir =^TDir; - -{$packrecords C} - Stat =record {BSD version} - dev, { inode's device } - ino : cardinal; { inode's number } - mode, { inode protection mode } - nlink : word; { number of hard links } - uid, { user ID of the file's owner } - gid, { group ID of the file's group } - dev_t : cardinal; { device type } - atime, { time of last access } - atime_nsec, { nsec of last access } - mtime, { time of last data modification } - mtime_nsec, { nsec of last data modification } - ctime, { time of last file status change } - ctime_nsec : longint; { nsec of last file status change } - size, { file size, in bytes } - blocks : Int64; { blocks allocated for file } - blksze, { optimal blocksize for I/O } - flags, { user defined flags for file } - filegen : cardinal; { file generation number } - lspare : longint; - qspare : array[0..1] of int64; - end; - - PStat=^Stat; - TStat=Stat; - - Statfs = packed record - spare2, { place holder} - bsize, { fundamental block size} - iosize, { optimal block size } - blocks, { total blocks} - bfree, { blocks free} - bavail, { block available for mortal users} - files, { Total file nodes} - ffree : longint; { file nodes free} - fsid : array[0..1] of longint; - fowner : longint; {mounter uid} - ftype : longint; - fflags : longint; {copy of mount flags} - spare : array [0..1] of longint; { For later use } - fstypename : array[0..15] of char; - mountpoint : array[0..89] of char; - mnfromname : array[0..89] of char; - end; - PStatFS=^StatFS; - TStatFS=StatFS; - - fdSet=array[0..7] of longint;{=256 bits} - pfdset=^fdset; - TFDSet=fdset; - - timeval = packed record - sec,usec:int64; - end; - ptimeval=^timeval; - TTimeVal=timeval; - - timezone = packed record - minuteswest,dsttime:longint; - end; - ptimezone =^timezone; - TTimeZone = timezone; - - utsname = packed record - sysname, - nodename, - release, - version, - machine, - domainname : Array[0..64] of char; - end; - PUTSName=^UTSName; - TUTSName=UTSName; - -{ +{ + $Id$ + This file is part of the Free Pascal run time library. + Copyright (c) 1999-2000 by Michael Van Canneyt, + member of the Free Pascal development team. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +type + +{ + Linux system calls take arguments as follows : + + i386/m68k: + + %eax/%d0 : System call number + %ebx/%d1 : first argument + %ecx/%d2 : second argument + %edx/%d3 : third argumens + %esi/%d3 : fourth argument + %edi/%d4 : fifth argument + + That is why we define a special type, with only these arguments + To make it processor independent, we don't give any system dependent + names, but the rather abstract reg1,reg2 etc; +} + SysCallRegs=record + reg1,reg2,reg3,reg4,reg5,reg6 : longint; + end; + PSysCallRegs=^SysCallRegs; + TSysCallRegs=SysCallRegs; + +{ The following are records for system calls BSD updated } + dirent = packed record + ino : cardinal; { This is not inode number, but "a number + unique for each file on a filesystem"} + reclen : word; + d_type, + namlen : byte; + name : array [0..255] of char; + end; + + pdirent =^dirent; + TDirEnt = dirent; + + TDir= packed record {BSD libc record.} + fd : longint; { file descriptor associated with directory } + loc, { offset in current buffer } + size : cardinal; { amount of data returned by getdirentries} + buf : pdirent; { data buffer, actually a pchar} + len : longint; { size of data buffer } + seek, { magic cookie returned by getdirentries} + rewind: cardinal; { magic cookie for rewinding} + flags : longint; { flags for readdir } + end; + +{ Linux kernel record + TDir = packed record + fd : longint; + loc : longint; + size : integer; + buf : pdirent; + {The following are used in libc, but NOT in the linux kernel sources ??} + nextoff: longint; + dd_max : integer; {size of buf. Irrelevant, as buf is of type dirent} + lock : pointer; + dummy : array[0..1023] of char; + end;} + + PDir =^TDir; + +{$packrecords C} + Stat =record {BSD version} + dev, { inode's device } + ino : cardinal; { inode's number } + mode, { inode protection mode } + nlink : word; { number of hard links } + uid, { user ID of the file's owner } + gid, { group ID of the file's group } + dev_t : cardinal; { device type } + atime, { time of last access } + atime_nsec, { nsec of last access } + mtime, { time of last data modification } + mtime_nsec, { nsec of last data modification } + ctime, { time of last file status change } + ctime_nsec : longint; { nsec of last file status change } + size, { file size, in bytes } + blocks : Int64; { blocks allocated for file } + blksze, { optimal blocksize for I/O } + flags, { user defined flags for file } + filegen : cardinal; { file generation number } + lspare : longint; + qspare : array[0..1] of int64; + end; + + PStat=^Stat; + TStat=Stat; + + Statfs = packed record + spare2, { place holder} + bsize, { fundamental block size} + iosize, { optimal block size } + blocks, { total blocks} + bfree, { blocks free} + bavail, { block available for mortal users} + files, { Total file nodes} + ffree : longint; { file nodes free} + fsid : array[0..1] of longint; + fowner : longint; {mounter uid} + ftype : longint; + fflags : longint; {copy of mount flags} + spare : array [0..1] of longint; { For later use } + fstypename : array[0..15] of char; + mountpoint : array[0..89] of char; + mnfromname : array[0..89] of char; + end; + PStatFS=^StatFS; + TStatFS=StatFS; + + fdSet=array[0..7] of longint;{=256 bits} + pfdset=^fdset; + TFDSet=fdset; + + timeval = packed record + sec,usec:int64; + end; + ptimeval=^timeval; + TTimeVal=timeval; + + timezone = packed record + minuteswest,dsttime:longint; + end; + ptimezone =^timezone; + TTimeZone = timezone; + + utsname = packed record + sysname, + nodename, + release, + version, + machine, + domainname : Array[0..64] of char; + end; + PUTSName=^UTSName; + TUTSName=UTSName; + +{ $Log$ - Revision 1.7 2000-04-10 15:46:52 marco + Revision 1.8 2000-04-16 16:08:30 marco + * Updated PDir to BSD libc layout. (which is totally different from Linux) + + Revision 1.7 2000/04/10 15:46:52 marco * worked all day. probably a lot changed - - Revision 1.5 2000/03/17 12:58:57 marco - * some changes to ftruncate based procs. Added a "0" as extra parameter - - Revision 1.4 2000/02/04 16:55:47 marco - * Fixed tdir, some params need to be 32-bit - - Revision 1.3 2000/02/03 17:05:55 marco - - * Some types fixed/ported. - - Revision 1.2 2000/02/02 16:45:38 marco - * Typo in STAT record - - Revision 1.1 2000/02/02 16:36:09 marco - * Initial version. Copy of linux version, with BSD stat. - -} \ No newline at end of file + + Revision 1.5 2000/03/17 12:58:57 marco + * some changes to ftruncate based procs. Added a "0" as extra parameter + + Revision 1.4 2000/02/04 16:55:47 marco + * Fixed tdir, some params need to be 32-bit + + Revision 1.3 2000/02/03 17:05:55 marco + + * Some types fixed/ported. + + Revision 1.2 2000/02/02 16:45:38 marco + * Typo in STAT record + + Revision 1.1 2000/02/02 16:36:09 marco + * Initial version. Copy of linux version, with BSD stat. + +}