diff options
author | Andrei Vagin <avagin@google.com> | 2020-08-07 22:47:55 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-08-07 22:49:55 -0700 |
commit | 13a8ae81b2361cd32f8e73d14ca5b9bca9569b1a (patch) | |
tree | 4f0818e004568b5c877dfc9069965743019c0b7e /pkg/sentry/platform | |
parent | 3be26a271cd0fc9618fbcb34e1a2a84c4f234c86 (diff) |
Add context.FullStateChanged()
It indicates that the Sentry has changed the state of the thread and
next calls of PullFullState() has to do nothing.
PiperOrigin-RevId: 325567415
Diffstat (limited to 'pkg/sentry/platform')
-rw-r--r-- | pkg/sentry/platform/kvm/context.go | 4 | ||||
-rw-r--r-- | pkg/sentry/platform/platform.go | 14 | ||||
-rw-r--r-- | pkg/sentry/platform/ptrace/ptrace.go | 4 |
3 files changed, 14 insertions, 8 deletions
diff --git a/pkg/sentry/platform/kvm/context.go b/pkg/sentry/platform/kvm/context.go index eb92721fb..6e6b76416 100644 --- a/pkg/sentry/platform/kvm/context.go +++ b/pkg/sentry/platform/kvm/context.go @@ -91,8 +91,8 @@ func (c *context) Interrupt() { // Release implements platform.Context.Release(). func (c *context) Release() {} -// FloatingPointStateChanged implements platform.Context.FloatingPointStateChanged. -func (c *context) FloatingPointStateChanged() {} +// FullStateChanged implements platform.Context.FullStateChanged. +func (c *context) FullStateChanged() {} // PullFullState implements platform.Context.PullFullState. func (c *context) PullFullState(as platform.AddressSpace, ac arch.Context) {} diff --git a/pkg/sentry/platform/platform.go b/pkg/sentry/platform/platform.go index 3f99afdd1..ba031516a 100644 --- a/pkg/sentry/platform/platform.go +++ b/pkg/sentry/platform/platform.go @@ -171,14 +171,20 @@ type Context interface { // Preconditions: The caller must be running on the task goroutine. PullFullState(as AddressSpace, ac arch.Context) - // FloatingPointStateChanged forces restoring a full state of the application thread. + // FullStateChanged() indicates that a thread state has been changed by + // the Sentry. This happens in case of the rt_sigreturn, execve, etc. // - // A platform can support lazy loading/restoring of a thread state. - // This means that if the Sentry has not changed a thread state, + // First, it indicates that the Sentry has the full state of the thread + // and PullFullState() has to do nothing if it is called after + // FullStateChanged(). + // + // Second, it forces restoring the full state of the application + // thread. A platform can support lazy loading/restoring of a thread + // state. This means that if the Sentry has not changed a thread state, // the platform may not restore it. // // Preconditions: The caller must be running on the task goroutine. - FloatingPointStateChanged() + FullStateChanged() // Interrupt interrupts a concurrent call to Switch(), causing it to return // ErrContextInterrupt. diff --git a/pkg/sentry/platform/ptrace/ptrace.go b/pkg/sentry/platform/ptrace/ptrace.go index 45ff2bcc3..b52d0fbd8 100644 --- a/pkg/sentry/platform/ptrace/ptrace.go +++ b/pkg/sentry/platform/ptrace/ptrace.go @@ -182,8 +182,8 @@ func (c *context) Interrupt() { // Release implements platform.Context.Release(). func (c *context) Release() {} -// FloatingPointStateChanged implements platform.Context.FloatingPointStateChanged. -func (c *context) FloatingPointStateChanged() {} +// FullStateChanged implements platform.Context.FullStateChanged. +func (c *context) FullStateChanged() {} // PullFullState implements platform.Context.PullFullState. func (c *context) PullFullState(as platform.AddressSpace, ac arch.Context) {} |