class SysVIPC::Semaphore
Attributes
Public Class Methods
Return a Sempahore object encapsulating a set of nsems
semaphores associated with key
. See semget(2).
# File lib/SysVIPC.rb 195 def initialize(key, nsems, flags) 196 @nsems = nsems 197 @semid = semget(key, nsems, flags) 198 check_result(@semid) 199 end
Public Instance Methods
Return an Array containing the value of each semaphore in the set. See semctl(2).
# File lib/SysVIPC.rb 219 def getall 220 res, array = semctl(@semid, 0, GETALL) 221 check_result(res) 222 array 223 end
Get the number of processes waiting for a semaphore to become non-zero. See semctl(2).
# File lib/SysVIPC.rb 249 def getncnt(semnum) 250 semctl(@semid, semnum, GETNCNT) 251 end
Get the process ID of the last semaphore operation. See semctl(2).
# File lib/SysVIPC.rb 241 def getpid(semnum) 242 semctl(@semid, semnum, GETPID) 243 end
Get the value of semaphore semnum
. See semctl(2).
# File lib/SysVIPC.rb 233 def getval(semnum) 234 semctl(@semid, semnum, GETVAL) 235 end
Get the number of processes waiting for a semaphore to become zero. See semctl(2).
# File lib/SysVIPC.rb 257 def getzcnt(semnum) 258 semctl(@semid, semnum, GETZCNT) 259 end
Remove. See semctl(2).
# File lib/SysVIPC.rb 284 def ipc_rmid 285 check_result(semctl(@semid, 0, IPC_RMID)) 286 end
Set the Semid_ds
object. See semctl(2).
# File lib/SysVIPC.rb 273 def ipc_set(semid_ds) 274 unless Semid_ds === semid_ds 275 raise ArgumentError, 276 "argument to ipc_set must be a Semid_ds" 277 end 278 check_result(semctl(@semid, 0, IPC_SET, semid_ds)) 279 end
Return the Semid_ds
object. See semctl(2).
# File lib/SysVIPC.rb 264 def ipc_stat 265 res, semid_ds = semctl(@semid, 0, IPC_STAT) 266 check_result(res) 267 semid_ds 268 end
Perform a set of semaphore operations. The argument array
is an Array of Sembuf
objects. See semop(2).
# File lib/SysVIPC.rb 292 def op(array) 293 check_result(semop(@semid, array, array.length)) 294 end
Set each value in the semaphore set to the corresponding value in the Array values
. See semctl(2).
# File lib/SysVIPC.rb 208 def setall(values) 209 if values.length > @nsems 210 raise ArgumentError, 211 "too many values (#{values.length}) for semaphore set (#{@nsems})" 212 end 213 check_result(semctl(@semid, 0, SETALL, values)) 214 end
Set the value of semaphore semnum
to val
. See semctl(2).
# File lib/SysVIPC.rb 227 def setval(semnum, val) 228 check_result(semctl(@semid, semnum, SETVAL, val)) 229 end