Wolfgang Thallergcc 15.1.0ada185d1 year agoHistory
69 lines · 1.9 KB · D
RawDownload
/** * The config module contains utility routines and configuration information * specific to this package. * * Copyright: Copyright Sean Kelly 2005 - 2009. * License:   $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors:   Sean Kelly * Source:    $(DRUNTIMESRC core/sync/_config.d) */ /*          Copyright Sean Kelly 2005 - 2009. * Distributed under the Boost Software License, Version 1.0. *    (See accompanying file LICENSE or copy at *          http://www.boost.org/LICENSE_1_0.txt) */module core.sync.config;  version (Posix){    import core.sys.posix.sys.time : gettimeofday, timeval;    import core.sys.posix.time : timespec;    import core.time;      void mktspec( ref timespec t ) nothrow @nogc    {        static if ( is (typeof ( imported!"core.sys.posix.pthread".pthread_condattr_setclock ) ) )        {            import core.sys.posix.time : clock_gettime, CLOCK_MONOTONIC;            clock_gettime( CLOCK_MONOTONIC, &t );        }        else        {            timeval tv;             gettimeofday( &tv, null );            (cast(byte*) &t)[0 .. t.sizeof] = 0;            t.tv_sec  = cast(typeof(t.tv_sec))  tv.tv_sec;            t.tv_nsec = cast(typeof(t.tv_nsec)) tv.tv_usec * 1_000;        }    }      void mktspec( ref timespec t, Duration delta ) nothrow @nogc    {        mktspec( t );        mvtspec( t, delta );    }      void mvtspec( ref timespec t, Duration delta ) nothrow @nogc    {        auto val  = delta;             val += dur!"seconds"( t.tv_sec );             val += dur!"nsecs"( t.tv_nsec );         //auto val = delta + dur!"seconds"( t.tv_sec ) +        //                 + dur!"nsecs"( t.tv_nsec );         if ( val.total!"seconds" > t.tv_sec.max )        {            t.tv_sec  = t.tv_sec.max;            t.tv_nsec = cast(typeof(t.tv_nsec)) val.split!("seconds", "nsecs")().nsecs;        }        else            val.split!("seconds", "nsecs")(t.tv_sec, t.tv_nsec);    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t