CとRubyの繋ぎで構造体をやり取りしたいんだけど、

require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "libc.so.6"
extern('int gettimeofday(void *, void *)')
Timeval = struct( ["long tv_sec",
"long tv_usec"])
end

timeval = M::Timeval.malloc
e = M.gettimeofday(timeval, nil)

if e == 0
p timeval.tv_sec #=> 1173519547
end

上のコードよりもっと簡単な方法って何かない?