mirror of
https://github.com/hanzoai/visor.git
synced 2026-09-24 17:04:14 +00:00
This is needed so that connectioned endpoint in the transport package can use this endpoint to implement host FD based binded endpoints. I had to simplify some other dependencies to make this possible. - Removed uniqueid's dependency on transport package completely. - Removed SCMConnectedEndpoint and HostConnectedEndpoint's dependency on control package so they could be moved to transport. control already depends on transport. - scmRights struct from fsimpl/host/control.go had to be moved into transport so that HostConnectedEndpoint could be implemented. But scmRights.Fill() could not be moved because it inherently depends on making vfs.FileDescriptions which depends on vfs which in turn depends on transport. So now that scmRights -> vfs.FD conversion happens in the syscall package. PiperOrigin-RevId: 413839350
61 lines
1.9 KiB
Go
61 lines
1.9 KiB
Go
// Copyright 2018 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
// Package uniqueid defines context.Context keys for obtaining system-wide
|
|
// unique identifiers.
|
|
package uniqueid
|
|
|
|
import (
|
|
"gvisor.dev/gvisor/pkg/context"
|
|
)
|
|
|
|
// contextID is the kernel package's type for context.Context.Value keys.
|
|
type contextID int
|
|
|
|
const (
|
|
// CtxGlobalUniqueID is a Context.Value key for a system-wide
|
|
// unique identifier.
|
|
CtxGlobalUniqueID contextID = iota
|
|
|
|
// CtxGlobalUniqueIDProvider is a Context.Value key for a
|
|
// system-wide unique identifier generator.
|
|
CtxGlobalUniqueIDProvider
|
|
|
|
// CtxInotifyCookie is a Context.Value key for a unique inotify
|
|
// event cookie.
|
|
CtxInotifyCookie
|
|
)
|
|
|
|
// Provider generates a sequence of unique identifiers useful for,
|
|
// among other things, lock ordering.
|
|
type Provider interface {
|
|
// UniqueID returns a new unique identifier.
|
|
UniqueID() uint64
|
|
}
|
|
|
|
// GlobalFromContext returns a system-wide unique identifier from ctx.
|
|
func GlobalFromContext(ctx context.Context) uint64 {
|
|
return ctx.Value(CtxGlobalUniqueID).(uint64)
|
|
}
|
|
|
|
// GlobalProviderFromContext returns a system-wide unique identifier from ctx.
|
|
func GlobalProviderFromContext(ctx context.Context) Provider {
|
|
return ctx.Value(CtxGlobalUniqueIDProvider).(Provider)
|
|
}
|
|
|
|
// InotifyCookie generates a unique inotify event cookie from ctx.
|
|
func InotifyCookie(ctx context.Context) uint32 {
|
|
return ctx.Value(CtxInotifyCookie).(uint32)
|
|
}
|