1 /****************************************************************************
3 * SciTech Nucleus Graphics Architecture
5 * Copyright (C) 1991-1998 SciTech Software, Inc.
8 * ======================================================================
9 * |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
11 * |This copyrighted computer code contains proprietary technology |
12 * |owned by SciTech Software, Inc., located at 505 Wall Street, |
13 * |Chico, CA 95928 USA (http://www.scitechsoft.com). |
15 * |The contents of this file are subject to the SciTech Nucleus |
16 * |License; you may *not* use this file or related software except in |
17 * |compliance with the License. You may obtain a copy of the License |
18 * |at http://www.scitechsoft.com/nucleus-license.txt |
20 * |Software distributed under the License is distributed on an |
21 * |"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
22 * |implied. See the License for the specific language governing |
23 * |rights and limitations under the License. |
25 * |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
26 * ======================================================================
29 * Environment: NT device driver
31 * Description: OS specific Nucleus Graphics Architecture services for
32 * the NT device drivers.
34 ****************************************************************************/
36 #include "sdd/sddhelp.h"
38 /*------------------------- Global Variables ------------------------------*/
40 static ibool haveRDTSC;
42 /*-------------------------- Implementation -------------------------------*/
44 /****************************************************************************
46 path - Local path to the Nucleus driver files.
49 This function is used by the application program to override the location
50 of the Nucleus driver files that are loaded. Normally the loader code
51 will look in the system Nucleus directories first, then in the 'drivers'
52 directory relative to the current working directory, and finally relative
53 to the MGL_ROOT environment variable.
54 ****************************************************************************/
55 void NAPI GA_setLocalPath(
58 PM_setLocalBPDPath(path);
61 /****************************************************************************
63 Pointer to the system wide PM library imports, or the internal version if none
66 Nothing special for this OS.
67 ****************************************************************************/
68 PM_imports * NAPI GA_getSystemPMImports(void)
73 /****************************************************************************
75 Nothing special for this OS.
76 ****************************************************************************/
77 ibool NAPI GA_getSharedExports(
87 /****************************************************************************
89 Nothing special for this OS
90 ****************************************************************************/
91 ibool NAPI GA_queryFunctions(
96 return __GA_exports.GA_queryFunctions(dc,id,funcs);
99 /****************************************************************************
101 Nothing special for this OS
102 ****************************************************************************/
103 ibool NAPI REF2D_queryFunctions(
108 return __GA_exports.REF2D_queryFunctions(ref2d,id,funcs);
112 /****************************************************************************
114 This function initialises the high precision timing functions for the
115 Nucleus loader library.
116 ****************************************************************************/
117 ibool NAPI GA_TimerInit(void)
119 if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0) {
125 /****************************************************************************
127 This function reads the high resolution timer.
128 ****************************************************************************/
129 void NAPI GA_TimerRead(
130 GA_largeInteger *value)
133 _GA_readTimeStamp(value);
135 KeQuerySystemTime((LARGE_INTEGER*)value);