VirtualBox

Changeset 1206 in vbox for trunk/src/VBox/Runtime/r3/os2


Ignore:
Timestamp:
Mar 5, 2007 12:58:31 AM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
19130
Message:

use the mscount member of the GIS for system monotonic time source on OS/2.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/os2/time-os2.cpp

    r1204 r1206  
    55
    66/*
    7  * Copyright (C) 2006 InnoTek Systemberatung GmbH
     7 * Copyright (c) 2007 knut st. osmundsen <[email protected]>
    88 *
    9  * This file is part of VirtualBox Open Source Edition (OSE), as
    10  * available from http://www.virtualbox.org. This file is free software;
    11  * you can redistribute it and/or modify it under the terms of the GNU
    12  * General Public License as published by the Free Software Foundation,
    13  * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
    14  * distribution. VirtualBox OSE is distributed in the hope that it will
    15  * be useful, but WITHOUT ANY WARRANTY of any kind.
     9 * Permission is hereby granted, free of charge, to any person
     10 * obtaining a copy of this software and associated documentation
     11 * files (the "Software"), to deal in the Software without
     12 * restriction, including without limitation the rights to use,
     13 * copy, modify, merge, publish, distribute, sublicense, and/or sell
     14 * copies of the Software, and to permit persons to whom the
     15 * Software is furnished to do so, subject to the following
     16 * conditions:
    1617 *
    17  * If you received this file as part of a commercial VirtualBox
    18  * distribution, then only the terms of your commercial VirtualBox
    19  * license agreement apply instead of the previous paragraph.
     18 * The above copyright notice and this permission notice shall be
     19 * included in all copies or substantial portions of the Software.
     20 *
     21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
     23 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     24 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
     25 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     26 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     27 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     28 * OTHER DEALINGS IN THE SOFTWARE.
    2029 */
    2130
     
    2534*******************************************************************************/
    2635#define LOG_GROUP RTLOGGROUP_TIME
    27 #define RTTIME_INCL_TIMEVAL
    28 #include <sys/time.h>
    29 #include <time.h>
     36#include <InnoTekLIBC/FastInfoBlocks.h>
    3037
    3138#include <iprt/time.h>
    3239#include "internal/time.h"
    3340
     41/** @todo mscount will roll over after ~48 days. */
    3442
    35 DECLINLINE(uint64_t) rtTimeGetSystemNanoTS(void)
     43RTDECL(uint64_t) RTTimeSystemNanoTS(void)
    3644{
    37 #if defined(CLOCK_MONOTONIC) && !defined(__L4__) && !defined(__OS2__)
    38     /* check monotonic clock first. */
    39     static bool s_fMonoClock = true;
    40     if (s_fMonoClock)
    41     {
    42         struct timespec ts;
    43         if (!clock_gettime(CLOCK_MONOTONIC, &ts))
    44             return (uint64_t)ts.tv_sec * (uint64_t)(1000 * 1000 * 1000)
    45                  + ts.tv_nsec;
    46         s_fMonoClock = false;
    47     }
    48 #endif
    49 
    50     /* fallback to gettimeofday(). */
    51     struct timeval tv;
    52     gettimeofday(&tv, NULL);
    53     return (uint64_t)tv.tv_sec  * (uint64_t)(1000 * 1000 * 1000)
    54          + (uint64_t)(tv.tv_usec * 1000);
     45    return fibGetMsCount() * UINT64_C(10000000);
    5546}
    5647
    5748
    58 /**
    59  * Gets the current nanosecond timestamp.
    60  *
    61  * This differs from RTTimeNanoTS in that it will use system APIs and not do any
    62  * resolution or performance optimizations.
    63  *
    64  * @returns nanosecond timestamp.
    65  */
    66 RTDECL(uint64_t) RTTimeSystemNanoTS(void)
     49RTDECL(uint64_t) RTTimeSystemMilliTS(void)
    6750{
    68     return rtTimeGetSystemNanoTS();
     51    return fibGetMsCount();
    6952}
    7053
    71 
    72 /**
    73  * Gets the current millisecond timestamp.
    74  *
    75  * This differs from RTTimeNanoTS in that it will use system APIs and not do any
    76  * resolution or performance optimizations.
    77  *
    78  * @returns millisecond timestamp.
    79  */
    80 RTDECL(uint64_t) RTTimeSystemMilliTS(void)
    81 {
    82     return rtTimeGetSystemNanoTS() / 1000000;
    83 }
    84 
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette