summaryrefslogtreecommitdiff
path: root/libpod/lock/shm/shm_lock.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-02-21 23:11:24 +0100
committerGitHub <noreply@github.com>2019-02-21 23:11:24 +0100
commiteb6243226a08254f15657c3728bb4dd8949ee6cd (patch)
tree25fea4777a578895b9ac0f5f6c2e19860fc2e4bd /libpod/lock/shm/shm_lock.go
parentb4c10790d514538277a937a443219e4310cb057f (diff)
parent19eb72f4206192b22856eef24ce3815eac3d7bda (diff)
downloadpodman-eb6243226a08254f15657c3728bb4dd8949ee6cd.tar.gz
podman-eb6243226a08254f15657c3728bb4dd8949ee6cd.tar.bz2
podman-eb6243226a08254f15657c3728bb4dd8949ee6cd.zip
Merge pull request #2350 from mheon/lock_renumber
Add lock renumbering
Diffstat (limited to 'libpod/lock/shm/shm_lock.go')
-rw-r--r--libpod/lock/shm/shm_lock.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/libpod/lock/shm/shm_lock.go b/libpod/lock/shm/shm_lock.go
index 87d28e5c1..e70ea8743 100644
--- a/libpod/lock/shm/shm_lock.go
+++ b/libpod/lock/shm/shm_lock.go
@@ -155,6 +155,22 @@ func (locks *SHMLocks) DeallocateSemaphore(sem uint32) error {
return nil
}
+// DeallocateAllSemaphores frees all semaphores so they can be reallocated to
+// other containers and pods.
+func (locks *SHMLocks) DeallocateAllSemaphores() error {
+ if !locks.valid {
+ return errors.Wrapf(syscall.EINVAL, "locks have already been closed")
+ }
+
+ retCode := C.deallocate_all_semaphores(locks.lockStruct)
+ if retCode < 0 {
+ // Negative errno return from C
+ return syscall.Errno(-1 * retCode)
+ }
+
+ return nil
+}
+
// LockSemaphore locks the given semaphore.
// If the semaphore is already locked, LockSemaphore will block until the lock
// can be acquired.