Documentation ¶
Overview ¶
Package semaphore implements System V semaphores.
Index ¶
- type Registry
- type Set
- func (s *Set) AbortWait(num int32, ch chan struct{})
- func (s *Set) Change(ctx context.Context, creds *auth.Credentials, owner fs.FileOwner, ...) error
- func (s *Set) ExecuteOps(ctx context.Context, ops []linux.Sembuf, creds *auth.Credentials) (chan struct{}, int32, error)
- func (s *Set) GetVal(num int32, creds *auth.Credentials) (int16, error)
- func (s *Set) SetVal(ctx context.Context, num int32, val int16, creds *auth.Credentials) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry maintains a set of semaphores that can be found by key or ID.
func (*Registry) FindOrCreate ¶
func (r *Registry) FindOrCreate(ctx context.Context, key, nsems int32, mode linux.FileMode, private, create, exclusive bool) (*Set, error)
FindOrCreate searches for a semaphore set that matches 'key'. If not found, it may create a new one if requested. If private is true, key is ignored and a new set is always created. If create is false, it fails if a set cannot be found. If exclusive is true, it fails if a set with the same key already exists.
type Set ¶
type Set struct { // Id is a handle that identifies the set. ID int32 // contains filtered or unexported fields }
Set represents a set of semaphores that can be operated atomically.
func (*Set) AbortWait ¶
AbortWait notifies that a waiter is giving up and will not wait on the channel anymore.
func (*Set) Change ¶
func (s *Set) Change(ctx context.Context, creds *auth.Credentials, owner fs.FileOwner, perms fs.FilePermissions) error
Change changes some fields from the set atomically.
func (*Set) ExecuteOps ¶
func (s *Set) ExecuteOps(ctx context.Context, ops []linux.Sembuf, creds *auth.Credentials) (chan struct{}, int32, error)
ExecuteOps attempts to execute a list of operations to the set. It only suceeds when all operations can be applied. No changes are made if it fails.
On failure, it may return an error (retries are hopeless) or it may return a channel that can be waited on before attempting again.