mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-01 07:46:28 +02:00
272 lines
9.4 KiB
PHP
272 lines
9.4 KiB
PHP
{
|
|
$Id$
|
|
This file is part of the Free Pascal run time library.
|
|
Copyright (c) 2001 by Free Pascal development team
|
|
|
|
Types and structures for the BaseUnix unit.
|
|
|
|
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.
|
|
|
|
***********************************************************************}
|
|
|
|
{***********************************************************************}
|
|
{ Base Unix Structures }
|
|
{***********************************************************************}
|
|
|
|
{$i ptypes.inc}
|
|
|
|
CONST
|
|
SYS_NMLM = 65;
|
|
UTSNAME_LENGTH = SYS_NMLM;
|
|
UTSNAME_NODENAME_LENGTH = UTSNAME_LENGTH;
|
|
{$ifdef usedomain}
|
|
UTSNAME_DOMAIN_LENGTH = UTSNAME_LENGTH;
|
|
{$endif}
|
|
|
|
TYPE
|
|
Blksize_t = cuint;
|
|
Blkcnt_t = cuint;
|
|
Ino64_t = cint64;
|
|
Off64_t = cint64;
|
|
|
|
TBlkSize = BlkSize_t;
|
|
PBlkSize = ^BlkSize_t;
|
|
TBlkCnt = Blkcnt_t;
|
|
PBlkCnt = ^Blkcnt_t;
|
|
TIno64 = Ino64_t;
|
|
PIno64 = ^Ino64_t;
|
|
TOff64 = Off64_t;
|
|
POff64 = ^Off64_t;
|
|
|
|
{ system information services }
|
|
UtsName = Record
|
|
Sysname : Array[0..UTSNAME_LENGTH -1] OF Char; // Name of this OS
|
|
Nodename: Array[0..UTSNAME_NODENAME_LENGTH-1] OF Char; // Name of this network node.
|
|
Release : Array[0..UTSNAME_LENGTH -1] OF Char; // Release level.
|
|
Version : Array[0..UTSNAME_LENGTH -1] OF Char; // Version level.
|
|
Machine : Array[0..UTSNAME_LENGTH -1] OF Char; // Hardware type.
|
|
{$ifdef usedomain}
|
|
Domain : array[0..UTSNAME_DOMAIN_LENGTH-1] of char; // Linux addition "Domain"
|
|
{$endif}
|
|
end;
|
|
TUtsName = UtsName;
|
|
PUtsName = TUtsName;
|
|
|
|
Stat = Packed Record // No unix typing because of differences
|
|
// kernel <->libc
|
|
st_dev : word;
|
|
pad1 : word;
|
|
st_ino : longint;
|
|
st_mode,
|
|
nlink,
|
|
uid,
|
|
gid : word;
|
|
rdev : word;
|
|
pad2 : word;
|
|
st_size,
|
|
blksze,
|
|
blocks,
|
|
atime,
|
|
unused1,
|
|
mtime,
|
|
unused2,
|
|
ctime,
|
|
unused3,
|
|
unused4,
|
|
unused5 : longint;
|
|
end;
|
|
TStat = Stat;
|
|
PStat = ^Stat;
|
|
|
|
|
|
{$ifdef notused} // 64-bit support needs some work still :-)
|
|
{ file characteristics services }
|
|
stat64 = record
|
|
st_dev : dev_t; // inode's device
|
|
pad1 : cushort;
|
|
{$ifdef 64bitfs} // ??
|
|
__st_ino : ino_t;
|
|
{$else}
|
|
st_ino : ino_t; // inode's number
|
|
{$endif}
|
|
st_mode : mode_t; // inode protection mode
|
|
st_nlink : nlink_t; // number of hard links
|
|
st_uid : uid_t; // user ID of the file's owner
|
|
st_gid : gid_t; // group ID of the file's group
|
|
st_rdev : dev_t; // device type
|
|
pad2 : cushort;
|
|
{$ifdef 64bitfs}
|
|
st_size : off64_t; // file size, in bytes
|
|
{$else}
|
|
st_size : off_t; // file size, in bytes
|
|
{$endif}
|
|
st_blksize : blksize_t; // optimal blocksize for I/O
|
|
{$ifdef 64bitfs}
|
|
st_blocks : blkcnt64_t; // blocks allocated for file
|
|
{$else}
|
|
st_blocks : blkcnt_t; // blocks allocated for file
|
|
{$endif}
|
|
st_atime : time_t; // time of last access
|
|
unused1 : culong;
|
|
st_mtime : time_t; // time of last data modification
|
|
unused2 : culong;
|
|
st_ctime : time_t; // time of last file status change
|
|
unused3 : culong;
|
|
{$ifdef 64bitfs}
|
|
st_ino : ino64_t
|
|
{$else}
|
|
unused4 : culong;
|
|
unused5 : culong;
|
|
{$endif}
|
|
end;
|
|
{$endif}
|
|
|
|
{ directory services }
|
|
|
|
Dirent = packed record
|
|
{$ifndef 64bitfs}
|
|
d_fileno : ino_t; // file number of entry
|
|
d_off : off_t;
|
|
{$else}
|
|
d_fileno : ino64_t; // file number of entry
|
|
d_off : off64_t;
|
|
{$endif}
|
|
d_reclen : cushort; // length of string in d_name
|
|
{$ifdef Uselibc} // Libc different from kernel record!
|
|
d_type : cuchar; // file type, see below
|
|
{$endif}
|
|
d_name : array[0..(255 + 1)-1] of char; // name must be no longer than this
|
|
end;
|
|
TDirent = Dirent;
|
|
pDirent = ^Dirent;
|
|
|
|
|
|
|
|
|
|
{$ifdef oldreaddir}
|
|
{ Still old one. This is a userland struct}
|
|
|
|
Dir = packed record
|
|
fd : integer;
|
|
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;
|
|
end;
|
|
{$else}
|
|
// new libc one. NOTE that off_t must be real, so 64-bit ifdef
|
|
// 64bitsfs
|
|
Dir = Record // packing doesn't matter. This is a userland struct.
|
|
fd : cint;
|
|
data : pchar;
|
|
allocation: size_t;
|
|
_size : size_t;
|
|
offset : size_t;
|
|
filepos : off_t;
|
|
end;
|
|
{$endif}
|
|
|
|
TDir = Dir;
|
|
pDir = ^Dir;
|
|
|
|
|
|
UTimBuf = Record
|
|
actime : time_t;
|
|
modtime : time_t;
|
|
end;
|
|
|
|
TUtimBuf = UtimBuf;
|
|
pUtimBuf = ^UtimBuf;
|
|
|
|
FLock = Record
|
|
l_type : cshort; { lock type: read/write, etc. }
|
|
l_whence: cshort; { type of l_start }
|
|
{$ifdef 64bitfs}
|
|
l_start : off64_t; { starting offset }
|
|
l_len : off64_t; { len = 0 means until end of file }
|
|
{$else}
|
|
l_start : off_t; { starting offset }
|
|
l_len : off_t; { len = 0 means until end of file }
|
|
{$endif}
|
|
l_pid : pid_t; { lock owner }
|
|
End;
|
|
|
|
tms = packed Record
|
|
tms_utime : clock_t; { User CPU time }
|
|
tms_stime : clock_t; { System CPU time }
|
|
tms_cutime : clock_t; { User CPU time of terminated child procs }
|
|
tms_cstime : clock_t; { System CPU time of terminated child procs }
|
|
end;
|
|
TTms = tms;
|
|
PTms = ^tms;
|
|
|
|
{***********************************************************************}
|
|
{ POSIX CONSTANT ROUTINE DEFINITIONS }
|
|
{***********************************************************************}
|
|
CONST
|
|
{ access routine - these maybe OR'ed together }
|
|
F_OK = 0; { test for existence of file }
|
|
R_OK = 4; { test for read permission on file }
|
|
W_OK = 2; { test for write permission on file }
|
|
X_OK = 1; { test for execute or search permission }
|
|
{ seek routine }
|
|
SEEK_SET = 0; { seek from beginning of file }
|
|
SEEK_CUR = 1; { seek from current position }
|
|
SEEK_END = 2; { seek from end of file }
|
|
{ open routine }
|
|
{ File access modes for `open' and `fcntl'. }
|
|
O_RDONLY = 0; { Open read-only. }
|
|
O_WRONLY = 1; { Open write-only. }
|
|
O_RDWR = 2; { Open read/write. }
|
|
{ Bits OR'd into the second argument to open. }
|
|
O_CREAT = $40; { Create file if it doesn't exist. }
|
|
O_EXCL = $80; { Fail if file already exists. }
|
|
O_TRUNC = $200; { Truncate file to zero length. }
|
|
O_NOCTTY = $100; { Don't assign a controlling terminal. }
|
|
{ File status flags for `open' and `fcntl'. }
|
|
O_APPEND = $400; { Writes append to the file. }
|
|
O_NONBLOCK= $800; { Non-blocking I/O. }
|
|
|
|
{ mode_t possible values }
|
|
S_IRUSR = %0100000000; { Read permission for owner }
|
|
S_IWUSR = %0010000000; { Write permission for owner }
|
|
S_IXUSR = %0001000000; { Exec permission for owner }
|
|
S_IRGRP = %0000100000; { Read permission for group }
|
|
S_IWGRP = %0000010000; { Write permission for group }
|
|
S_IXGRP = %0000001000; { Exec permission for group }
|
|
S_IROTH = %0000000100; { Read permission for world }
|
|
S_IWOTH = %0000000010; { Write permission for world }
|
|
S_IXOTH = %0000000001; { Exec permission for world }
|
|
|
|
{ Used for waitpid }
|
|
WNOHANG = 1; { don't block waiting }
|
|
WUNTRACED = 2; { report status of stopped children }
|
|
|
|
|
|
{*************************************************************************}
|
|
{ SIGNALS }
|
|
{*************************************************************************}
|
|
|
|
{$i signal.inc}
|
|
|
|
// function geterrno:longint;
|
|
// procedure seterrno(i:longint);
|
|
|
|
{
|
|
$Log$
|
|
Revision 1.1 2002-12-18 16:43:26 marco
|
|
* new unix rtl, linux part.....
|
|
|
|
Revision 1.1 2002/11/12 14:37:59 marco
|
|
* Parts of new unix rtl
|
|
|
|
}
|