summaryrefslogtreecommitdiffhomepage
path: root/pkg/abi/linux
diff options
context:
space:
mode:
authorJustine Olshan <justineolshan@google.com>2018-08-10 16:09:52 -0700
committerShentubot <shentubot@google.com>2018-08-10 16:11:01 -0700
commitae6f092fe117a738df34e072ef5ba01a41c89222 (patch)
tree24f8492ac032e39b2a2908f7e1383224b34f6b64 /pkg/abi/linux
parent36c940b093af58d02eb6e7fd186f14cce84a8dd9 (diff)
Implemented the splice(2) syscall.
Currently the implementation matches the behavior of moving data between two file descriptors. However, it does not implement this through zero-copy movement. Thus, this code is a starting point to build the more complex implementation. PiperOrigin-RevId: 208284483 Change-Id: Ibde79520a3d50bc26aead7ad4f128d2be31db14e
Diffstat (limited to 'pkg/abi/linux')
-rw-r--r--pkg/abi/linux/BUILD1
-rw-r--r--pkg/abi/linux/splice.go20
2 files changed, 21 insertions, 0 deletions
diff --git a/pkg/abi/linux/BUILD b/pkg/abi/linux/BUILD
index ac4ceefbc..9a44c2042 100644
--- a/pkg/abi/linux/BUILD
+++ b/pkg/abi/linux/BUILD
@@ -43,6 +43,7 @@ go_library(
"shm.go",
"signal.go",
"socket.go",
+ "splice.go",
"time.go",
"tty.go",
"uio.go",
diff --git a/pkg/abi/linux/splice.go b/pkg/abi/linux/splice.go
new file mode 100644
index 000000000..9331ec84b
--- /dev/null
+++ b/pkg/abi/linux/splice.go
@@ -0,0 +1,20 @@
+// Copyright 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package linux
+
+// Flags for splice(2).
+const (
+ SPLICE_F_NONBLOCK = 2
+)