class SysVIPC::Semaphore

Attributes

semid[R]

Public Class Methods

new(key, nsems, flags) click to toggle source

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

getall() click to toggle source

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
getncnt(semnum) click to toggle source

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
Also aliased as: ncnt
getpid(semnum) click to toggle source

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
Also aliased as: pid
getval(semnum) click to toggle source

Get the value of semaphore semnum. See semctl(2).

    # File lib/SysVIPC.rb
233 def getval(semnum)
234   semctl(@semid, semnum, GETVAL)
235 end
Also aliased as: val
getzcnt(semnum) click to toggle source

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
Also aliased as: zcnt
ipc_rmid() click to toggle source

Remove. See semctl(2).

    # File lib/SysVIPC.rb
284 def ipc_rmid
285   check_result(semctl(@semid, 0, IPC_RMID))
286 end
Also aliased as: rm
ipc_set(semid_ds) click to toggle source

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
Also aliased as: semid_ds=
ipc_stat() click to toggle source

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
Also aliased as: semid_ds
ncnt(semnum)
Alias for: getncnt
op(array) click to toggle source

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
pid(semnum)
Alias for: getpid
rm()
Alias for: ipc_rmid
semid_ds()
Alias for: ipc_stat
semid_ds=(semid_ds)
Alias for: ipc_set
setall(values) click to toggle source

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
setval(semnum, val) click to toggle source

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
val(semnum)
Alias for: getval
zcnt(semnum)
Alias for: getzcnt