📄 osd_util.h
字号:
/* BSDI osd_util.h,v 1.8 1998/06/03 19:14:58 karels Exp *//* * Copyright (c) 1996-1999 Distributed Processing Technology Corporation * All rights reserved. * * Redistribution and use in source form, with or without modification, are * permitted provided that redistributions of source code must retain the * above copyright notice, this list of conditions and the following disclaimer. * * This software is provided `as is' by Distributed Processing Technology and * any express or implied warranties, including, but not limited to, the * implied warranties of merchantability and fitness for a particular purpose, * are disclaimed. In no event shall Distributed Processing Technology be * liable for any direct, indirect, incidental, special, exemplary or * consequential damages (including, but not limited to, procurement of * substitute goods or services; loss of use, data, or profits; or business * interruptions) however caused and on any theory of liability, whether in * contract, strict liability, or tort (including negligence or otherwise) * arising in any way out of the use of this driver software, even if advised * of the possibility of such damage. * */#ifndef __OSD_UTIL_H#define __OSD_UTIL_H/*File - OSD_UTIL.H **************************************************************************** * *Description: * * This file contains defines and function prototypes that are *operating system dependent. The resources defined in this file *are not specific to any particular application. * *Copyright Distributed Processing Technology, Corp. * 140 Candace Dr. * Maitland, Fl. 32751 USA * Phone: (407) 830-5522 Fax: (407) 260-5366 * All Rights Reserved * *Author: Doug Anderson *Date: 1/7/94 * *Editors: * *Remarks: * * *****************************************************************************//*Definitions - Defines & Constants ----------------------------------------- *//*----------------------------- *//* Operating system selections: *//*----------------------------- *//*#define _DPT_MSDOS *//*#define _DPT_WIN_3X *//*#define _DPT_WIN_4X *//*#define _DPT_WIN_NT *//*#define _DPT_NETWARE *//*#define _DPT_OS2 *//*#define _DPT_SCO *//*#define _DPT_UNIXWARE *//*#define _DPT_SOLARIS *//*#define _DPT_NEXTSTEP *//*#define _DPT_BANYAN *//*-------------------------------- *//* Include the OS specific defines *//*-------------------------------- *//*#define OS_SELECTION From Above List *//*#define SEMAPHORE_T ??? *//*#define DLL_HANDLE_T ??? */#if (defined(KERNEL) && (defined(__FreeBSD__) || defined(__bsdi__)))# include "i386/isa/dpt_osd_defs.h"#else# include "osd_defs.h"#endif#ifndef DPT_UNALIGNED #define DPT_UNALIGNED#endif#ifndef DPT_EXPORT #define DPT_EXPORT#endif#ifndef DPT_IMPORT #define DPT_IMPORT#endif#ifndef DPT_RUNTIME_IMPORT #define DPT_RUNTIME_IMPORT DPT_IMPORT#endif/*--------------------- *//* OS dependent defines *//*--------------------- */#if defined (_DPT_MSDOS) || defined (_DPT_WIN_3X) #define _DPT_16_BIT#else #define _DPT_32_BIT#endif#if defined (_DPT_SCO) || defined (_DPT_UNIXWARE) || defined (_DPT_SOLARIS) || defined (_DPT_AIX) || defined (SNI_MIPS) || defined (_DPT_BSDI) || defined (_DPT_FREE_BSD) || defined(_DPT_LINUX) #define _DPT_UNIX#endif#if defined (_DPT_WIN_3x) || defined (_DPT_WIN_4X) || defined (_DPT_WIN_NT) \ || defined (_DPT_OS2) #define _DPT_DLL_SUPPORT#endif#if !defined (_DPT_MSDOS) && !defined (_DPT_WIN_3X) && !defined (_DPT_NETWARE) #define _DPT_PREEMPTIVE#endif#if !defined (_DPT_MSDOS) && !defined (_DPT_WIN_3X) #define _DPT_MULTI_THREADED#endif#if !defined (_DPT_MSDOS) #define _DPT_MULTI_TASKING#endif /* These exist for platforms that */ /* chunk when accessing mis-aligned */ /* data */#if defined (SNI_MIPS) || defined (_DPT_SOLARIS) #if defined (_DPT_BIG_ENDIAN) #if !defined (_DPT_STRICT_ALIGN) #define _DPT_STRICT_ALIGN #endif #endif#endif /* Determine if in C or C++ mode */#ifdef __cplusplus #define _DPT_CPP#else #define _DPT_C#endif/*-------------------------------------------------------------------*//* Under Solaris the compiler refuses to accept code like: *//* { {"DPT"}, 0, NULL .... }, *//* and complains about the {"DPT"} part by saying "cannot use { } *//* to initialize char*". *//* *//* By defining these ugly macros we can get around this and also *//* not have to copy and #ifdef large sections of code. I know that *//* these macros are *really* ugly, but they should help reduce *//* maintenance in the long run. *//* *//*-------------------------------------------------------------------*/#if !defined (DPTSQO) #if defined (_DPT_SOLARIS) #define DPTSQO #define DPTSQC #else #define DPTSQO { #define DPTSQC } #endif /* solaris */#endif /* DPTSQO *//*---------------------- *//* OS dependent typedefs *//*---------------------- */#if defined (_DPT_MSDOS) || defined (_DPT_SCO) #define BYTE unsigned char #define WORD unsigned short#endif#ifndef _DPT_TYPEDEFS #define _DPT_TYPEDEFS typedef unsigned char uCHAR; typedef unsigned short uSHORT; typedef unsigned int uINT; typedef unsigned long uLONG; typedef union { uCHAR u8[4]; uSHORT u16[2]; uLONG u32; } access_U;#endif#if !defined (NULL) #define NULL 0#endif/*Prototypes - function ----------------------------------------------------- */#ifdef __cplusplus extern "C" { /* Declare all these functions as "C" functions */#endif/*------------------------ *//* Byte reversal functions *//*------------------------ */ /* Reverses the byte ordering of a 2 byte variable */#if (!defined(osdSwap2)) uSHORT osdSwap2(DPT_UNALIGNED uSHORT *);#endif // !osdSwap2 /* Reverses the byte ordering of a 4 byte variable and shifts left 8 bits */#if (!defined(osdSwap3)) uLONG osdSwap3(DPT_UNALIGNED uLONG *);#endif // !osdSwap3#ifdef _DPT_NETWARE #include "novpass.h" /* For DPT_Bswapl() prototype */ /* Inline the byte swap */ #ifdef __cplusplus inline uLONG osdSwap4(uLONG *inLong) { return *inLong = DPT_Bswapl(*inLong); } #else #define osdSwap4(inLong) DPT_Bswapl(inLong) #endif // cplusplus#else /* Reverses the byte ordering of a 4 byte variable */# if (!defined(osdSwap4)) uLONG osdSwap4(DPT_UNALIGNED uLONG *);# endif // !osdSwap4 /* The following functions ALWAYS swap regardless of the * * presence of DPT_BIG_ENDIAN */ uSHORT trueSwap2(DPT_UNALIGNED uSHORT *); uLONG trueSwap4(DPT_UNALIGNED uLONG *);#endif // netware/*-------------------------------------* * Network order swap functions * * * * These functions/macros will be used * * by the structure insert()/extract() * * functions. * * * We will enclose all structure * * portability modifications inside * * #ifdefs. When we are ready, we * * will #define DPT_PORTABLE to begin * * using the modifications. * *-------------------------------------*/uLONG netSwap4(uLONG val);#if defined (_DPT_BIG_ENDIAN)// for big-endian we need to swap#ifndef NET_SWAP_2#define NET_SWAP_2(x) (((x) >> 8) | ((x) << 8))#endif // NET_SWAP_2#ifndef NET_SWAP_4#define NET_SWAP_4(x) netSwap4((x))#endif // NET_SWAP_4#else// for little-endian we don't need to do anything#ifndef NET_SWAP_2#define NET_SWAP_2(x) (x)#endif // NET_SWAP_2#ifndef NET_SWAP_4#define NET_SWAP_4(x) (x)#endif // NET_SWAP_4#endif // big endian/*----------------------------------- *//* Run-time loadable module functions *//*----------------------------------- */ /* Loads the specified run-time loadable DLL */DLL_HANDLE_T osdLoadModule(uCHAR *); /* Unloads the specified run-time loadable DLL */uSHORT osdUnloadModule(DLL_HANDLE_T); /* Returns a pointer to a function inside a run-time loadable DLL */void * osdGetFnAddr(DLL_HANDLE_T,uCHAR *);/*--------------------------------------- *//* Mutually exclusive semaphore functions *//*--------------------------------------- */ /* Create a named semaphore */SEMAPHORE_T osdCreateNamedSemaphore(char *); /* Create a mutually exlusive semaphore */SEMAPHORE_T osdCreateSemaphore(void); /* create an event semaphore */SEMAPHORE_T osdCreateEventSemaphore(void); /* create a named event semaphore */SEMAPHORE_T osdCreateNamedEventSemaphore(char *); /* Destroy the specified mutually exclusive semaphore object */uSHORT osdDestroySemaphore(SEMAPHORE_T); /* Request access to the specified mutually exclusive semaphore */uLONG osdRequestSemaphore(SEMAPHORE_T,uLONG); /* Release access to the specified mutually exclusive semaphore */uSHORT osdReleaseSemaphore(SEMAPHORE_T); /* wait for a event to happen */uLONG osdWaitForEventSemaphore(SEMAPHORE_T, uLONG); /* signal an event */uLONG osdSignalEventSemaphore(SEMAPHORE_T); /* reset the event */uLONG osdResetEventSemaphore(SEMAPHORE_T);/*----------------- *//* Thread functions *//*----------------- */ /* Releases control to the task switcher in non-preemptive */ /* multitasking operating systems. */void osdSwitchThreads(void); /* Starts a thread function */uLONG osdStartThread(void *,void *);/* what is my thread id */uLONG osdGetThreadID(void);/* wakes up the specifed thread */void osdWakeThread(uLONG);/* osd sleep for x miliseconds */void osdSleep(uLONG);#define DPT_THREAD_PRIORITY_LOWEST 0x00#define DPT_THREAD_PRIORITY_NORMAL 0x01#define DPT_THREAD_PRIORITY_HIGHEST 0x02uCHAR osdSetThreadPriority(uLONG tid, uCHAR priority);#ifdef __cplusplus } /* end the xtern "C" declaration */#endif#endif /* osd_util_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -