mirror of
https://github.com/containers/podman.git
synced 2025-07-30 03:42:24 +08:00

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>
46 lines
1.3 KiB
Go
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")
|
|
}
|