如何在.NET上调用/调用clock_gettime?

时间:2015-02-22 18:49:59

标签: .net linux f# mono pinvoke

目前我有这个F#代码来获得我能管理的最高分辨率,线性时间戳 -

/// The linux representation of time.
type internal timeval =
    struct
        val tv_sec : int
        val tv_usec : int
        end

/// Query the linux gettimeofday system call.
[<DllImport("libc")>]
extern void private gettimeofday (timeval&, int64)

/// Get a time stamp at the highest-available resolution on linux.
let internal getTimeStampInternal () =
    let mutable t = timeval ()
    gettimeofday(&t, -1L);
    int64 t.tv_sec * 1000000L + int64 t.tv_usec

不幸的是,由于闰年和系统时间的变化,这个值不是线性的。

我已经读过CLOCK_MONOTONIC linux函数的clock_gettime变体会产生更多线性,可能更高分辨率的结果(我希望这也适用于MAC)。

问题是,虽然我做了一些谷歌搜索,但我无法找到如何从.NET调用它,例如使用上面gettimeofday使用的[<DllImport>]属性。

我将如何做到这一点,如果我不能通过一个简单的DllImport做到这一点,那么解决方法是什么?

0 个答案:

没有答案