1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
/****************************************************************************
*
* 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: Win32 VxD
*
* Description: OS specific Nucleus Graphics Architecture services for
* the Win32 VxD's.
*
****************************************************************************/
#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
VTD_Get_Real_Time(&value->high,&value->low);
}
|