10 typedef int8_t udi_sbit8_t; /* signed 8-bit: -2^7..2^7-1 */
11 typedef int16_t udi_sbit16_t; /* signed 16-bit: -2^15..2^15-1 */
12 typedef int32_t udi_sbit32_t; /* signed 32-bit: -2^31..2^31-1 */
13 typedef uint8_t udi_ubit8_t; /* unsigned 8-bit: 0..28-1 */
14 typedef uint16_t udi_ubit16_t; /* unsigned 16-bit: 0..216-1 */
15 typedef uint32_t udi_ubit32_t; /* unsigned 32-bit: 0..232-1 */
18 # define NULL ((void*)0)
22 #include "udi/arch/ia32.h"
24 #error "Unknown UDI ABI"
28 * \name Values and Flags for udi_status_t
31 #define UDI_STATUS_CODE_MASK 0x0000FFFF
32 #define UDI_STAT_META_SPECIFIC 0x00008000
33 #define UDI_SPECIFIC_STATUS_MASK 0x00007FFF
34 #define UDI_CORRELATE_OFFSET 16
35 #define UDI_CORRELATE_MASK 0xFFFF0000
36 /* Common Status Values */
38 #define UDI_STAT_NOT_SUPPORTED 1
39 #define UDI_STAT_NOT_UNDERSTOOD 2
40 #define UDI_STAT_INVALID_STATE 3
41 #define UDI_STAT_MISTAKEN_IDENTITY 4
42 #define UDI_STAT_ABORTED 5
43 #define UDI_STAT_TIMEOUT 6
44 #define UDI_STAT_BUSY 7
45 #define UDI_STAT_RESOURCE_UNAVAIL 8
46 #define UDI_STAT_HW_PROBLEM 9
47 #define UDI_STAT_NOT_RESPONDING 10
48 #define UDI_STAT_DATA_UNDERRUN 11
49 #define UDI_STAT_DATA_OVERRUN 12
50 #define UDI_STAT_DATA_ERROR 13
51 #define UDI_STAT_PARENT_DRV_ERROR 14
52 #define UDI_STAT_CANNOT_BIND 15
53 #define UDI_STAT_CANNOT_BIND_EXCL 16
54 #define UDI_STAT_TOO_MANY_PARENTS 17
55 #define UDI_STAT_BAD_PARENT_TYPE 18
56 #define UDI_STAT_TERMINATED 19
57 #define UDI_STAT_ATTR_MISMATCH 20
63 * \name Data Layout Specifiers
66 typedef const udi_ubit8_t udi_layout_t;
67 /* Specific-Length Layout Type Codes */
68 #define UDI_DL_UBIT8_T 1
69 #define UDI_DL_SBIT8_T 2
70 #define UDI_DL_UBIT16_T 3
71 #define UDI_DL_SBIT16_T 4
72 #define UDI_DL_UBIT32_T 5
73 #define UDI_DL_SBIT32_T 6
74 #define UDI_DL_BOOLEAN_T 7
75 #define UDI_DL_STATUS_T 8
76 /* Abstract Element Layout Type Codes */
77 #define UDI_DL_INDEX_T 20
78 /* Opaque Handle Element Layout Type Codes */
79 #define UDI_DL_CHANNEL_T 30
80 #define UDI_DL_ORIGIN_T 32
81 /* Indirect Element Layout Type Codes */
84 #define UDI_DL_INLINE_UNTYPED 42
85 #define UDI_DL_INLINE_DRIVER_TYPED 43
86 #define UDI_DL_MOVABLE_UNTYPED 44
87 /* Nested Element Layout Type Codes */
88 #define UDI_DL_INLINE_TYPED 50
89 #define UDI_DL_MOVABLE_TYPED 51
90 #define UDI_DL_ARRAY 52
97 typedef struct udi_init_s udi_init_t;
98 typedef struct udi_primary_init_s udi_primary_init_t;
99 typedef struct udi_secondary_init_s udi_secondary_init_t;
100 typedef struct udi_ops_init_s udi_ops_init_t;
101 typedef struct udi_cb_init_s udi_cb_init_t;
102 typedef struct udi_cb_select_s udi_cb_select_t;
103 typedef struct udi_gcb_init_s udi_gcb_init_t;
105 typedef struct udi_init_context_s udi_init_context_t;
106 typedef struct udi_limits_s udi_limits_t;
107 typedef struct udi_chan_context_s udi_chan_context_t;
108 typedef struct udi_child_chan_context_s udi_child_chan_context_t;
110 typedef void udi_op_t(void);
111 typedef udi_op_t * const udi_ops_vector_t;
113 // === INCLUDE SUB-SECTIONS ===
114 #include "udi/cb.h" // Control Blocks
115 #include "udi/time.h" // Timer Services
116 #include "udi/log.h" // Logging
117 #include "udi/attr.h" // Attributes
118 #include "udi/strmem.h" // String/Memory
119 #include "udi/queues.h" // Queues
120 #include "udi/buf.h" // Buffers
121 #include "udi/mem.h" // Memory Management
122 #include "udi/imc.h" // Inter-module Communication
123 #include "udi/meta_mgmt.h" // Management Metalanguage
124 #include "udi/meta_gio.h" // General IO Metalanguage
125 #include "udi/init.h" // Init
126 #include "udi/mei.h" // Init