Files
podman/libpod/lock/shm_lock_manager_unsupported.go
Matt Heon 4fda7936c5 system locks now reports held locks
To debug a deadlock, we really want to know what lock is actually
locked, so we can figure out what is using that lock. This PR
adds support for this, using trylock to check if every lock on
the system is free or in use. Will really need to be run a few
times in quick succession to verify that it's not a transient
lock and it's actually stuck, but that's not really a big deal.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-06-05 19:34:36 -04:00

46 lines
1.3 KiB
Go

//go:build !linux
// +build !linux
package lock
import "fmt"
// SHMLockManager is a shared memory lock manager.
// It is not supported on non-Unix platforms.
type SHMLockManager struct{}
// NewSHMLockManager is not supported on this platform
func NewSHMLockManager(path string, numLocks uint32) (Manager, error) {
return nil, fmt.Errorf("not supported")
}
// OpenSHMLockManager is not supported on this platform
func OpenSHMLockManager(path string, numLocks uint32) (Manager, error) {
return nil, fmt.Errorf("not supported")
}
// AllocateLock is not supported on this platform
func (m *SHMLockManager) AllocateLock() (Locker, error) {
return nil, fmt.Errorf("not supported")
}
// RetrieveLock is not supported on this platform
func (m *SHMLockManager) RetrieveLock(id string) (Locker, error) {
return nil, fmt.Errorf("not supported")
}
// FreeAllLocks is not supported on this platform
func (m *SHMLockManager) FreeAllLocks() error {
return fmt.Errorf("not supported")
}
// AvailableLocks is not supported on this platform
func (m *SHMLockManager) AvailableLocks() (*uint32, error) {
return nil, fmt.Errorf("not supported")
}
// LocksHeld is not supported on this platform
func (m *SHMLockManager) LocksHeld() ([]uint32, error) {
return nil, fmt.Errorf("not supported")
}