117 lines
2.5 KiB
Python
117 lines
2.5 KiB
Python
load("@io_bazel_rules_go//go:def.bzl", "go_test")
|
|
load("//tools/go_stateify:defs.bzl", "go_library")
|
|
load("//tools/go_generics:defs.bzl", "go_template", "go_template_instance")
|
|
|
|
package(licenses = ["notice"])
|
|
|
|
config_setting(
|
|
name = "aarch64",
|
|
constraint_values = ["@bazel_tools//platforms:aarch64"],
|
|
)
|
|
|
|
go_template(
|
|
name = "generic_walker",
|
|
srcs = ["walker_amd64.go"],
|
|
opt_types = [
|
|
"Visitor",
|
|
],
|
|
visibility = [":__pkg__"],
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "walker_map",
|
|
out = "walker_map.go",
|
|
package = "pagetables",
|
|
prefix = "map",
|
|
template = ":generic_walker",
|
|
types = {
|
|
"Visitor": "mapVisitor",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "walker_unmap",
|
|
out = "walker_unmap.go",
|
|
package = "pagetables",
|
|
prefix = "unmap",
|
|
template = ":generic_walker",
|
|
types = {
|
|
"Visitor": "unmapVisitor",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "walker_lookup",
|
|
out = "walker_lookup.go",
|
|
package = "pagetables",
|
|
prefix = "lookup",
|
|
template = ":generic_walker",
|
|
types = {
|
|
"Visitor": "lookupVisitor",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "walker_empty",
|
|
out = "walker_empty.go",
|
|
package = "pagetables",
|
|
prefix = "empty",
|
|
template = ":generic_walker",
|
|
types = {
|
|
"Visitor": "emptyVisitor",
|
|
},
|
|
)
|
|
|
|
go_template_instance(
|
|
name = "walker_check",
|
|
out = "walker_check.go",
|
|
package = "pagetables",
|
|
prefix = "check",
|
|
template = ":generic_walker",
|
|
types = {
|
|
"Visitor": "checkVisitor",
|
|
},
|
|
)
|
|
|
|
go_library(
|
|
name = "pagetables",
|
|
srcs = [
|
|
"allocator.go",
|
|
"allocator_unsafe.go",
|
|
"pagetables.go",
|
|
"pagetables_aarch64.go",
|
|
"pagetables_amd64.go",
|
|
"pagetables_arm64.go",
|
|
"pagetables_x86.go",
|
|
"pcids_x86.go",
|
|
"walker_amd64.go",
|
|
"walker_arm64.go",
|
|
"walker_empty.go",
|
|
"walker_lookup.go",
|
|
"walker_map.go",
|
|
"walker_unmap.go",
|
|
],
|
|
importpath = "gvisor.dev/gvisor/pkg/sentry/platform/ring0/pagetables",
|
|
visibility = [
|
|
"//pkg/sentry/platform/kvm:__subpackages__",
|
|
"//pkg/sentry/platform/ring0:__subpackages__",
|
|
],
|
|
deps = [
|
|
"//pkg/sentry/usermem",
|
|
"//pkg/sync",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "pagetables_test",
|
|
size = "small",
|
|
srcs = [
|
|
"pagetables_amd64_test.go",
|
|
"pagetables_arm64_test.go",
|
|
"pagetables_test.go",
|
|
"walker_check.go",
|
|
],
|
|
embed = [":pagetables"],
|
|
deps = ["//pkg/sentry/usermem"],
|
|
)
|