]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - sys/i4b/include/i4b_global.h
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / sys / i4b / include / i4b_global.h
1 /*-
2  * Copyright (c) 1997, 2002 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  */
25
26 /*---------------------------------------------------------------------------
27  *
28  *      i4b_global.h - i4b global include file
29  *      --------------------------------------
30  *
31  * $FreeBSD$
32  *
33  *      last edit-date: [Sun Mar 17 09:55:26 2002]
34  *
35  *---------------------------------------------------------------------------*/
36
37 #ifndef _I4B_GLOBAL_H_
38 #define _I4B_GLOBAL_H_
39
40 /*---------------------------------------------------------------------------*
41  *      hiding OS differences in the kernel
42  *---------------------------------------------------------------------------*/ 
43
44 #if defined(__FreeBSD__) && __FreeBSD__ >= 5
45 /*
46  * Deprecated LKM interface.
47  */
48 #include <sys/module.h>
49 #define PSEUDO_SET(sym, name) \
50         static int name ## _modevent(module_t mod, int type, void *data) \
51         { \
52                 void (*initfunc)(void *) = (void (*)(void *))data; \
53                 switch (type) { \
54                 case MOD_LOAD: \
55                         /* printf(#name " module load\n"); */ \
56                         initfunc(NULL); \
57                         break; \
58                 case MOD_UNLOAD: \
59                         printf(#name " module unload - not possible for this module type\n"); \
60                         return EINVAL; \
61                 default: \
62                         return EOPNOTSUPP; \
63                 } \
64                 return 0; \
65         } \
66         static moduledata_t name ## _mod = { \
67                 #name, \
68                 name ## _modevent, \
69                 (void *)sym \
70         }; \
71         DECLARE_MODULE(name, name ## _mod, SI_SUB_PSEUDO, SI_ORDER_ANY)
72 #endif
73
74 /*---------------*/
75 /* time handling */
76 /*---------------*/
77
78 #include <sys/param.h>
79
80 #define TIMEOUT_FUNC_T  timeout_t *
81 #define SECOND          time_second
82 #define MICROTIME(x)    getmicrotime(&(x))
83
84 /*----------------*/
85 /* timer handling */
86 /*----------------*/
87
88 #define START_TIMER(XHANDLE, XF, XSC, XTIME) XHANDLE = timeout((TIMEOUT_FUNC_T)XF, (void*)XSC, XTIME)
89 #define STOP_TIMER(XHANDLE, XF, XSC)    untimeout((TIMEOUT_FUNC_T)XF, (void*)XSC, XHANDLE)
90
91 /*---------------------------------------------------------------------------*
92  *      misc globally used things in the kernel
93  *---------------------------------------------------------------------------*/ 
94
95 /* timer states */
96
97 #define TIMER_IDLE      1               /* a timer is running   */
98 #define TIMER_ACTIVE    2               /* a timer is idle      */
99
100 /* priority */
101 #define I4BPRI          (PSOCK + 1)
102
103 /* i4b's spl */
104
105 #define SPLI4B()        splimp()        /* spl for i4b          */
106
107 /* critial code region handling macros */
108
109 #define CRIT_VAR        int _svd_spl_   /* declare variable     */
110 #define CRIT_BEG        _svd_spl_ = SPLI4B()    /* save spl     */
111 #define CRIT_END        splx(_svd_spl_) /* restore spl          */
112
113 /* definitions for the STATUS indications L1 -> L2 -> L3 */
114
115 #define STI_ATTACH      0       /* attach at boot time                  */
116 #define STI_L1STAT      1       /* layer 1 status                       */
117 #define STI_L2STAT      2       /* layer 2 status                       */
118 #define STI_TEIASG      3       /* TEI assignments                      */
119 #define STI_PDEACT      4       /* Layer 1 T4 expired = persistent deactivation */
120 #define STI_NOL1ACC     5       /* no outgoing L1 access possible       */
121
122 /* definitions for the COMMAND requests L3 -> L2 -> L1 */
123
124 #define CMR_DOPEN       0       /* daemon opened /dev/i4b               */
125 #define CMR_DCLOSE      1       /* daemon closed /dev/i4b               */
126 #define CMR_SETTRACE    2       /* set D-channel and B-channel trace    */
127 #define CMR_GCST        3       /* get chipset statistics               */
128 #define CMR_CCST        4       /* clear chipset statistics             */
129
130 #endif /* _I4B_GLOBAL_H_ */