mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-07 15:10:40 +02:00
* update sysnr.inc for x86 and x86_64 to latest kernel
* add splice syscall to linux unit for x86 and x86_64 git-svn-id: trunk@8364 -
This commit is contained in:
parent
3ed12b0229
commit
6fd901181a
@ -313,184 +313,30 @@ Const
|
||||
syscall_nr_inotify_init = 291;
|
||||
syscall_nr_inotify_add_watch = 292;
|
||||
syscall_nr_inotify_rm_watch = 293;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
syscall_nr_migrate_pages = 294;
|
||||
syscall_nr_openat = 295;
|
||||
syscall_nr_mkdirat = 296;
|
||||
syscall_nr_mknodat = 297;
|
||||
syscall_nr_fchownat = 298;
|
||||
syscall_nr_futimesat = 299;
|
||||
syscall_nr_fstatat64 = 300;
|
||||
syscall_nr_unlinkat = 301;
|
||||
syscall_nr_renameat = 302;
|
||||
syscall_nr_linkat = 303;
|
||||
syscall_nr_symlinkat = 304;
|
||||
syscall_nr_readlinkat = 305;
|
||||
syscall_nr_fchmodat = 306;
|
||||
syscall_nr_faccessat = 307;
|
||||
syscall_nr_pselect6 = 308;
|
||||
syscall_nr_ppoll = 309;
|
||||
syscall_nr_unshare = 310;
|
||||
syscall_nr_set_robust_list = 311;
|
||||
syscall_nr_get_robust_list = 312;
|
||||
syscall_nr_splice = 313;
|
||||
syscall_nr_sync_file_range = 314;
|
||||
syscall_nr_tee = 315;
|
||||
syscall_nr_vmsplice = 316;
|
||||
syscall_nr_move_pages = 317;
|
||||
syscall_nr_getcpu = 318;
|
||||
syscall_nr_epoll_pwait = 319;
|
||||
|
||||
|
@ -22,7 +22,7 @@ unit Linux;
|
||||
interface
|
||||
|
||||
uses
|
||||
ctypes;
|
||||
BaseUnix;//, ctypes;
|
||||
|
||||
type
|
||||
TSysInfo = record
|
||||
@ -295,6 +295,28 @@ const CAP_CHOWN = 0;
|
||||
|
||||
LINUX_CAPABILITY_VERSION = $19980330;
|
||||
|
||||
|
||||
//***********************************************SPLICE from kernel 2.6.17+****************************************
|
||||
|
||||
const
|
||||
{* Flags for SPLICE and VMSPLICE. *}
|
||||
SPLICE_F_MOVE = 1; { Move pages instead of copying. }
|
||||
SPLICE_F_NONBLOCK = 2; {* Don't block on the pipe splicing
|
||||
(but we may still block on the fd
|
||||
we splice from/to). *}
|
||||
SPLICE_F_MORE = 4; {* Expect more data. *}
|
||||
SPLICE_F_GIFT = 8; {* Pages passed in are a gift. *}
|
||||
|
||||
{$ifdef x86}
|
||||
{* Splice address range into a pipe. *}
|
||||
function vmsplice (fdout: cInt; iov: PIOVec; count: size_t; flags: cuInt): cInt; {$ifdef FPC_USE_LIBC} cdecl; external name 'vmsplice'; {$ENDIF}
|
||||
|
||||
{* Splice two files together. *}
|
||||
// NOTE: offin and offout should be "off64_t" but we don't have that type. It's an "always 64 bit offset" so I use cint64
|
||||
function splice (fdin: cInt; offin: cInt64; fdout: cInt; offout: cInt64; len: size_t; flags: cuInt): cInt; {$ifdef FPC_USE_LIBC} cdecl; external name 'splice'; {$ENDIF}
|
||||
|
||||
{$endif} // x86
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
@ -416,6 +438,21 @@ begin
|
||||
capset:=do_syscall(syscall_nr_capset,Tsysparam(header),Tsysparam(data));
|
||||
end;
|
||||
|
||||
// TODO: update also on non x86!
|
||||
{$ifdef x86} // didn't update syscall_nr on others yet
|
||||
|
||||
function vmsplice (fdout: cInt; iov: PIOVec; count: size_t; flags: cuInt): cInt;
|
||||
begin
|
||||
vmsplice := do_syscall(syscall_nr_vmsplice, TSysParam(fdout), TSysParam(iov), TSysParam(count), TSysParam(flags));
|
||||
end;
|
||||
|
||||
function splice (fdin: cInt; offin: cint64; fdout: cInt; offout: cint64; len: size_t; flags: cuInt): cInt;
|
||||
begin
|
||||
splice := do_syscall(syscall_nr_splice, TSysParam(fdin), TSysParam(offin), TSysParam(fdout), TSysParam(offout),
|
||||
TSysParam(len), TSysParam(flags));
|
||||
end;
|
||||
{$endif} // x86
|
||||
|
||||
{$endif}
|
||||
|
||||
{ FUTEX_OP is a macro, doesn't exist in libC as function}
|
||||
@ -424,5 +461,4 @@ begin
|
||||
FUTEX_OP := ((op and $F) shl 28) or ((cmp and $F) shl 24) or ((oparg and $FFF) shl 12) or (cmparg and $FFF);
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
@ -316,3 +316,28 @@ const
|
||||
syscall_nr_inotify_add_watch = 254;
|
||||
syscall_nr_inotify_rm_watch = 255;
|
||||
|
||||
syscall_migrate_pages = 256;
|
||||
syscall_openat = 257;
|
||||
syscall_mkdirat = 258;
|
||||
syscall_mknodat = 259;
|
||||
syscall_fchownat = 260;
|
||||
syscall_futimesat = 261;
|
||||
syscall_newfstatat = 262;
|
||||
syscall_unlinkat = 263;
|
||||
syscall_renameat = 264;
|
||||
syscall_linkat = 265;
|
||||
syscall_symlinkat = 266;
|
||||
syscall_readlinkat = 267;
|
||||
syscall_fchmodat = 268;
|
||||
syscall_faccessat = 269;
|
||||
syscall_pselect6 = 270;
|
||||
syscall_ppoll = 271;
|
||||
syscall_unshare = 272;
|
||||
syscall_set_robust_list = 273;
|
||||
syscall_get_robust_list = 274;
|
||||
syscall_splice = 275;
|
||||
syscall_tee = 276;
|
||||
syscall_sync_file_range = 277;
|
||||
syscall_vmsplice = 278;
|
||||
syscall_move_pages = 279;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user