home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / sys / itypes.h < prev    next >
Text File  |  1999-05-11  |  9KB  |  295 lines

  1. /***************************************************************************/
  2. /* IBM CONFIDENTIAL                                                        */
  3. /* OCO Source Materials                                                    */
  4. /* IBM TCP/IP for OS/2                                                     */
  5. /* (c) Copyright IBM Corp 1992,1997                                        */
  6. /* The source code for this program is not published or otherwise          */
  7. /* divested of its trade secrets, irrespective of what has been            */
  8. /* deposited with the U.S. Copyright Office                                */
  9. /***************************************************************************/
  10. #ifndef SYS_ITYPES_H
  11. #define SYS_ITYPES_H
  12.  
  13. #include <types.h>
  14. #include <nerrno.h>
  15.  
  16. /* The socket bit array is a one dimensional array of   */
  17. /* longs which is used to represent 32K-1 sockets.      */
  18. /* Each bit represents a socket and is used to indicate */
  19. /* if the socket is in use (bit is 0) or can be used    */
  20. /* (bit is 1).  The socket number start in element zero */
  21. /* of the array with the least significant bit of the   */
  22. /* long representing socket 0 and the most significant  */
  23. /* bit being socket 31, element 1 represents sockets 32 */
  24. /* through 63, and so on.                               */
  25.  
  26. #define BITSPERINT           32     /* bit per element                   */
  27. #define MAX_ELEMENTS         1024   /* number of elements                */
  28. #define START_ELEMENT_SMALL  0      /* start from array element 0        */
  29. #define MAX_ELEMENTS_SMALL   64     /* end at element 63 (64 elements)   */
  30. #define MAX_SOCKETS_SMALL     (MAX_ELEMENTS_SMALL*BITSPERINT)
  31. #define START_ELEMENT_LARGE  64     /* start from array element 64       */
  32. #define MAX_ELEMENTS_LARGE   960    /* end at element 1023 (1024 element */
  33. #define MAX_SOCKETS_LARGE     (MAX_ELEMENTS_LARGE*BITSPERINT)
  34. #undef  MAXSOCKETS
  35. #define MAXSOCKETS           (MAX_SOCKETS_SMALL + MAX_SOCKETS_LARGE)
  36. #define SMALLSOCK            0
  37. #define LARGESOCK            1
  38.  
  39. #define S_ELEMENT(x) (x/BITSPERINT)
  40. #define S_BIT(x)  (x%BITSPERINT)
  41.  
  42. /* set the x-th bit in the array a */
  43. #define SET(a, x)  (a[S_ELEMENT(x)] |= (1 << S_BIT(x)))
  44.  
  45. /* clear the x-th bit in the array a */
  46. #define CLR(a, x)  (a[S_ELEMENT(x)] &= ~(1 << S_BIT(x)))
  47.  
  48. /* determine if the x-th in array a is set */
  49. #define ISSET(a, x)  (a[S_ELEMENT(x)] & (1 << S_BIT(x)))
  50.  
  51. /* A one-dimensional array is used as a hash table to      */
  52. /* maintain a hashed linked list of the allocated sockets. */
  53. /* This mechanism allows access of the socket via it's     */
  54. /* designated socket number (i.e. the socket number can be */
  55. /* hashed to obtain the associated hash bucket and then    */
  56. /* the linked list of sockets can be searched to obtain    */
  57. /* the desired socket - this implies you must provide both */
  58. /* the socket number and a pointer to the socket).         */
  59.  
  60. #define MAX_BUCKETS    4096
  61. #define S_BUCKET(x)    (x%MAX_BUCKETS)
  62.  
  63. typedef long daddr_t;
  64. typedef unsigned (*FUNC)();
  65.  
  66. #ifndef __P
  67. #define __P(args)  args
  68. #endif
  69. #ifdef VACPP
  70. void * _Optlink memset (void *s, char c, size_t n);
  71. void * _Optlink memmove(void *s, const void *ct, size_t n);
  72. int    _Optlink memcmp (const void *cs, void *c, size_t n);
  73. void * _Optlink memcpy (void *s, const void *ct, size_t n);
  74. #endif
  75.  
  76. #if defined(__EXTENDED__)
  77.  
  78.   #ifdef _M_I386
  79.    /* following code came from vacppos2\include\stdlib.h */
  80.    /* they were originally inside #if __EXTENDED__ & _M_I386 */
  81.    void  _Builtin __srotl(unsigned short, int);
  82.    #define _srotl( x, y) __srotl( (x), (y) )
  83.    void  _Builtin __lrotr(unsigned long, int);
  84.    #define _lrotr( x, y) __lrotr( (x), (y) )
  85.    void  _Builtin __lrotl(unsigned long, int);
  86.    #define _lrotl( x, y) __lrotl( (x), (y) )
  87.   #endif
  88. #endif
  89.  
  90. #ifndef INLINE
  91. #ifdef VACPP
  92. unsigned long _Optlink _lswap(unsigned long l);
  93. unsigned short _Optlink _bswap(unsigned short s);
  94. #define bswap(s) (_srotl((s),8))
  95. #define _bswap(s) (_srotl((s),8))
  96. #define lswap(s) ( (_lrotr(s,8) & 0xff00ff00) | (_lrotl(s,8) & 0x00ff00ff) )
  97. #define _lswap(s) ( (_lrotr(s,8) & 0xff00ff00) | (_lrotl(s,8) & 0x00ff00ff) )
  98. #else
  99. #define lswap(x)   ((x<<24)|(x>>24)|((x&0xff00)<<8)|((x&0xff0000)>>8))
  100. #define bswap(x)   (((unsigned)x<<8)|((unsigned)x>>8))
  101. #endif
  102. #else
  103. these can be more efficient...see inetntol.asm
  104. unsigned long lswap(unsigned long);
  105. #define in_lswap(x,y)   _asm { \
  106.         _asm mov ax,(x) \
  107.         _asm mov dx,(x)+2 \
  108.         _asm xchg dh,al \
  109.         _asm xchg dl,ah \
  110.         _asm mov (y),ax \
  111.         _asm mov (y)+2,dx \
  112.         }
  113. #define bswap(x)   (((unsigned)x<<8)|((unsigned)x>>8))
  114. #define splis(x)   _asm { \
  115.         _asm pushf \
  116.         _asm pop ax \
  117.         _asm and ax,0200h \
  118.         _asm mov x,ax \
  119.         }
  120. #endif
  121.  
  122. #define htonl(x)   (_lswap(x))
  123. #define ntohl(x)   (_lswap(x))
  124. #define htons(x)   (_bswap(x))
  125. #define ntohs(x)   (_bswap(x))
  126.  
  127. #define PZERO 0
  128. #define TRUE 1
  129. #define FALSE 0
  130.  
  131. #define NIL  ((char  *) 0)
  132.  
  133. #ifndef NULL
  134. #define NULL ((void  *) 0)
  135. #endif
  136.  
  137. #ifndef MIN
  138. #define MIN(a,b) (((a)<(b))?(a):(b))
  139. #define imin(x,y) MIN((x),(y))
  140. #define MAX(a,b) (((a)>(b))?(a):(b))
  141. #endif
  142.  
  143. #ifndef min
  144. #define min(a,b) (((a)<(b))?(a):(b))
  145. #endif
  146.  
  147. #ifdef SPL16
  148.    #define sploff( ) _asm {sti}
  149.    #define splon( )  _asm {cli}
  150. #else
  151. #if defined(__EXTENDED__)
  152.  
  153.   #ifdef _M_I386
  154.    /* following code came from vacppos2\include\stdlib.h */
  155.    /* they were originally inside #if __EXTENDED__ & _M_I386 */
  156.    void  _Builtin __enable( void );
  157.    void  _Builtin __disable( void );
  158.  
  159.    #define sploff( )  __enable( )
  160.    #define splon( ) __disable( )
  161.   #endif
  162. #endif
  163. #endif /* endif SPL16 */
  164.  
  165. #define splx(x) sploff()
  166. #define splimp() splon()
  167. #define splnet() splon()
  168. #ifndef splhigh
  169. #define splhigh() 3
  170. #endif
  171. #ifndef splimp
  172. #define splimp() 2
  173. #endif
  174. #ifndef splclock
  175. #define splclock(x) 4
  176. #endif
  177.  
  178.  
  179. #define copyout(x,y,z) memcpy((y),(x),(z))
  180.  
  181. #define strcasecmp(x,y) strcmpi((x),(y))
  182. #define strncasecmp(x,y,z) strnicmp(x,y,z)
  183. #define ovbcopy(x,y,z) memmove((y),(x),(z))
  184.  
  185. #define timercmp(t1,t2,op) (((t1)->tv_sec op (t2)->tv_sec) || \
  186.                            (((t1)->tv_sec == (t2)->tv_sec) \
  187.                            && ((t1)->tv_usec op (t2)->tv_usec)))
  188. //#define random() ((u_long)rand())
  189. //#define srandom(x) srand(x)
  190.  
  191. typedef unsigned long uid_t;
  192. typedef unsigned long gid_t;
  193. //typedef char * va_list;
  194.  
  195.  
  196. #define LAN_RCF_BROADALL        0x8000  /* all-routes broadcast */
  197. #define LAN_RCF_BROADSINGLE     0xc000  /* single-route broadcast */
  198.  
  199. #ifndef __TCPPROTO
  200. #define __TCPPROTO(args) args
  201. #endif /* __TCPPROTO */
  202.  
  203.  
  204. #ifdef KERNEL
  205.  
  206.  
  207. #define index(s, c) strchr((s), (c))
  208. #define bzero(p, l) memset((void *)(p),(int)0, (size_t)(l))
  209. #define bcmp(s1, s2, l) memcmp((void *)(s1),(void *)(s2), (size_t)(l))
  210. #define bcopy(f, t, l)  memcpy((void *)(t), (void *)(f), (size_t)(l))
  211. #ifndef copyout
  212. #define copyout(src,dst,len) memcpy((void *)(dst),(void *)(src),(size_t)(len))
  213. #endif
  214. #define copyin(src,dst,len)  memcpy((void *)(dst),(void *)(src),(size_t)(len))
  215. #ifndef max
  216. #define max(a,b) (((a)>(b)) ? (a) : (b))
  217. #endif
  218. #ifndef min
  219. #define min(a,b) (((a)<(b)) ? (a) : (b))
  220. #endif
  221. #ifndef imin
  222. #define imin(a,b) (((a)<(b)) ? (a) : (b))
  223. #endif
  224. #ifndef strcasecmp
  225. #define strcasecmp  strcmp
  226. #endif
  227. #define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
  228. #define BMALLOC(ptr,cast,sz,x,y) ptr=(cast)get_cluster()
  229. #define BFREE(ptr,x) free_cluster(ptr)
  230. #define MALLOC(ppp,cast,sz,x,y) {if (sz<= MLEN) {struct mbuf *m_temp=m_get(y,x); if (m_temp) ppp=mtod(m_temp, cast); else ppp=0;} else panic("MALLOC");}
  231. #define FREE(ptr,x) m_free(dtom(ptr))
  232. //#define ntohl(lg) (((unsigned long)lg >> 24) | ((unsigned long)lg << 24) | \
  233. //((lg << 8) & 0xFF0000) | ((lg >> 8) & 0xFF00))
  234. //#define ntohs(sh) ((unsigned short)( ((unsigned short)sh >> 8) | \
  235. //                                     ((unsigned short)sh << 8) ) )
  236. #ifndef ntohl
  237. #define ntohl(x)   swaplong((x))
  238. #define ntohs(x)   swapshort((x))
  239. #define htonl(x)   ntohl(x)
  240. #define htons(x)   ntohs(x)
  241. #define NTOHL(x)   x=ntohl(x);
  242. #define NTOHS(x)   x=ntohs(x);
  243. #define HTONL(x)   x=htonl(x);
  244. #define HTONS(x)   x=htons(x);
  245. #endif
  246. #define panic(str) { \
  247.                      extern short ComPort;   \
  248.                      extern unsigned long  debug_flag; \
  249.                      dprintf(ComPort,debug_flag,str,"\n"); \
  250.                      int3break(); \
  251.                    }
  252. #define log(typ,msg) dprintf(ComPort,debug_flag,msg);
  253. #define log1(typ,msg,p1) dprintf(ComPort,debug_flag,msg,p1);
  254. #define log2(typ,msg,p1,p2) dprintf(ComPort,debug_flag,msg,p1,p2);
  255. #define log3(typ,msg,p1,p2,p3) dprintf(ComPort,debug_flag,msg,p1,p2,p3);
  256. #define SHRT_MAX  0x7FFF
  257. #define LONG_MAX  0x7FFFFFFF /* perf:40587 --Vani*/
  258.  
  259. #ifdef DEKKO
  260. #define TCPDEKKOB(a,b) DHOOKD0(F,4,0,a,b)
  261. #else
  262. #define TCPDEKKOB(a,b)
  263. #endif
  264. #ifdef DEKKO
  265. #define TCPDEKKOE(a,b) DHOOKD0(F,4,80,a,b)
  266. #else
  267. #define TCPDEKKOE(a,b)
  268. #endif
  269.  
  270. /* used by afinet */
  271. extern struct timeval afinet_time;
  272. extern struct timezone tz;                      /* XXX */
  273. extern long tick;                       /* usec per tick (1000000 / hz) */
  274. extern long hz;                         /* system clock's frequency */
  275.  
  276. #endif
  277.  
  278.  
  279. #endif /* !SYS_ITYPES_H */
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.