| /**************************************************************************** |
| * |
| * SciTech Nucleus Graphics Architecture |
| * |
| * Copyright (C) 1991-1998 SciTech Software, Inc. |
| * All rights reserved. |
| * |
| * ====================================================================== |
| * |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| |
| * | | |
| * |This copyrighted computer code contains proprietary technology | |
| * |owned by SciTech Software, Inc., located at 505 Wall Street, | |
| * |Chico, CA 95928 USA (http://www.scitechsoft.com). | |
| * | | |
| * |The contents of this file are subject to the SciTech Nucleus | |
| * |License; you may *not* use this file or related software except in | |
| * |compliance with the License. You may obtain a copy of the License | |
| * |at http://www.scitechsoft.com/nucleus-license.txt | |
| * | | |
| * |Software distributed under the License is distributed on an | |
| * |"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | |
| * |implied. See the License for the specific language governing | |
| * |rights and limitations under the License. | |
| * | | |
| * |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| |
| * ====================================================================== |
| * |
| * Language: ANSI C |
| * Environment: NT device driver |
| * |
| * Description: OS specific Nucleus Graphics Architecture services for |
| * the NT device drivers. |
| * |
| ****************************************************************************/ |
| |
| #include "sdd/sddhelp.h" |
| |
| /*------------------------- Global Variables ------------------------------*/ |
| |
| static ibool haveRDTSC; |
| |
| /*-------------------------- Implementation -------------------------------*/ |
| |
| /**************************************************************************** |
| PARAMETERS: |
| path - Local path to the Nucleus driver files. |
| |
| REMARKS: |
| This function is used by the application program to override the location |
| of the Nucleus driver files that are loaded. Normally the loader code |
| will look in the system Nucleus directories first, then in the 'drivers' |
| directory relative to the current working directory, and finally relative |
| to the MGL_ROOT environment variable. |
| ****************************************************************************/ |
| void NAPI GA_setLocalPath( |
| const char *path) |
| { |
| PM_setLocalBPDPath(path); |
| } |
| |
| /**************************************************************************** |
| RETURNS: |
| Pointer to the system wide PM library imports, or the internal version if none |
| |
| REMARKS: |
| Nothing special for this OS. |
| ****************************************************************************/ |
| PM_imports * NAPI GA_getSystemPMImports(void) |
| { |
| return &_PM_imports; |
| } |
| |
| /**************************************************************************** |
| REMARKS: |
| Nothing special for this OS. |
| ****************************************************************************/ |
| ibool NAPI GA_getSharedExports( |
| GA_exports *gaExp, |
| ibool shared) |
| { |
| (void)gaExp; |
| (void)shared; |
| return false; |
| } |
| |
| #ifndef TEST_HARNESS |
| /**************************************************************************** |
| REMARKS: |
| Nothing special for this OS |
| ****************************************************************************/ |
| ibool NAPI GA_queryFunctions( |
| GA_devCtx *dc, |
| N_uint32 id, |
| void _FAR_ *funcs) |
| { |
| return __GA_exports.GA_queryFunctions(dc,id,funcs); |
| } |
| |
| /**************************************************************************** |
| REMARKS: |
| Nothing special for this OS |
| ****************************************************************************/ |
| ibool NAPI REF2D_queryFunctions( |
| REF2D_driver *ref2d, |
| N_uint32 id, |
| void _FAR_ *funcs) |
| { |
| return __GA_exports.REF2D_queryFunctions(ref2d,id,funcs); |
| } |
| #endif |
| |
| /**************************************************************************** |
| REMARKS: |
| This function initialises the high precision timing functions for the |
| Nucleus loader library. |
| ****************************************************************************/ |
| ibool NAPI GA_TimerInit(void) |
| { |
| if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0) { |
| haveRDTSC = true; |
| } |
| return true; |
| } |
| |
| /**************************************************************************** |
| REMARKS: |
| This function reads the high resolution timer. |
| ****************************************************************************/ |
| void NAPI GA_TimerRead( |
| GA_largeInteger *value) |
| { |
| if (haveRDTSC) |
| _GA_readTimeStamp(value); |
| else |
| KeQuerySystemTime((LARGE_INTEGER*)value); |
| } |