The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/raid/asr/osd_util.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1996-1999 Distributed Processing Technology Corporation
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source form, with or without modification, are
    6  * permitted provided that redistributions of source code must retain the
    7  * above copyright notice, this list of conditions and the following disclaimer.
    8  *
    9  * This software is provided `as is' by Distributed Processing Technology and
   10  * any express or implied warranties, including, but not limited to, the
   11  * implied warranties of merchantability and fitness for a particular purpose,
   12  * are disclaimed. In no event shall Distributed Processing Technology be
   13  * liable for any direct, indirect, incidental, special, exemplary or
   14  * consequential damages (including, but not limited to, procurement of
   15  * substitute goods or services; loss of use, data, or profits; or business
   16  * interruptions) however caused and on any theory of liability, whether in
   17  * contract, strict liability, or tort (including negligence or otherwise)
   18  * arising in any way out of the use of this driver software, even if advised
   19  * of the possibility of such damage.
   20  *
   21  * $FreeBSD: src/sys/dev/asr/osd_util.h,v 1.10 2005/01/06 01:42:29 imp Exp $
   22  */
   23 
   24 #ifndef         __OSD_UTIL_H
   25 #define         __OSD_UTIL_H
   26 
   27 /*File - OSD_UTIL.H
   28  ****************************************************************************
   29  *
   30  *Description:
   31  *
   32  *      This file contains defines and function prototypes that are
   33  *operating system dependent.  The resources defined in this file
   34  *are not specific to any particular application.
   35  *
   36  *Copyright Distributed Processing Technology, Corp.
   37  *        140 Candace Dr.
   38  *        Maitland, Fl. 32751   USA
   39  *        Phone: (407) 830-5522  Fax: (407) 260-5366
   40  *        All Rights Reserved
   41  *
   42  *Author:       Doug Anderson
   43  *Date:         1/7/94
   44  *
   45  *Editors:
   46  *
   47  *Remarks:
   48  *
   49  *
   50  *****************************************************************************/
   51 
   52 
   53 /*Definitions - Defines & Constants ----------------------------------------- */
   54 
   55 /*----------------------------- */
   56 /* Operating system selections: */
   57 /*----------------------------- */
   58 
   59 /*#define                     _DPT_MSDOS      */
   60 /*#define                     _DPT_WIN_3X     */
   61 /*#define                     _DPT_WIN_4X     */
   62 /*#define                     _DPT_WIN_NT     */
   63 /*#define                     _DPT_NETWARE    */
   64 /*#define                     _DPT_OS2        */
   65 /*#define                     _DPT_SCO        */
   66 /*#define                     _DPT_UNIXWARE   */
   67 /*#define                     _DPT_SOLARIS    */
   68 /*#define                     _DPT_NEXTSTEP   */
   69 /*#define                     _DPT_BANYAN     */
   70 
   71 /*-------------------------------- */
   72 /* Include the OS specific defines */
   73 /*-------------------------------- */
   74 
   75 /*#define             OS_SELECTION    From Above List */
   76 /*#define             SEMAPHORE_T     ??? */
   77 /*#define             DLL_HANDLE_T    ??? */
   78 
   79 #include         "osd_defs.h"
   80 
   81 #ifndef DPT_UNALIGNED
   82    #define           DPT_UNALIGNED
   83 #endif
   84 
   85 #ifndef DPT_EXPORT
   86    #define           DPT_EXPORT
   87 #endif
   88 
   89 #ifndef DPT_IMPORT
   90    #define           DPT_IMPORT
   91 #endif
   92 
   93 #ifndef DPT_RUNTIME_IMPORT
   94    #define           DPT_RUNTIME_IMPORT  DPT_IMPORT
   95 #endif
   96 
   97 /*--------------------- */
   98 /* OS dependent defines */
   99 /*--------------------- */
  100 
  101 #if defined(_DPT_MSDOS) || defined(_DPT_WIN_3X)
  102    #define           _DPT_16_BIT
  103 #else
  104    #define           _DPT_32_BIT
  105 #endif
  106 
  107 #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)
  108    #define           _DPT_UNIX
  109 #endif
  110 
  111 #if defined(_DPT_WIN_3x) || defined(_DPT_WIN_4X) || defined(_DPT_WIN_NT) \
  112             || defined(_DPT_OS2)
  113    #define           _DPT_DLL_SUPPORT
  114 #endif
  115 
  116 #if !defined(_DPT_MSDOS) && !defined(_DPT_WIN_3X) && !defined(_DPT_NETWARE)
  117    #define           _DPT_PREEMPTIVE
  118 #endif
  119 
  120 #if !defined(_DPT_MSDOS) && !defined(_DPT_WIN_3X)
  121    #define           _DPT_MULTI_THREADED
  122 #endif
  123 
  124 #if !defined(_DPT_MSDOS)
  125    #define           _DPT_MULTI_TASKING
  126 #endif
  127 
  128   /* These exist for platforms that   */
  129   /* chunk when accessing mis-aligned */
  130   /* data                             */
  131 #if defined(SNI_MIPS) || defined(_DPT_SOLARIS)
  132    #if defined(_DPT_BIG_ENDIAN)
  133         #if !defined(_DPT_STRICT_ALIGN)
  134             #define     _DPT_STRICT_ALIGN
  135         #endif
  136    #endif
  137 #endif
  138 
  139   /* Determine if in C or C++ mode */
  140 #ifdef __cplusplus
  141    #define           _DPT_CPP
  142 #else
  143    #define           _DPT_C
  144 #endif
  145 
  146 /*-------------------------------------------------------------------*/
  147 /* Under Solaris the compiler refuses to accept code like:           */
  148 /*   { {"DPT"}, 0, NULL .... },                                      */
  149 /* and complains about the {"DPT"} part by saying "cannot use { }    */
  150 /* to initialize char*".                                             */
  151 /*                                                                   */
  152 /* By defining these ugly macros we can get around this and also     */
  153 /* not have to copy and #ifdef large sections of code.  I know that  */
  154 /* these macros are *really* ugly, but they should help reduce       */
  155 /* maintenance in the long run.                                      */
  156 /*                                                                   */
  157 /* In the meantime, just pray that we can all move to Win32 as soon  */
  158 /* as possible...                                                    */
  159 /*-------------------------------------------------------------------*/
  160 #if !defined(DPTSQO)
  161    #if defined(_DPT_SOLARIS)
  162       #define   DPTSQO
  163       #define   DPTSQC
  164    #else
  165       #define   DPTSQO {
  166       #define   DPTSQC }
  167    #endif  /* solaris */
  168 #endif  /* DPTSQO */
  169 
  170 
  171 /*---------------------- */
  172 /* OS dependent typedefs */
  173 /*---------------------- */
  174 
  175 #if defined(_DPT_MSDOS) || defined(_DPT_SCO)
  176    #define      BYTE unsigned char
  177    #define      WORD unsigned short
  178 #endif
  179 
  180 #ifndef _DPT_TYPEDEFS
  181    #define      _DPT_TYPEDEFS
  182    typedef unsigned char   uCHAR;
  183    typedef unsigned short  uSHORT;
  184    typedef unsigned int    uINT;
  185    typedef unsigned long   uLONG;
  186 
  187    typedef union {
  188          uCHAR        u8[4];
  189          uSHORT       u16[2];
  190          uLONG        u32;
  191    } access_U;
  192 #endif
  193 
  194 #if !defined(NULL)
  195    #define           NULL    0
  196 #endif
  197 
  198 
  199 /*Prototypes - function ----------------------------------------------------- */
  200 
  201 #ifdef __cplusplus
  202    extern "C" {         /* Declare all these functions as "C" functions */
  203 #endif
  204 
  205 /*------------------------ */
  206 /* Byte reversal functions */
  207 /*------------------------ */
  208 
  209   /* Reverses the byte ordering of a 2 byte variable */
  210 #if (!defined(osdSwap2))
  211  uSHORT       osdSwap2(DPT_UNALIGNED uSHORT *);
  212 #endif  /* !osdSwap2 */
  213 
  214   /* Reverses the byte ordering of a 4 byte variable and shifts left 8 bits */
  215 #if (!defined(osdSwap3))
  216  uLONG        osdSwap3(DPT_UNALIGNED uLONG *);
  217 #endif  /* !osdSwap3 */
  218 
  219 
  220 #ifdef _DPT_NETWARE
  221    #include "novpass.h" /* For DPT_Bswapl() prototype */
  222         /* Inline the byte swap */
  223    #ifdef __cplusplus
  224          inline uLONG osdSwap4(uLONG *inLong) {
  225          return *inLong = DPT_Bswapl(*inLong);
  226          }
  227    #else
  228          #define        osdSwap4(inLong)       DPT_Bswapl(inLong)
  229    #endif  /* cplusplus */
  230 #else
  231         /* Reverses the byte ordering of a 4 byte variable */
  232 # if (!defined(osdSwap4))
  233    uLONG        osdSwap4(DPT_UNALIGNED uLONG *);
  234 # endif  /* !osdSwap4 */
  235 
  236   /* The following functions ALWAYS swap regardless of the *
  237    * presence of DPT_BIG_ENDIAN                            */
  238 
  239    uSHORT       trueSwap2(DPT_UNALIGNED uSHORT *);
  240    uLONG        trueSwap4(DPT_UNALIGNED uLONG *);
  241 
  242 #endif  /* netware */
  243 
  244 
  245 /*-------------------------------------*
  246  * Network order swap functions        *
  247  *                                     *
  248  * These functions/macros will be used *
  249  * by the structure insert()/extract() *
  250  * functions.                          *
  251  *
  252  * We will enclose all structure       *
  253  * portability modifications inside    *
  254  * #ifdefs.  When we are ready, we     *
  255  * will #define DPT_PORTABLE to begin  *
  256  * using the modifications.            *
  257  *-------------------------------------*/
  258 uLONG   netSwap4(uLONG val);
  259 
  260 #if defined(_DPT_BIG_ENDIAN)
  261 
  262 /* for big-endian we need to swap */
  263 
  264 #ifndef NET_SWAP_2
  265 #define NET_SWAP_2(x) (((x) >> 8) | ((x) << 8))
  266 #endif  /* NET_SWAP_2 */
  267 
  268 #ifndef NET_SWAP_4
  269 #define NET_SWAP_4(x) netSwap4((x))
  270 #endif  /* NET_SWAP_4 */
  271 
  272 #else
  273 
  274 /* for little-endian we don't need to do anything */
  275 
  276 #ifndef NET_SWAP_2
  277 #define NET_SWAP_2(x) (x)
  278 #endif  /* NET_SWAP_2 */
  279 
  280 #ifndef NET_SWAP_4
  281 #define NET_SWAP_4(x) (x)
  282 #endif  /* NET_SWAP_4 */
  283 
  284 #endif  /* big endian */
  285 
  286 
  287 
  288 /*----------------------------------- */
  289 /* Run-time loadable module functions */
  290 /*----------------------------------- */
  291 
  292   /* Loads the specified run-time loadable DLL */
  293 DLL_HANDLE_T    osdLoadModule(uCHAR *);
  294   /* Unloads the specified run-time loadable DLL */
  295 uSHORT          osdUnloadModule(DLL_HANDLE_T);
  296   /* Returns a pointer to a function inside a run-time loadable DLL */
  297 void *          osdGetFnAddr(DLL_HANDLE_T,uCHAR *);
  298 
  299 /*--------------------------------------- */
  300 /* Mutually exclusive semaphore functions */
  301 /*--------------------------------------- */
  302 
  303   /* Create a named semaphore */
  304 SEMAPHORE_T     osdCreateNamedSemaphore(char *);
  305   /* Create a mutually exlusive semaphore */
  306 SEMAPHORE_T     osdCreateSemaphore(void);
  307         /* create an event semaphore */
  308 SEMAPHORE_T              osdCreateEventSemaphore(void);
  309         /* create a named event semaphore */
  310 SEMAPHORE_T             osdCreateNamedEventSemaphore(char *);
  311 
  312   /* Destroy the specified mutually exclusive semaphore object */
  313 uSHORT          osdDestroySemaphore(SEMAPHORE_T);
  314   /* Request access to the specified mutually exclusive semaphore */
  315 uLONG           osdRequestSemaphore(SEMAPHORE_T,uLONG);
  316   /* Release access to the specified mutually exclusive semaphore */
  317 uSHORT          osdReleaseSemaphore(SEMAPHORE_T);
  318         /* wait for an event to happen */
  319 uLONG                            osdWaitForEventSemaphore(SEMAPHORE_T, uLONG);
  320         /* signal an event */
  321 uLONG                            osdSignalEventSemaphore(SEMAPHORE_T);
  322         /* reset the event */
  323 uLONG                            osdResetEventSemaphore(SEMAPHORE_T);
  324 
  325 /*----------------- */
  326 /* Thread functions */
  327 /*----------------- */
  328 
  329   /* Releases control to the task switcher in non-preemptive */
  330   /* multitasking operating systems. */
  331 void            osdSwitchThreads(void);
  332 
  333   /* Starts a thread function */
  334 uLONG   osdStartThread(void *,void *);
  335 
  336 /* what is my thread id */
  337 uLONG osdGetThreadID(void);
  338 
  339 /* wakes up the specifed thread */
  340 void osdWakeThread(uLONG);
  341 
  342 /* osd sleep for x miliseconds */
  343 void osdSleep(uLONG);
  344 
  345 #define DPT_THREAD_PRIORITY_LOWEST 0x00
  346 #define DPT_THREAD_PRIORITY_NORMAL 0x01
  347 #define DPT_THREAD_PRIORITY_HIGHEST 0x02
  348 
  349 uCHAR osdSetThreadPriority(uLONG tid, uCHAR priority);
  350 
  351 #ifdef __cplusplus
  352    }    /* end the xtern "C" declaration */
  353 #endif
  354 
  355 #endif  /* osd_util_h */

Cache object: ce53cf9d6791e6a4e9af93e114c87e9a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.