annotate packages/net/tcpip/current/include/machine/param.h @ 1777:c16341b1bac6 default tip

* Added execute permissions to files missed in conversion from CVS
author alexs
date Mon, 12 Oct 2009 02:26:09 +0100
parents e0c0827131d1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
97
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
2 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
3 // include/machine/param.h
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
4 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
5 // Architecture/platform specific parameters
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
6 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
8 //####BSDCOPYRIGHTBEGIN####
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
9 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
10 // -------------------------------------------
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
11 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
12 // Portions of this software may have been derived from OpenBSD or other sources,
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
13 // and are covered by the appropriate copyright disclaimers included herein.
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
14 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
15 // -------------------------------------------
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
16 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
17 //####BSDCOPYRIGHTEND####
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
18 //==========================================================================
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
19 //#####DESCRIPTIONBEGIN####
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
20 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
21 // Author(s): gthomas
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
22 // Contributors: gthomas
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
23 // Date: 2000-01-10
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
24 // Purpose:
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
25 // Description:
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
26 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
27 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
28 //####DESCRIPTIONEND####
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
29 //
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
30 //==========================================================================
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
31
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
32
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
33 #ifndef _MACHINE_PARAM_H_
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
34 #define _MACHINE_PARAM_H_
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
35
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
36 #include <pkgconf/net.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
37
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
38 /*
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
39 * Constants related to network buffer management.
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
40 * MCLBYTES must be no larger than CLBYTES (the software page size), and,
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
41 * on machines that exchange pages of input or output buffers with mbuf
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
42 * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
43 * of the hardware page size.
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
44 */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
45 #define MSIZE 128 /* size of an mbuf */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
46 #define MCLSHIFT 11 /* convert bytes to m_buf clusters */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
47 #define MCLBYTES (1 << MCLSHIFT) /* size of a m_buf cluster */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
48 #define MCLOFSET (MCLBYTES - 1) /* offset within a m_buf cluster */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
49 #define CLBYTES 4096 /* size of actual cluster */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
50
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
51 /*
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
52 * Round p (pointer or byte index) up to a correctly-aligned value
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
53 * for all data types (int, long, ...). The result is u_int and
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
54 * must be cast to any desired pointer type.
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
55 */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
56 #define ALIGNBYTES (sizeof(int) - 1)
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
57 #define ALIGN(p) (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
58
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
59 // These symbols are used in the IPV6 stuff
112
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
60 // (be more defensive about external setup)
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
61 #ifdef __linux__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
62 #undef __linux__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
63 #endif
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
64 #ifdef __bsdi__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
65 #undef __bsdi__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
66 #endif
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
67 #ifdef __FreeBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
68 #undef __FreeBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
69 #endif
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
70 #ifdef __OpenBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
71 #undef __OpenBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
72 #endif
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
73 #ifdef __NetBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
74 #undef __NetBSD__
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
75 #endif
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
76
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
77
97
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
78 #define __linux__ 0
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
79 #define __bsdi__ 0
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
80 #define __FreeBSD__ 0
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
81 #define __OpenBSD__ 1
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
82 #define __NetBSD__ 0
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
83
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
84 // These definitions here to avoid needing <sys/systm.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
85 // This probably doesn't belong here, but we need these definitions
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
86 #include <lib/libkern/libkern.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
87 #define SCARG(p,k) ((p)->k.datum) /* get arg from args pointer */
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
88 #include <stdarg.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
89
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
90 // TEMP
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
91
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
92 #include <cyg/infra/diag.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
93 #include <cyg/hal/hal_intr.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
94 #include <cyg/kernel/kapi.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
95 #include <cyg/io/file.h>
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
96
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
97 struct net_stats {
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
98 int count;
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
99 cyg_uint32 min_time, max_time, total_time;
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
100 };
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
101
199
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 112
diff changeset
102 #ifdef CYGDBG_NET_TIMING_STATS
97
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
103 #define START_STATS() \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
104 cyg_uint32 start_time, end_time, elapsed_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
105 HAL_CLOCK_READ(&start_time);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
106 #define FINISH_STATS(stats) \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
107 HAL_CLOCK_READ(&end_time); \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
108 if (end_time < start_time) { \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
109 elapsed_time = (end_time+CYGNUM_KERNEL_COUNTERS_RTC_PERIOD) - start_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
110 } else { \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
111 elapsed_time = end_time - start_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
112 } \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
113 if (stats.min_time == 0) { \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
114 stats.min_time = 0x7FFFFFFF; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
115 } \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
116 if (elapsed_time < stats.min_time) \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
117 stats.min_time = elapsed_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
118 if (elapsed_time > stats.max_time) \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
119 stats.max_time = elapsed_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
120 stats.total_time += elapsed_time; \
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
121 stats.count++;
199
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 112
diff changeset
122 #else
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 112
diff changeset
123 #define START_STATS()
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 112
diff changeset
124 #define FINISH_STATS(X)
920b9b754b53 Merge from eCos master repository on 2001-12-15-12:00:33-GMT
jlarmour
parents: 112
diff changeset
125 #endif
97
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
126
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
127 // timeout support
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
128 typedef void (timeout_fun)(void *);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
129 extern cyg_uint32 timeout(timeout_fun *fun, void *arg, cyg_int32 delta);
112
02ea4320376c Merge from eCos master repository on 2000-07-21-21:01:39-BST
jlarmour
parents: 97
diff changeset
130 extern void untimeout(timeout_fun *fun, void *arg);
97
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
131 extern int uiomove(caddr_t cp, int n, struct uio *uio);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
132 extern int copyout(const void *s, void *d, size_t len);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
133 extern int copyin(const void *s, void *d, size_t len);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
134 extern void ovbcopy(const void *s, void *d, size_t len);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
135 extern void get_mono_time(void);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
136 extern int arc4random(void);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
137 extern void get_random_bytes(void *buf, size_t len);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
138
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
139 extern void *hashinit(int elements, int type, int flags, u_long *hashmask);
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
140
ced4577552cd Merge from eCos master repository on 2000-06-06-08:44:00-BST
jlarmour
parents:
diff changeset
141 #endif // _MACHINE_PARAM_H_