def self.seconds
if Config::CONFIG['host_os'] =~ /linux/i
begin
IO.read('/proc/uptime').split.first.to_i
rescue Exception => err
raise Error, err
end
elsif respond_to?(:sysctl, true)
tv = Timeval.new
mib = FFI::MemoryPointer.new(:int, 2).write_array_of_int([CTL_KERN, KERN_BOOTTIME])
size = FFI::MemoryPointer.new(:long, 1).write_int(tv.size)
if sysctl(mib, 2, tv, size, nil, 0) != 0
raise SystemCallError, 'sysctl() - ' + strerror(FFI.errno)
end
time(nil) - tv[:tv_sec]
else
tms = Tms.new
times(tms) / TICKS
end
end