From: Robert Dober Date: 2009-08-07T18:59:26+09:00 Subject: Re: FFI, sysctl, pointer question On Fri, Aug 7, 2009 at 10:22 AM, Daniel Berger wrote: At first sight you need MemoryPointer, but I could not really get it working, but probably I screwed the sysctl call, I did not find a reference of it for my system. Well for what it is worth I'll share what I did. *N.B.* This fails with ffi1.rb:35:in `seconds': unknown error - sysctl() (SystemCallError) from ffi1.rb:43:in `
' def self.seconds tv = Timeval.new mib = [CTL_KERN, KERN_BOOTTIME] # What's the proper way to call this? tvp = FFI::MemoryPointer::new :pointer tvp.put_pointer 0, tv mip = FFI::MemoryPointer::new :int, 2 mip.put_array_of_int 0, mib if sysctl(mip, 2, tv, tvp, nil, 0) != 0 raise SystemCallError, 'sysctl()' end time(nil) - tv[:tv_sec] end Maybe somebody can spot my error(s) ;) Cheers Robert -- module Kernel alias_method :ë, :lambda end