Tools/NetTest - Add TCP retransmit test
[tpg/acess2.git] / UDI / include / udi.h
1 /**
2  * \file udi.h
3  */
4 #ifndef _UDI_H_
5 #define _UDI_H_
6
7 #ifndef UDI_VERSION
8 # error "Please define UDI_VERSION before including"
9 #endif
10 #if UDI_VERSION < 0x100
11 # error "Requesting an unsupported UDI version (pre 1.0)"
12 #endif
13 #if UDI_VERSION > 0x101
14 # error "Requesting an unsupported UDI version (post 1.01)"
15 #endif
16
17 #include <stdint.h>
18 #include <stdarg.h>
19
20 typedef int8_t  udi_sbit8_t;    /* signed 8-bit: -2^7..2^7-1 */
21 typedef int16_t udi_sbit16_t;   /* signed 16-bit: -2^15..2^15-1 */
22 typedef int32_t udi_sbit32_t;   /* signed 32-bit: -2^31..2^31-1 */
23 typedef uint8_t         udi_ubit8_t;    /* unsigned 8-bit: 0..28-1 */
24 typedef uint16_t        udi_ubit16_t;   /* unsigned 16-bit: 0..216-1 */
25 typedef uint32_t        udi_ubit32_t;   /* unsigned 32-bit: 0..232-1 */
26
27 #ifndef NULL
28 # define NULL   ((void*)0)
29 #endif
30
31 #if UDI_ABI_is_ia32
32 #include "udi/arch/ia32.h"
33 #else
34 #error "Unknown UDI ABI"
35 #endif
36
37 /**
38  * \name Values and Flags for udi_status_t
39  * \{
40  */
41 #define UDI_STATUS_CODE_MASK            0x0000FFFF
42 #define UDI_STAT_META_SPECIFIC          0x00008000
43 #define UDI_SPECIFIC_STATUS_MASK        0x00007FFF
44 #define UDI_CORRELATE_OFFSET            16
45 #define UDI_CORRELATE_MASK                      0xFFFF0000
46 /* Common Status Values */
47 #define UDI_OK                                          0
48 #define UDI_STAT_NOT_SUPPORTED          1
49 #define UDI_STAT_NOT_UNDERSTOOD         2
50 #define UDI_STAT_INVALID_STATE          3
51 #define UDI_STAT_MISTAKEN_IDENTITY      4
52 #define UDI_STAT_ABORTED                        5
53 #define UDI_STAT_TIMEOUT                        6
54 #define UDI_STAT_BUSY                           7
55 #define UDI_STAT_RESOURCE_UNAVAIL       8
56 #define UDI_STAT_HW_PROBLEM                     9
57 #define UDI_STAT_NOT_RESPONDING         10
58 #define UDI_STAT_DATA_UNDERRUN          11
59 #define UDI_STAT_DATA_OVERRUN           12
60 #define UDI_STAT_DATA_ERROR                     13
61 #define UDI_STAT_PARENT_DRV_ERROR       14
62 #define UDI_STAT_CANNOT_BIND            15
63 #define UDI_STAT_CANNOT_BIND_EXCL       16
64 #define UDI_STAT_TOO_MANY_PARENTS       17
65 #define UDI_STAT_BAD_PARENT_TYPE        18
66 #define UDI_STAT_TERMINATED                     19
67 #define UDI_STAT_ATTR_MISMATCH          20
68 /**
69  * \}
70  */
71
72 /**
73  * \name Data Layout Specifiers
74  * \{
75  */
76 typedef const udi_ubit8_t       udi_layout_t;
77 /* Specific-Length Layout Type Codes */
78 #define UDI_DL_UBIT8_T                   1
79 #define UDI_DL_SBIT8_T                   2
80 #define UDI_DL_UBIT16_T                  3
81 #define UDI_DL_SBIT16_T                  4
82 #define UDI_DL_UBIT32_T                  5
83 #define UDI_DL_SBIT32_T                  6
84 #define UDI_DL_BOOLEAN_T                 7
85 #define UDI_DL_STATUS_T                  8
86 /* Abstract Element Layout Type Codes */
87 #define UDI_DL_INDEX_T                   20
88 /* Opaque Handle Element Layout Type Codes */
89 #define UDI_DL_CHANNEL_T                 30
90 #define UDI_DL_ORIGIN_T                  32
91 /* Indirect Element Layout Type Codes */
92 #define UDI_DL_BUF                       40
93 #define UDI_DL_CB                        41
94 #define UDI_DL_INLINE_UNTYPED            42
95 #define UDI_DL_INLINE_DRIVER_TYPED       43
96 #define UDI_DL_MOVABLE_UNTYPED           44
97 /* Nested Element Layout Type Codes */
98 #define UDI_DL_INLINE_TYPED              50
99 #define UDI_DL_MOVABLE_TYPED             51
100 #define UDI_DL_ARRAY                     52
101 #define UDI_DL_END                       0
102 /**
103  * \}
104  */
105
106
107 typedef struct udi_init_s               udi_init_t;
108 typedef struct udi_primary_init_s       udi_primary_init_t;
109 typedef struct udi_secondary_init_s     udi_secondary_init_t;
110 typedef struct udi_ops_init_s   udi_ops_init_t;
111 typedef struct udi_cb_init_s    udi_cb_init_t;
112 typedef struct udi_cb_select_s  udi_cb_select_t;
113 typedef struct udi_gcb_init_s   udi_gcb_init_t;
114
115 typedef struct udi_init_context_s       udi_init_context_t;
116 typedef struct udi_limits_s             udi_limits_t;
117 typedef struct udi_chan_context_s       udi_chan_context_t;
118 typedef struct udi_child_chan_context_s udi_child_chan_context_t;
119
120 typedef void    udi_op_t(void);
121 typedef udi_op_t * const        udi_ops_vector_t;
122
123 // === INCLUDE SUB-SECTIONS ===
124 #include "udi/cb.h"     // Control Blocks
125 #include "udi/time.h"   // Timer Services
126 #include "udi/log.h"    // Logging
127 #include "udi/attr.h"   // Attributes
128 #include "udi/strmem.h" // String/Memory
129 #include "udi/queues.h" // Queues
130 #include "udi/buf.h"    // Buffers
131 #include "udi/mem.h"    // Memory Management
132 #include "udi/imc.h"    // Inter-module Communication
133 #include "udi/meta_mgmt.h"      // Management Metalanguage
134 #include "udi/meta_gio.h"       // General IO Metalanguage
135 #include "udi/init.h"   // Init
136 #include "udi/mei.h"    // Init
137
138 #endif

UCC git Repository :: git.ucc.asn.au