123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- /****************************************************************************
- *
- * 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: Linux
- *
- * Description: OS specific Nucleus Graphics Architecture services for
- * the Linux operating system.
- *
- ****************************************************************************/
- #include "nucleus/graphics.h"
- #include <sys/time.h>
- 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:
- In order to support deploying new Nucleus drivers that may require updated
- PM library functions, we check here to see if there is a system wide version
- of the PM functions available. If so we return those functions for use with
- the system wide Nucleus drivers, otherwise the compiled in version of the PM
- library is used with the application local version of Nucleus.
- ****************************************************************************/
- PM_imports * NAPI GA_getSystemPMImports(void)
- {
- /* TODO: We may very well want to provide a system shared library */
- /* that eports the PM functions required by the Nucleus library */
- /* for BeOS here. That will eliminate fatal errors loading new */
- /* drivers on BeOS! */
- 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 {
- struct timeval t;
- gettimeofday(&t, NULL);
- value->low = t.tv_sec*1000000 + t.tv_usec;
- value->high = 0;
- }
- }
|