summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/kernel/semaphore
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/sentry/kernel/semaphore')
-rw-r--r--pkg/sentry/kernel/semaphore/BUILD15
-rw-r--r--pkg/sentry/kernel/semaphore/semaphore.go8
2 files changed, 14 insertions, 9 deletions
diff --git a/pkg/sentry/kernel/semaphore/BUILD b/pkg/sentry/kernel/semaphore/BUILD
index e7fa44e2c..969145fe1 100644
--- a/pkg/sentry/kernel/semaphore/BUILD
+++ b/pkg/sentry/kernel/semaphore/BUILD
@@ -1,7 +1,7 @@
package(licenses = ["notice"]) # Apache 2.0
load("//tools/go_generics:defs.bzl", "go_template_instance")
-load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
+load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
go_template_instance(
name = "waiter_list",
@@ -14,10 +14,21 @@ go_template_instance(
},
)
+go_stateify(
+ name = "semaphore_state",
+ srcs = [
+ "semaphore.go",
+ "waiter_list.go",
+ ],
+ out = "semaphore_autogen_state.go",
+ package = "semaphore",
+)
+
go_library(
name = "semaphore",
srcs = [
"semaphore.go",
+ "semaphore_autogen_state.go",
"waiter_list.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/sentry/kernel/semaphore",
@@ -29,6 +40,8 @@ go_library(
"//pkg/sentry/fs",
"//pkg/sentry/kernel/auth",
"//pkg/sentry/kernel/time",
+ "//pkg/state",
+ "//pkg/state/statefile",
"//pkg/syserror",
],
)
diff --git a/pkg/sentry/kernel/semaphore/semaphore.go b/pkg/sentry/kernel/semaphore/semaphore.go
index aa07946cf..a1ee83ce5 100644
--- a/pkg/sentry/kernel/semaphore/semaphore.go
+++ b/pkg/sentry/kernel/semaphore/semaphore.go
@@ -42,8 +42,6 @@ const (
)
// Registry maintains a set of semaphores that can be found by key or ID.
-//
-// +stateify savable
type Registry struct {
// userNS owning the ipc name this registry belongs to. Immutable.
userNS *auth.UserNamespace
@@ -54,8 +52,6 @@ type Registry struct {
}
// Set represents a set of semaphores that can be operated atomically.
-//
-// +stateify savable
type Set struct {
// registry owning this sem set. Immutable.
registry *Registry
@@ -83,8 +79,6 @@ type Set struct {
}
// sem represents a single semanphore from a set.
-//
-// +stateify savable
type sem struct {
value int16
waiters waiterList `state:"zerovalue"`
@@ -92,8 +86,6 @@ type sem struct {
// waiter represents a caller that is waiting for the semaphore value to
// become positive or zero.
-//
-// +stateify savable
type waiter struct {
waiterEntry