summaryrefslogtreecommitdiffhomepage
path: root/pkg/abi/linux
diff options
context:
space:
mode:
authorZach Koopmans <zkoopmans@google.com>2021-06-16 14:06:01 -0700
committergVisor bot <gvisor-bot@google.com>2021-06-16 14:08:52 -0700
commit63b4f6e296a8f131ec969a685f0e31663be58385 (patch)
tree2bf10bff66a654b1bca5d27598a142fc68ca9430 /pkg/abi/linux
parent47149b7c4275ddd4404d86eddab6feab4f059ed3 (diff)
[syserror] Refactor linuxerr and error package.
Move Error struct to pkg/errors package for use in multiple places. Move linuxerr static definitions under pkg/errors/linuxerr. Add a lookup list for quick lookup of *errors.Error by errno. This is useful when converting syserror errors and unix.Errno/syscall.Errrno values to *errors.Error. Update benchmarks routines to include conversions. The below benchmarks show *errors.Error usage to be comparable to using unix.Errno. BenchmarkAssignUnix BenchmarkAssignUnix-32 787875022 1.284 ns/op BenchmarkAssignLinuxerr BenchmarkAssignLinuxerr-32 1000000000 1.209 ns/op BenchmarkAssignSyserror BenchmarkAssignSyserror-32 759269229 1.429 ns/op BenchmarkCompareUnix BenchmarkCompareUnix-32 1000000000 1.310 ns/op BenchmarkCompareLinuxerr BenchmarkCompareLinuxerr-32 1000000000 1.241 ns/op BenchmarkCompareSyserror BenchmarkCompareSyserror-32 147196165 8.248 ns/op BenchmarkSwitchUnix BenchmarkSwitchUnix-32 373233556 3.664 ns/op BenchmarkSwitchLinuxerr BenchmarkSwitchLinuxerr-32 476323929 3.294 ns/op BenchmarkSwitchSyserror BenchmarkSwitchSyserror-32 39293408 29.62 ns/op BenchmarkReturnUnix BenchmarkReturnUnix-32 1000000000 0.5042 ns/op BenchmarkReturnLinuxerr BenchmarkReturnLinuxerr-32 1000000000 0.8152 ns/op BenchmarkConvertUnixLinuxerr BenchmarkConvertUnixLinuxerr-32 739948875 1.547 ns/op BenchmarkConvertUnixLinuxerrZero BenchmarkConvertUnixLinuxerrZero-32 977733974 1.489 ns/op PiperOrigin-RevId: 379806801
Diffstat (limited to 'pkg/abi/linux')
-rw-r--r--pkg/abi/linux/BUILD1
-rw-r--r--pkg/abi/linux/errno/BUILD9
-rw-r--r--pkg/abi/linux/errno/errno.go (renamed from pkg/abi/linux/errors.go)14
3 files changed, 17 insertions, 7 deletions
diff --git a/pkg/abi/linux/BUILD b/pkg/abi/linux/BUILD
index 38288bdb7..eb004a7f6 100644
--- a/pkg/abi/linux/BUILD
+++ b/pkg/abi/linux/BUILD
@@ -21,7 +21,6 @@ go_library(
"epoll.go",
"epoll_amd64.go",
"epoll_arm64.go",
- "errors.go",
"errqueue.go",
"eventfd.go",
"exec.go",
diff --git a/pkg/abi/linux/errno/BUILD b/pkg/abi/linux/errno/BUILD
new file mode 100644
index 000000000..d003342d5
--- /dev/null
+++ b/pkg/abi/linux/errno/BUILD
@@ -0,0 +1,9 @@
+load("//tools:defs.bzl", "go_library")
+
+package(licenses = ["notice"])
+
+go_library(
+ name = "errno",
+ srcs = ["errno.go"],
+ visibility = ["//visibility:public"],
+)
diff --git a/pkg/abi/linux/errors.go b/pkg/abi/linux/errno/errno.go
index b08b2687e..5a09c6605 100644
--- a/pkg/abi/linux/errors.go
+++ b/pkg/abi/linux/errno/errno.go
@@ -12,10 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package linux
+// Package errno holds errno codes for abi/linux.
+package errno
// Errno represents a Linux errno value.
-type Errno int
+type Errno uint32
// Errno values from include/uapi/asm-generic/errno-base.h.
const (
@@ -60,8 +61,8 @@ const (
ENOLCK
ENOSYS
ENOTEMPTY
- ELOOP //40
- _ // Skip for EWOULDBLOCK = EAGAIN
+ ELOOP // 40
+ _ // Skip for EWOULDBLOCK = EAGAIN.
ENOMSG //42
EIDRM
ECHRNG
@@ -78,13 +79,13 @@ const (
ENOANO
EBADRQC
EBADSLT
- _ // Skip for EDEADLOCK = EDEADLK
+ _ // Skip for EDEADLOCK = EDEADLK.
EBFONT
ENOSTR // 60
ENODATA
ETIME
ENOSR
- ENONET
+ _ // Skip for ENOENT = ENONET.
ENOPKG
EREMOTE
ENOLINK
@@ -160,4 +161,5 @@ const (
const (
EWOULDBLOCK = EAGAIN
EDEADLOCK = EDEADLK
+ ENONET = ENOENT
)