mirror of
https://github.com/hanzoai/visor.git
synced 2026-09-24 17:04:14 +00:00
urpc encodes with encoding/json, which walks the payload on every call: a realistic control.ExecArgs costs 7084ns and 10 allocations to cross. ZAP reads a field at a constant offset out of the buffer that arrived, so the same payload is 740ns and one allocation -- but only if the offsets are stated, and a stated offset that is wrong is silent corruption rather than a compile error. So state them from the types themselves. //tools/zap reflects over the payloads at build time and writes the wire as Go source with the offsets as constants. It lives inside Bazel because pkg/sentry/control cannot be imported from outside it: the *_go_proto packages it depends on have no source in the tree. Six payloads had no layout to state. A map, an interface and a type from another module have no offsets, so each is answered in the type: SaveOpts.Metadata and StartContainerArgs.InitialCgroups/Limits cross as lists of pairs; boot.Route.Destination restates net.IPNet as Subnet; OpenMountArgs restates the OCI mount fields the call actually uses; StartArgs.Spec and SinkConfig.Config carry their documents as the bytes they arrived as; MetricsRegistrationResponse carries the protocol buffer the same way; and seccheck's session options become a type instead of a map of any. ExecArgs and MetricsExportData still have none: ExecArgs holds live kernel objects behind an interface, and MetricsExportData reaches a prometheus snapshot whose labels are a map. Co-authored-by: Hanzo Dev <[email protected]>
206 lines
6.2 KiB
Python
206 lines
6.2 KiB
Python
load("//tools:defs.bzl", "go_library", "go_test")
|
|
|
|
package(
|
|
default_applicable_licenses = ["//:license"],
|
|
licenses = ["notice"],
|
|
)
|
|
|
|
go_library(
|
|
name = "boot",
|
|
srcs = [
|
|
"autosave.go",
|
|
"compat.go",
|
|
"compat_amd64.go",
|
|
"compat_arm64.go",
|
|
"controller.go",
|
|
"debug.go",
|
|
"events.go",
|
|
"fscheckpoint.go",
|
|
"limits.go",
|
|
"loader.go",
|
|
"mount_hints.go",
|
|
"network.go",
|
|
"nvproxy.go",
|
|
"restore.go",
|
|
"seccheck.go",
|
|
"seccomp.go",
|
|
"strace.go",
|
|
"tpuproxy.go",
|
|
"vfs.go",
|
|
"zap.go",
|
|
],
|
|
visibility = [
|
|
"//pkg/test:__subpackages__",
|
|
"//runsc:__subpackages__",
|
|
"//test:__subpackages__",
|
|
"//tools/zap:__pkg__",
|
|
],
|
|
deps = [
|
|
"//pkg/abi",
|
|
"//pkg/abi/ib",
|
|
"//pkg/abi/linux",
|
|
"//pkg/abi/nvgpu",
|
|
"//pkg/bpf",
|
|
"//pkg/cleanup",
|
|
"//pkg/context",
|
|
"//pkg/control/server",
|
|
"//pkg/coverage",
|
|
"//pkg/cpuid",
|
|
"//pkg/devutil",
|
|
"//pkg/errors/linuxerr",
|
|
"//pkg/eventchannel",
|
|
"//pkg/fd",
|
|
"//pkg/flipcall",
|
|
"//pkg/fspath",
|
|
"//pkg/fsutil",
|
|
"//pkg/gomaxprocs",
|
|
"//pkg/hostarch",
|
|
"//pkg/log",
|
|
"//pkg/memutil",
|
|
"//pkg/metric",
|
|
"//pkg/pinring",
|
|
"//pkg/rand",
|
|
"//pkg/rdma",
|
|
"//pkg/refs",
|
|
"//pkg/sentry/arch",
|
|
"//pkg/sentry/arch:registers_go_proto",
|
|
"//pkg/sentry/checkpoint",
|
|
"//pkg/sentry/control",
|
|
"//pkg/sentry/devices/memdev",
|
|
"//pkg/sentry/devices/nvproxy",
|
|
"//pkg/sentry/devices/nvproxy/nvconf",
|
|
"//pkg/sentry/devices/rdmaproxy",
|
|
"//pkg/sentry/devices/rdmaproxy/cxproxy",
|
|
"//pkg/sentry/devices/rdmaproxy/efaproxy",
|
|
"//pkg/sentry/devices/rdmaproxy/genericproxy",
|
|
"//pkg/sentry/devices/tpuproxy",
|
|
"//pkg/sentry/devices/tpuproxy/vfio",
|
|
"//pkg/sentry/devices/ttydev",
|
|
"//pkg/sentry/devices/tundev",
|
|
"//pkg/sentry/fdimport",
|
|
"//pkg/sentry/fscheckpoint",
|
|
"//pkg/sentry/fscheckpoint:fscheckpoint_proto_go_proto",
|
|
"//pkg/sentry/fsimpl/cgroup2fs",
|
|
"//pkg/sentry/fsimpl/cgroupfs",
|
|
"//pkg/sentry/fsimpl/dev",
|
|
"//pkg/sentry/fsimpl/devpts",
|
|
"//pkg/sentry/fsimpl/devtmpfs",
|
|
"//pkg/sentry/fsimpl/erofs",
|
|
"//pkg/sentry/fsimpl/fuse",
|
|
"//pkg/sentry/fsimpl/gofer",
|
|
"//pkg/sentry/fsimpl/host",
|
|
"//pkg/sentry/fsimpl/mqfs",
|
|
"//pkg/sentry/fsimpl/overlay",
|
|
"//pkg/sentry/fsimpl/proc",
|
|
"//pkg/sentry/fsimpl/sys",
|
|
"//pkg/sentry/fsimpl/tmpfs",
|
|
"//pkg/sentry/fsimpl/user",
|
|
"//pkg/sentry/inet",
|
|
"//pkg/sentry/kernel",
|
|
"//pkg/sentry/kernel/auth",
|
|
"//pkg/sentry/kernel/version",
|
|
"//pkg/sentry/limits",
|
|
"//pkg/sentry/loader",
|
|
"//pkg/sentry/pgalloc",
|
|
"//pkg/sentry/platform",
|
|
"//pkg/sentry/platform/platforms",
|
|
"//pkg/sentry/seccheck",
|
|
"//pkg/sentry/seccheck/points:points_go_proto",
|
|
"//pkg/sentry/seccheck/sinks/null",
|
|
"//pkg/sentry/seccheck/sinks/remote",
|
|
"//pkg/sentry/socket/hostinet",
|
|
"//pkg/sentry/socket/netfilter",
|
|
"//pkg/sentry/socket/netlink",
|
|
"//pkg/sentry/socket/netlink/netfilter",
|
|
"//pkg/sentry/socket/netlink/rdma",
|
|
"//pkg/sentry/socket/netlink/route",
|
|
"//pkg/sentry/socket/netlink/uevent",
|
|
"//pkg/sentry/socket/netstack",
|
|
"//pkg/sentry/socket/plugin",
|
|
"//pkg/sentry/socket/unix",
|
|
"//pkg/sentry/state",
|
|
"//pkg/sentry/state/checkpointfiles",
|
|
"//pkg/sentry/state/stateio",
|
|
"//pkg/sentry/state/stateipc",
|
|
"//pkg/sentry/strace",
|
|
"//pkg/sentry/time",
|
|
"//pkg/sentry/unimpl:unimplemented_syscall_go_proto",
|
|
"//pkg/sentry/uniqueid",
|
|
"//pkg/sentry/usage",
|
|
"//pkg/sentry/vfs",
|
|
"//pkg/sentry/watchdog",
|
|
"//pkg/sighandling",
|
|
"//pkg/state/statefile",
|
|
"//pkg/sync",
|
|
"//pkg/tcpip",
|
|
"//pkg/tcpip/link/ethernet",
|
|
"//pkg/tcpip/link/fdbased",
|
|
"//pkg/tcpip/link/loopback",
|
|
"//pkg/tcpip/link/qdisc/fifo",
|
|
"//pkg/tcpip/link/qdisc/tbf",
|
|
"//pkg/tcpip/link/sniffer",
|
|
"//pkg/tcpip/link/xdp",
|
|
"//pkg/tcpip/network/arp",
|
|
"//pkg/tcpip/network/ipv4",
|
|
"//pkg/tcpip/network/ipv6",
|
|
"//pkg/tcpip/nftables",
|
|
"//pkg/tcpip/stack",
|
|
"//pkg/tcpip/transport/icmp",
|
|
"//pkg/tcpip/transport/raw",
|
|
"//pkg/tcpip/transport/tcp",
|
|
"//pkg/tcpip/transport/udp",
|
|
"//pkg/timing",
|
|
"//pkg/unet",
|
|
"//pkg/urpc",
|
|
"//runsc/boot/filter",
|
|
"//runsc/boot/portforward",
|
|
"//runsc/boot/pprof",
|
|
"//runsc/boot/procfs",
|
|
"//runsc/config",
|
|
"//runsc/profile",
|
|
"//runsc/specutils",
|
|
"//runsc/specutils/seccomp",
|
|
"//runsc/starttime",
|
|
"//runsc/version",
|
|
"@com_github_moby_sys_capability//:go_default_library",
|
|
"@com_github_opencontainers_runtime_spec//specs-go:go_default_library",
|
|
"@com_github_zap_proto_go//:go",
|
|
"@org_golang_google_protobuf//proto:go_default_library",
|
|
"@org_golang_x_sys//unix:go_default_library",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "boot_test",
|
|
size = "small",
|
|
srcs = [
|
|
"compat_test.go",
|
|
"loader_test.go",
|
|
"mount_hints_test.go",
|
|
"vfs_test.go",
|
|
],
|
|
library = ":boot",
|
|
deps = [
|
|
"//pkg/abi/linux",
|
|
"//pkg/control/server",
|
|
"//pkg/cpuid",
|
|
"//pkg/fspath",
|
|
"//pkg/lisafs",
|
|
"//pkg/log",
|
|
"//pkg/sentry/fsimpl/erofs",
|
|
"//pkg/sentry/kernel/auth",
|
|
"//pkg/sentry/seccheck",
|
|
"//pkg/sentry/vfs",
|
|
"//pkg/sync",
|
|
"//pkg/unet",
|
|
"//runsc/config",
|
|
"//runsc/flag",
|
|
"//runsc/fsgofer",
|
|
"//runsc/specutils",
|
|
"@com_github_google_go_cmp//cmp:go_default_library",
|
|
"@com_github_moby_sys_capability//:go_default_library",
|
|
"@com_github_opencontainers_runtime_spec//specs-go:go_default_library",
|
|
"@org_golang_x_sys//unix:go_default_library",
|
|
],
|
|
)
|