Module: Facter::Freebsd::FfiHelper
- Defined in:
- lib/facter/resolvers/freebsd/ffi/ffi_helper.rb
Defined Under Namespace
Modules: Libc
Class Method Summary collapse
Class Method Details
.sysctl_by_name(type, name) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/facter/resolvers/freebsd/ffi/ffi_helper.rb', line 15 def self.sysctl_by_name(type, name) oldp = FFI::Pointer::NULL oldlenp = FFI::MemoryPointer.new(:size_t) newp = FFI::Pointer::NULL newlenp = 0 if type == :string res = Libc.sysctlbyname(name, oldp, oldlenp, newp, newlenp) return nil if res.negative? else oldlenp.write(:size_t, FFI.type_size(type)) end oldp = FFI::MemoryPointer.new(:uint8_t, oldlenp.read(:size_t)) res = Libc.sysctlbyname(name, oldp, oldlenp, newp, newlenp) return nil if res.negative? case type when :string oldp.read_string else oldp.read(type) end end |