mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-12 09:29:07 +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_init = 291;
|
||||||
syscall_nr_inotify_add_watch = 292;
|
syscall_nr_inotify_add_watch = 292;
|
||||||
syscall_nr_inotify_rm_watch = 293;
|
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
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
ctypes;
|
BaseUnix;//, ctypes;
|
||||||
|
|
||||||
type
|
type
|
||||||
TSysInfo = record
|
TSysInfo = record
|
||||||
@ -295,6 +295,28 @@ const CAP_CHOWN = 0;
|
|||||||
|
|
||||||
LINUX_CAPABILITY_VERSION = $19980330;
|
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
|
implementation
|
||||||
|
|
||||||
|
|
||||||
@ -416,6 +438,21 @@ begin
|
|||||||
capset:=do_syscall(syscall_nr_capset,Tsysparam(header),Tsysparam(data));
|
capset:=do_syscall(syscall_nr_capset,Tsysparam(header),Tsysparam(data));
|
||||||
end;
|
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}
|
{$endif}
|
||||||
|
|
||||||
{ FUTEX_OP is a macro, doesn't exist in libC as function}
|
{ 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);
|
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;
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -316,3 +316,28 @@ const
|
|||||||
syscall_nr_inotify_add_watch = 254;
|
syscall_nr_inotify_add_watch = 254;
|
||||||
syscall_nr_inotify_rm_watch = 255;
|
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