load("//tools:defs.bzl", "go_library", "go_test", "proto_library") load("//tools/go_generics:defs.bzl", "go_template_instance") package(licenses = ["notice"]) go_template_instance( name = "pending_signals_list", out = "pending_signals_list.go", package = "kernel", prefix = "pendingSignal", template = "//pkg/ilist:generic_list", types = { "Element": "*pendingSignal", "Linker": "*pendingSignal", }, ) go_template_instance( name = "process_group_list", out = "process_group_list.go", package = "kernel", prefix = "processGroup", template = "//pkg/ilist:generic_list", types = { "Element": "*ProcessGroup", "Linker": "*ProcessGroup", }, ) go_template_instance( name = "seqatomic_taskgoroutineschedinfo", out = "seqatomic_taskgoroutineschedinfo_unsafe.go", package = "kernel", suffix = "TaskGoroutineSchedInfo", template = "//pkg/sync/seqatomic:generic_seqatomic", types = { "Value": "TaskGoroutineSchedInfo", }, ) go_template_instance( name = "session_list", out = "session_list.go", package = "kernel", prefix = "session", template = "//pkg/ilist:generic_list", types = { "Element": "*Session", "Linker": "*Session", }, ) go_template_instance( name = "task_list", out = "task_list.go", package = "kernel", prefix = "task", template = "//pkg/ilist:generic_list", types = { "Element": "*Task", "Linker": "*Task", }, ) go_template_instance( name = "socket_list", out = "socket_list.go", package = "kernel", prefix = "socket", template = "//pkg/ilist:generic_list", types = { "Element": "*SocketRecordVFS1", "Linker": "*SocketRecordVFS1", }, ) go_template_instance( name = "fd_table_refs", out = "fd_table_refs.go", package = "kernel", prefix = "FDTable", template = "//pkg/refsvfs2:refs_template", types = { "T": "FDTable", }, ) go_template_instance( name = "fs_context_refs", out = "fs_context_refs.go", package = "kernel", prefix = "FSContext", template = "//pkg/refsvfs2:refs_template", types = { "T": "FSContext", }, ) go_template_instance( name = "ipc_namespace_refs", out = "ipc_namespace_refs.go", package = "kernel", prefix = "IPCNamespace", template = "//pkg/refsvfs2:refs_template", types = { "T": "IPCNamespace", }, ) go_template_instance( name = "process_group_refs", out = "process_group_refs.go", package = "kernel", prefix = "ProcessGroup", template = "//pkg/refsvfs2:refs_template", types = { "T": "ProcessGroup", }, ) go_template_instance( name = "session_refs", out = "session_refs.go", package = "kernel", prefix = "Session", template = "//pkg/refsvfs2:refs_template", types = { "T": "Session", }, ) proto_library( name = "uncaught_signal", srcs = ["uncaught_signal.proto"], visibility = ["//visibility:public"], deps = ["//pkg/sentry/arch:registers_proto"], ) go_library( name = "kernel", srcs = [ "abstract_socket_namespace.go", "aio.go", "cgroup.go", "context.go", "fd_table.go", "fd_table_refs.go", "fd_table_unsafe.go", "fs_context.go", "fs_context_refs.go", "ipc_namespace.go", "ipc_namespace_refs.go", "kcov.go", "kcov_unsafe.go", "kernel.go", "kernel_opts.go", "kernel_state.go", "pending_signals.go", "pending_signals_list.go", "pending_signals_state.go", "posixtimer.go", "process_group_list.go", "process_group_refs.go", "ptrace.go", "ptrace_amd64.go", "ptrace_arm64.go", "rseq.go", "seccomp.go", "seqatomic_taskgoroutineschedinfo_unsafe.go", "session_list.go", "session_refs.go", "sessions.go", "signal.go", "signal_handlers.go", "socket_list.go", "syscalls.go", "syscalls_state.go", "syslog.go", "task.go", "task_acct.go", "task_block.go", "task_cgroup.go", "task_clone.go", "task_context.go", "task_exec.go", "task_exit.go", "task_futex.go", "task_identity.go", "task_image.go", "task_list.go", "task_log.go", "task_net.go", "task_run.go", "task_sched.go", "task_signals.go", "task_start.go", "task_stop.go", "task_syscall.go", "task_usermem.go", "task_work.go", "thread_group.go", "threads.go", "timekeeper.go", "timekeeper_state.go", "tty.go", "uts_namespace.go", "vdso.go", "version.go", ], imports = [ "gvisor.dev/gvisor/pkg/bpf", "gvisor.dev/gvisor/pkg/sentry/device", "gvisor.dev/gvisor/pkg/tcpip", ], marshal = True, visibility = ["//:sandbox"], deps = [ ":uncaught_signal_go_proto", "//pkg/sentry/kernel/ipc", "//pkg/abi", "//pkg/abi/linux", "//pkg/abi/linux/errno", "//pkg/amutex", "//pkg/bitmap", "//pkg/bits", "//pkg/bpf", "//pkg/cleanup", "//pkg/context", "//pkg/coverage", "//pkg/cpuid", "//pkg/errors", "//pkg/errors/linuxerr", "//pkg/eventchannel", "//pkg/fspath", "//pkg/goid", "//pkg/hostarch", "//pkg/log", "//pkg/marshal", "//pkg/marshal/primitive", "//pkg/metric", "//pkg/refs", "//pkg/refsvfs2", "//pkg/safemem", "//pkg/secio", "//pkg/sentry/arch", "//pkg/sentry/device", "//pkg/sentry/fs", "//pkg/sentry/fs/lock", "//pkg/sentry/fs/timerfd", "//pkg/sentry/fsbridge", "//pkg/sentry/fsimpl/kernfs", "//pkg/sentry/fsimpl/pipefs", "//pkg/sentry/fsimpl/sockfs", "//pkg/sentry/fsimpl/timerfd", "//pkg/sentry/fsimpl/tmpfs", "//pkg/sentry/hostcpu", "//pkg/sentry/inet", "//pkg/sentry/kernel/auth", "//pkg/sentry/kernel/epoll", "//pkg/sentry/kernel/futex", "//pkg/sentry/kernel/mq", "//pkg/sentry/kernel/msgqueue", "//pkg/sentry/kernel/sched", "//pkg/sentry/kernel/semaphore", "//pkg/sentry/kernel/shm", "//pkg/sentry/kernel/time", "//pkg/sentry/limits", "//pkg/sentry/loader", "//pkg/sentry/memmap", "//pkg/sentry/mm", "//pkg/sentry/pgalloc", "//pkg/sentry/platform", "//pkg/sentry/seccheck", "//pkg/sentry/socket/netlink/port", "//pkg/sentry/socket/unix/transport", "//pkg/sentry/time", "//pkg/sentry/unimpl", "//pkg/sentry/unimpl:unimplemented_syscall_go_proto", "//pkg/sentry/uniqueid", "//pkg/sentry/usage", "//pkg/sentry/vfs", "//pkg/state", "//pkg/state/statefile", "//pkg/state/wire", "//pkg/sync", "//pkg/syserr", "//pkg/tcpip", "//pkg/tcpip/stack", "//pkg/usermem", "//pkg/waiter", "@org_golang_x_sys//unix:go_default_library", ], ) go_test( name = "kernel_test", size = "small", srcs = [ "fd_table_test.go", "table_test.go", "task_test.go", "timekeeper_test.go", ], library = ":kernel", deps = [ "//pkg/abi", "//pkg/context", "//pkg/errors/linuxerr", "//pkg/hostarch", "//pkg/sentry/arch", "//pkg/sentry/contexttest", "//pkg/sentry/fs", "//pkg/sentry/fs/filetest", "//pkg/sentry/kernel/sched", "//pkg/sentry/limits", "//pkg/sentry/pgalloc", "//pkg/sentry/time", "//pkg/sentry/usage", "//pkg/sync", ], )