diff druntime/import/core/sys/posix/time.d @ 1458:e0b2d67cfe7c

Added druntime (this should be removed once it works).
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 02 Jun 2009 17:43:06 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/druntime/import/core/sys/posix/time.d	Tue Jun 02 17:43:06 2009 +0100
@@ -0,0 +1,270 @@
+/**
+ * D header file for POSIX.
+ *
+ * Copyright: Copyright Sean Kelly 2005 - 2009.
+ * License:   <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>.
+ * Authors:   Sean Kelly
+ * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
+ *
+ *          Copyright Sean Kelly 2005 - 2009.
+ * Distributed under the Boost Software License, Version 1.0.
+ *    (See accompanying file LICENSE_1_0.txt or copy at
+ *          http://www.boost.org/LICENSE_1_0.txt)
+ */
+module core.sys.posix.time;
+
+private import core.sys.posix.config;
+public import core.stdc.time;
+public import core.sys.posix.sys.types;
+public import core.sys.posix.signal; // for sigevent
+
+extern (C):
+
+//
+// Required (defined in core.stdc.time)
+//
+/*
+char* asctime(in tm*);
+clock_t clock();
+char* ctime(in time_t*);
+double difftime(time_t, time_t);
+tm* gmtime(in time_t*);
+tm* localtime(in time_t*);
+time_t mktime(tm*);
+size_t strftime(char*, size_t, in char*, in tm*);
+time_t time(time_t*);
+*/
+
+version( linux )
+{
+    time_t timegm(tm*); // non-standard
+}
+else version( OSX )
+{
+    time_t timegm(tm*); // non-standard
+}
+else version( freebsd )
+{
+    time_t timegm(tm*); // non-standard
+}
+
+//
+// C Extension (CX)
+// (defined in core.stdc.time)
+//
+/*
+char* tzname[];
+void tzset();
+*/
+
+//
+// Process CPU-Time Clocks (CPT)
+//
+/*
+int clock_getcpuclockid(pid_t, clockid_t*);
+*/
+
+//
+// Clock Selection (CS)
+//
+/*
+int clock_nanosleep(clockid_t, int, in timespec*, timespec*);
+*/
+
+//
+// Monotonic Clock (MON)
+//
+/*
+CLOCK_MONOTONIC
+*/
+
+//
+// Timer (TMR)
+//
+/*
+CLOCK_PROCESS_CPUTIME_ID (TMR|CPT)
+CLOCK_THREAD_CPUTIME_ID (TMR|TCT)
+
+NOTE: timespec must be defined in core.sys.posix.signal to break
+      a circular import.
+
+struct timespec
+{
+    time_t  tv_sec;
+    int     tv_nsec;
+}
+
+struct itimerspec
+{
+    timespec it_interval;
+    timespec it_value;
+}
+
+CLOCK_REALTIME
+TIMER_ABSTIME
+
+clockid_t
+timer_t
+
+int clock_getres(clockid_t, timespec*);
+int clock_gettime(clockid_t, timespec*);
+int clock_settime(clockid_t, in timespec*);
+int nanosleep(in timespec*, timespec*);
+int timer_create(clockid_t, sigevent*, timer_t*);
+int timer_delete(timer_t);
+int timer_gettime(timer_t, itimerspec*);
+int timer_getoverrun(timer_t);
+int timer_settime(timer_t, int, in itimerspec*, itimerspec*);
+*/
+
+version( linux )
+{
+    enum CLOCK_PROCESS_CPUTIME_ID   = 2; // (TMR|CPT)
+    enum CLOCK_THREAD_CPUTIME_ID    = 3; // (TMR|TCT)
+
+    // NOTE: See above for why this is commented out.
+    //
+    //struct timespec
+    //{
+    //    time_t  tv_sec;
+    //    c_long  tv_nsec;
+    //}
+
+    struct itimerspec
+    {
+        timespec it_interval;
+        timespec it_value;
+    }
+
+    enum CLOCK_REALTIME     = 0;
+    enum TIMER_ABSTIME      = 0x01;
+
+    alias int clockid_t;
+    alias int timer_t;
+
+    int clock_getres(clockid_t, timespec*);
+    //int clock_gettime(clockid_t, timespec*);
+    //int clock_settime(clockid_t, in timespec*);
+    int nanosleep(in timespec*, timespec*);
+    int timer_create(clockid_t, sigevent*, timer_t*);
+    int timer_delete(timer_t);
+    int timer_gettime(timer_t, itimerspec*);
+    int timer_getoverrun(timer_t);
+    int timer_settime(timer_t, int, in itimerspec*, itimerspec*);
+}
+else version( OSX )
+{
+    int nanosleep(in timespec*, timespec*);
+}
+else version( freebsd )
+{
+    enum CLOCK_PROCESS_CPUTIME_ID   = 2; // (TMR|CPT)
+    enum CLOCK_THREAD_CPUTIME_ID    = 3; // (TMR|TCT)
+
+    // NOTE: See above for why this is commented out.
+    //
+    //struct timespec
+    //{
+    //    time_t  tv_sec;
+    //    c_long  tv_nsec;
+    //}
+
+    struct itimerspec
+    {
+        timespec it_interval;
+        timespec it_value;
+    }
+
+    enum CLOCK_REALTIME     = 0;
+    enum TIMER_ABSTIME      = 0x01;
+
+    //alias int clockid_t;
+    alias int timer_t;
+
+    int clock_getres(clockid_t, timespec*);
+    int clock_gettime(clockid_t, timespec*);
+    int clock_settime(clockid_t, in timespec*);
+    int nanosleep(in timespec*, timespec*);
+    int timer_create(clockid_t, sigevent*, timer_t*);
+    int timer_delete(timer_t);
+    int timer_gettime(timer_t, itimerspec*);
+    int timer_getoverrun(timer_t);
+    int timer_settime(timer_t, int, in itimerspec*, itimerspec*);
+}
+
+
+//
+// Thread-Safe Functions (TSF)
+//
+/*
+char* asctime_r(in tm*, char*);
+char* ctime_r(in time_t*, char*);
+tm*   gmtime_r(in time_t*, tm*);
+tm*   localtime_r(in time_t*, tm*);
+*/
+
+version( linux )
+{
+    char* asctime_r(in tm*, char*);
+    char* ctime_r(in time_t*, char*);
+    tm*   gmtime_r(in time_t*, tm*);
+    tm*   localtime_r(in time_t*, tm*);
+}
+else version( OSX )
+{
+    char* asctime_r(in tm*, char*);
+    char* ctime_r(in time_t*, char*);
+    tm*   gmtime_r(in time_t*, tm*);
+    tm*   localtime_r(in time_t*, tm*);
+}
+else version( freebsd )
+{
+    char* asctime_r(in tm*, char*);
+    char* ctime_r(in time_t*, char*);
+    tm*   gmtime_r(in time_t*, tm*);
+    tm*   localtime_r(in time_t*, tm*);
+}
+
+//
+// XOpen (XSI)
+//
+/*
+getdate_err
+
+int daylight;
+int timezone;
+
+tm* getdate(in char*);
+char* strptime(in char*, in char*, tm*);
+*/
+
+version( linux )
+{
+    extern __gshared int    daylight;
+    extern __gshared c_long timezone;
+
+    tm*   getdate(in char*);
+    char* strptime(in char*, in char*, tm*);
+}
+else version( OSX )
+{
+    extern __gshared c_long timezone;
+
+    tm*   getdate(in char*);
+    char* strptime(in char*, in char*, tm*);
+}
+else version( FreeBSD )
+{
+    extern __gshared c_long timezone;
+
+    //tm*   getdate(in char*);
+    char* strptime(in char*, in char*, tm*);
+}
+else version( Solaris )
+{
+    extern __gshared c_long timezone;
+
+    //tm*   getdate(in char*);
+    char* strptime(in char*, in char*, tm*);
+}
+