summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fs/tty
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/sentry/fs/tty')
-rw-r--r--pkg/sentry/fs/tty/BUILD20
-rw-r--r--pkg/sentry/fs/tty/dir.go18
-rw-r--r--pkg/sentry/fs/tty/fs.go4
-rw-r--r--pkg/sentry/fs/tty/inode.go2
-rw-r--r--pkg/sentry/fs/tty/line_discipline.go6
-rw-r--r--pkg/sentry/fs/tty/master.go4
-rw-r--r--pkg/sentry/fs/tty/queue.go4
-rw-r--r--pkg/sentry/fs/tty/slave.go4
-rw-r--r--pkg/sentry/fs/tty/terminal.go2
9 files changed, 27 insertions, 37 deletions
diff --git a/pkg/sentry/fs/tty/BUILD b/pkg/sentry/fs/tty/BUILD
index 3c446eef4..363897b2c 100644
--- a/pkg/sentry/fs/tty/BUILD
+++ b/pkg/sentry/fs/tty/BUILD
@@ -1,6 +1,22 @@
package(licenses = ["notice"]) # Apache 2.0
-load("//tools/go_stateify:defs.bzl", "go_library", "go_test")
+load("//tools/go_stateify:defs.bzl", "go_library", "go_stateify", "go_test")
+
+go_stateify(
+ name = "tty_state",
+ srcs = [
+ "dir.go",
+ "fs.go",
+ "inode.go",
+ "line_discipline.go",
+ "master.go",
+ "queue.go",
+ "slave.go",
+ "terminal.go",
+ ],
+ out = "tty_state.go",
+ package = "tty",
+)
go_library(
name = "tty",
@@ -13,6 +29,7 @@ go_library(
"queue.go",
"slave.go",
"terminal.go",
+ "tty_state.go",
],
importpath = "gvisor.googlesource.com/gvisor/pkg/sentry/fs/tty",
visibility = ["//pkg/sentry:internal"],
@@ -27,6 +44,7 @@ go_library(
"//pkg/sentry/kernel/auth",
"//pkg/sentry/kernel/time",
"//pkg/sentry/usermem",
+ "//pkg/state",
"//pkg/syserror",
"//pkg/tcpip/transport/unix",
"//pkg/waiter",
diff --git a/pkg/sentry/fs/tty/dir.go b/pkg/sentry/fs/tty/dir.go
index c91091db4..2c5b2aed6 100644
--- a/pkg/sentry/fs/tty/dir.go
+++ b/pkg/sentry/fs/tty/dir.go
@@ -49,16 +49,14 @@ import (
// corresponding Dirents hold on their parent (this directory).
//
// dirInodeOperations implements fs.InodeOperations.
-//
-// +stateify savable
type dirInodeOperations struct {
- fsutil.DeprecatedFileOperations `state:"nosave"`
- fsutil.InodeNotSocket `state:"nosave"`
- fsutil.InodeNotRenameable `state:"nosave"`
- fsutil.InodeNotSymlink `state:"nosave"`
- fsutil.InodeNoExtendedAttributes `state:"nosave"`
- fsutil.NoMappable `state:"nosave"`
- fsutil.NoopWriteOut `state:"nosave"`
+ fsutil.DeprecatedFileOperations
+ fsutil.InodeNotSocket
+ fsutil.InodeNotRenameable
+ fsutil.InodeNotSymlink
+ fsutil.InodeNoExtendedAttributes
+ fsutil.NoMappable
+ fsutil.NoopWriteOut
// msrc is the super block this directory is on.
//
@@ -350,8 +348,6 @@ func (d *dirInodeOperations) masterClose(t *Terminal) {
//
// This is nearly identical to fsutil.DirFileOperations, except that it takes
// df.di.mu in IterateDir.
-//
-// +stateify savable
type dirFileOperations struct {
waiter.AlwaysReady `state:"nosave"`
fsutil.NoopRelease `state:"nosave"`
diff --git a/pkg/sentry/fs/tty/fs.go b/pkg/sentry/fs/tty/fs.go
index e28635607..dbaffe95e 100644
--- a/pkg/sentry/fs/tty/fs.go
+++ b/pkg/sentry/fs/tty/fs.go
@@ -28,8 +28,6 @@ var ptsDevice = device.NewAnonDevice()
//
// This devpts is always in the new "multi-instance" mode. i.e., it contains a
// ptmx device tied to this mount.
-//
-// +stateify savable
type filesystem struct{}
func init() {
@@ -71,8 +69,6 @@ func (f *filesystem) Mount(ctx context.Context, device string, flags fs.MountSou
}
// superOperations implements fs.MountSourceOperations, preventing caching.
-//
-// +stateify savable
type superOperations struct{}
// Revalidate implements fs.DirentOperations.Revalidate.
diff --git a/pkg/sentry/fs/tty/inode.go b/pkg/sentry/fs/tty/inode.go
index c0fa2b407..04b9a7727 100644
--- a/pkg/sentry/fs/tty/inode.go
+++ b/pkg/sentry/fs/tty/inode.go
@@ -31,8 +31,6 @@ import (
//
// * fs.InodeOperations.Release
// * fs.InodeOperations.GetFile
-//
-// +stateify savable
type inodeOperations struct {
fsutil.DeprecatedFileOperations `state:"nosave"`
fsutil.InodeNoExtendedAttributes `state:"nosave"`
diff --git a/pkg/sentry/fs/tty/line_discipline.go b/pkg/sentry/fs/tty/line_discipline.go
index d243ee40e..f094635f5 100644
--- a/pkg/sentry/fs/tty/line_discipline.go
+++ b/pkg/sentry/fs/tty/line_discipline.go
@@ -72,8 +72,6 @@ const (
// termiosMu
// inQueue.mu
// outQueue.mu
-//
-// +stateify savable
type lineDiscipline struct {
// inQueue is the input queue of the terminal.
inQueue queue
@@ -185,8 +183,6 @@ type transformer interface {
// outputQueueTransformer implements transformer. It performs line discipline
// transformations on the output queue.
-//
-// +stateify savable
type outputQueueTransformer struct{}
// transform does output processing for one end of the pty. See
@@ -258,8 +254,6 @@ func (*outputQueueTransformer) transform(l *lineDiscipline, q *queue, buf []byte
// inputQueueTransformer implements transformer. It performs line discipline
// transformations on the input queue.
-//
-// +stateify savable
type inputQueueTransformer struct{}
// transform does input processing for one end of the pty. Characters read are
diff --git a/pkg/sentry/fs/tty/master.go b/pkg/sentry/fs/tty/master.go
index c7198e218..74cdbe874 100644
--- a/pkg/sentry/fs/tty/master.go
+++ b/pkg/sentry/fs/tty/master.go
@@ -27,8 +27,6 @@ import (
// masterInodeOperations are the fs.InodeOperations for the master end of the
// Terminal (ptmx file).
-//
-// +stateify savable
type masterInodeOperations struct {
inodeOperations
@@ -98,8 +96,6 @@ func (mi *masterInodeOperations) GetFile(ctx context.Context, d *fs.Dirent, flag
}
// masterFileOperations are the fs.FileOperations for the master end of a terminal.
-//
-// +stateify savable
type masterFileOperations struct {
fsutil.PipeSeek `state:"nosave"`
fsutil.NotDirReaddir `state:"nosave"`
diff --git a/pkg/sentry/fs/tty/queue.go b/pkg/sentry/fs/tty/queue.go
index 42c105abc..026d5e077 100644
--- a/pkg/sentry/fs/tty/queue.go
+++ b/pkg/sentry/fs/tty/queue.go
@@ -32,13 +32,11 @@ import (
// processed (i.e. undergo termios transformations) as they are added to the
// read buffer. The read buffer is readable when its length is nonzero and
// readable is true.
-//
-// +stateify savable
type queue struct {
// mu protects everything in queue.
mu sync.Mutex `state:"nosave"`
- waiter.Queue `state:"zerovalue"`
+ waiter.Queue `state:"nosave"`
// readBuf is buffer of data ready to be read when readable is true.
// This data has been processed.
diff --git a/pkg/sentry/fs/tty/slave.go b/pkg/sentry/fs/tty/slave.go
index 1c562b172..f5eec726e 100644
--- a/pkg/sentry/fs/tty/slave.go
+++ b/pkg/sentry/fs/tty/slave.go
@@ -27,8 +27,6 @@ import (
// slaveInodeOperations are the fs.InodeOperations for the slave end of the
// Terminal (pts file).
-//
-// +stateify savable
type slaveInodeOperations struct {
inodeOperations
@@ -88,8 +86,6 @@ func (si *slaveInodeOperations) GetFile(ctx context.Context, d *fs.Dirent, flags
}
// slaveFileOperations are the fs.FileOperations for the slave end of a terminal.
-//
-// +stateify savable
type slaveFileOperations struct {
fsutil.PipeSeek `state:"nosave"`
fsutil.NotDirReaddir `state:"nosave"`
diff --git a/pkg/sentry/fs/tty/terminal.go b/pkg/sentry/fs/tty/terminal.go
index 3cb135124..fa5b00409 100644
--- a/pkg/sentry/fs/tty/terminal.go
+++ b/pkg/sentry/fs/tty/terminal.go
@@ -21,8 +21,6 @@ import (
)
// Terminal is a pseudoterminal.
-//
-// +stateify savable
type Terminal struct {
refs.AtomicRefCount