mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 15:17:31 -04:00
unix: implement Vmsplice, add SPLICE_F_* constants
Fixes golang/go#19125 Change-Id: I822b6f260f980178da29a552c6170cb261c8e254 Reviewed-on: https://go-review.googlesource.com/37152 Run-TryBot: Matt Layher <mdlayher@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
committed by
Ian Lance Taylor
parent
e24f485414
commit
075e574b89
+2
-1
@@ -345,6 +345,7 @@ ccflags="$@"
|
|||||||
$2 ~ /^CLOCK_/ ||
|
$2 ~ /^CLOCK_/ ||
|
||||||
$2 ~ /^CAN_/ ||
|
$2 ~ /^CAN_/ ||
|
||||||
$2 ~ /^ALG_/ ||
|
$2 ~ /^ALG_/ ||
|
||||||
|
$2 ~ /^SPLICE_/ ||
|
||||||
$2 !~ "WMESGLEN" &&
|
$2 !~ "WMESGLEN" &&
|
||||||
$2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)}
|
$2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)}
|
||||||
$2 ~ /^__WCOREFLAG$/ {next}
|
$2 ~ /^__WCOREFLAG$/ {next}
|
||||||
@@ -460,7 +461,7 @@ main(void)
|
|||||||
printf("\t%d: \"%s\",\n", e, buf);
|
printf("\t%d: \"%s\",\n", e, buf);
|
||||||
}
|
}
|
||||||
printf("}\n\n");
|
printf("}\n\n");
|
||||||
|
|
||||||
printf("\n\n// Signal table\n");
|
printf("\n\n// Signal table\n");
|
||||||
printf("var signals = [...]string {\n");
|
printf("var signals = [...]string {\n");
|
||||||
qsort(signals, nelem(signals), sizeof signals[0], intcmp);
|
qsort(signals, nelem(signals), sizeof signals[0], intcmp);
|
||||||
|
|||||||
+19
-1
@@ -1118,6 +1118,25 @@ func Munmap(b []byte) (err error) {
|
|||||||
//sys Mlockall(flags int) (err error)
|
//sys Mlockall(flags int) (err error)
|
||||||
//sys Munlockall() (err error)
|
//sys Munlockall() (err error)
|
||||||
|
|
||||||
|
// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,
|
||||||
|
// using the specified flags.
|
||||||
|
func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
|
||||||
|
n, _, errno := Syscall6(
|
||||||
|
SYS_VMSPLICE,
|
||||||
|
uintptr(fd),
|
||||||
|
uintptr(unsafe.Pointer(&iovs[0])),
|
||||||
|
uintptr(len(iovs)),
|
||||||
|
uintptr(flags),
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
if errno != 0 {
|
||||||
|
return 0, syscall.Errno(errno)
|
||||||
|
}
|
||||||
|
|
||||||
|
return int(n), nil
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unimplemented
|
* Unimplemented
|
||||||
*/
|
*/
|
||||||
@@ -1245,7 +1264,6 @@ func Munmap(b []byte) (err error) {
|
|||||||
// Utimensat
|
// Utimensat
|
||||||
// Vfork
|
// Vfork
|
||||||
// Vhangup
|
// Vhangup
|
||||||
// Vmsplice
|
|
||||||
// Vserver
|
// Vserver
|
||||||
// Waitid
|
// Waitid
|
||||||
// _Sysctl
|
// _Sysctl
|
||||||
|
|||||||
@@ -1305,6 +1305,10 @@ const (
|
|||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1306,6 +1306,10 @@ const (
|
|||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1229,6 +1229,10 @@ const (
|
|||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1361,6 +1361,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1280,6 +1280,10 @@ const (
|
|||||||
SO_TIMESTAMPING = 0x25
|
SO_TIMESTAMPING = 0x25
|
||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1376,6 +1376,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1376,6 +1376,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1451,6 +1451,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1429,6 +1429,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1428,6 +1428,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1483,6 +1483,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x23
|
SO_TIMESTAMPNS = 0x23
|
||||||
SO_TYPE = 0x3
|
SO_TYPE = 0x3
|
||||||
SO_WIFI_STATUS = 0x29
|
SO_WIFI_STATUS = 0x29
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
@@ -1524,6 +1524,10 @@ const (
|
|||||||
SO_TIMESTAMPNS = 0x21
|
SO_TIMESTAMPNS = 0x21
|
||||||
SO_TYPE = 0x1008
|
SO_TYPE = 0x1008
|
||||||
SO_WIFI_STATUS = 0x25
|
SO_WIFI_STATUS = 0x25
|
||||||
|
SPLICE_F_GIFT = 0x8
|
||||||
|
SPLICE_F_MORE = 0x4
|
||||||
|
SPLICE_F_MOVE = 0x1
|
||||||
|
SPLICE_F_NONBLOCK = 0x2
|
||||||
S_BLKSIZE = 0x200
|
S_BLKSIZE = 0x200
|
||||||
S_IEXEC = 0x40
|
S_IEXEC = 0x40
|
||||||
S_IFBLK = 0x6000
|
S_IFBLK = 0x6000
|
||||||
|
|||||||
Reference in New Issue
Block a user