Module: PSem

Extended by:
FFI::Library, PSem
Included in:
PSem
Defined in:
lib/scratch.rb

Class Method Summary collapse

Class Method Details

.testObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/scratch.rb', line 72

def test
  bsem = bsem_alloc()

  class << bsem
    def value
      @int ||= FFI::MemoryPointer.new(:int)
      LibC.call { PSem.bsem_getvalue(self, @int) }
      @int.get_int(0)
    end
  end

  puts "alloc'ed at #{bsem.inspect}"
  puts LibC.call { bsem_open(bsem, "foobar", 1, 1) }
  puts "opened at #{bsem.inspect}"
  puts LibC.call { bsem_unlink("foobar") }
  puts "unlinked"

  puts "waiting for sem..."
  puts "value is #{bsem.value}"
  LibC.call { bsem_wait(bsem) }
  puts "acquired!"
  puts "value is #{bsem.value}"
  LibC.call { bsem_post(bsem) }
  puts "posted!"
  puts "value is #{bsem.value}"

  puts LibC.call { bsem_close(bsem) }
  bsem_free(bsem)
end