5 #include <ul_lib/ulan.h>
18 #define NULL_CODE NULL
20 #define ULOI_CODE code
25 #ifndef ULOI_GENOBJIDTAG
26 #ifdef CONFIG_ULOI_GENOBJIDTAG
27 #define ULOI_GENOBJIDTAG(_name,_oid) \
28 void uloid_objidtag_note_##_name () __attribute__ ((alias (#_oid)));
29 /*__NUM2ASM(uloid_objidtag_##_name,_oid)*/
30 #endif /*CONFIG_ULOI_GENOBJIDTAG*/
31 #endif /*ULOI_GENOBJIDTAG*/
33 #ifndef ULOI_GENOBJIDTAG
34 #define ULOI_GENOBJIDTAG(_name,_oid)
35 #endif /*ULOI_GENOBJIDTAG*/
38 #define ULOI_TMBUF_LEN 30
40 #ifdef UL_WITHOUT_HANDLE
41 #define ULOI_ARG_coninfo
42 #define ULOI_ARG1_coninfo
43 #define ULOI_PARAM_coninfo
44 #define ULOI_PARAM1_coninfo
45 #define coninfo (&uloi_coninfo_global)
46 extern uloi_coninfo_t uloi_coninfo_global;
47 extern UL_ARGPTRTYPE uchar uloi_tmpbuf[ULOI_TMBUF_LEN];
48 #else /*UL_WITHOUT_HANDLE*/
49 #define ul_ssize_t ssize_t
50 #define ULOI_ARG_coninfo coninfo,
51 #define ULOI_ARG1_coninfo coninfo
52 #define ULOI_PARAM_coninfo uloi_coninfo_t *coninfo,
53 #define ULOI_PARAM1_coninfo uloi_coninfo_t *coninfo
54 #endif /*UL_WITHOUT_HANDLE*/
56 #define ULOI_CONINFO_OUTOPEN 1
58 typedef unsigned uloi_oid_t;
60 typedef struct uloi_objdes_t {
62 const ULOI_CODE void *aoid;
63 int (*rdfnc)(ULOI_PARAM_coninfo void *context);
65 int (*wrfnc)(ULOI_PARAM_coninfo void *context);
69 #define ULOI_GENAOID2(_name,_type) \
70 const ULOI_CODE struct {char len_all; \
72 char val_name[sizeof(#_name)-1]; \
74 char val_type[sizeof(_type)-1]; \
75 } uloi_aoid_##_name={ \
76 sizeof(#_name)+sizeof(_type), \
83 #define ULOI_GENOBJDES_RAW(_oid,_aoid,_rdfnc,_rdcontext,_wrfnc,_wrcontext) \
93 #define ULOI_GENOBJDES(_name,_oid,_type,_rdfnc,_rdcontext,_wrfnc,_wrcontext) \
94 ULOI_GENAOID2(_name,_type) \
95 const ULOI_CODE uloi_objdes_t uloid_objdes_##_name = \
96 ULOI_GENOBJDES_RAW(_oid,&uloi_aoid_##_name,_rdfnc,_rdcontext,_wrfnc,_wrcontext) \
97 ULOI_GENOBJIDTAG(_name,_oid)
99 #define ULOI_GENOBJDES_STD(_name,_oid,_type,_rdfnc,_rdcontext,_wrfnc,_wrcontext) \
102 typedef struct uloi_objdes_array_t {
103 /*gsa_array_field_t;*/
105 uloi_objdes_t **items;
107 unsigned alloc_count;
109 } uloi_objdes_array_t;
113 uloi_objdes_array_at (const uloi_objdes_array_t * array, unsigned indx);
116 uloi_objdes_array_find (const uloi_objdes_array_t * array, uloi_oid_t * key);
119 uloi_objdes_array_find_indx (const uloi_objdes_array_t * array,
123 uloi_objdes_array_find_after_indx (const uloi_objdes_array_t * array,
127 int uloi_i_open(ULOI_PARAM_coninfo UL_ARGPTRTYPE ul_msginfo *imsginfo);
128 int uloi_o_open(ULOI_PARAM1_coninfo);
129 int uloi_i_close(ULOI_PARAM1_coninfo);
130 int uloi_o_close(ULOI_PARAM1_coninfo);
131 ul_ssize_t uloi_i_read(ULOI_PARAM_coninfo void *buffer, size_t size);
132 ul_ssize_t uloi_o_write(ULOI_PARAM_coninfo const void *buffer, size_t size);
134 int uloi_process_msg(ULOI_PARAM_coninfo uloi_objdes_array_t *objdes_array, UL_ARGPTRTYPE ul_msginfo *imsginfo);
136 int uloi_doii_fnc(ULOI_PARAM_coninfo void *context);
137 int uloi_doio_fnc(ULOI_PARAM_coninfo void *context);
138 int uloi_qoii_fnc(ULOI_PARAM_coninfo void *context);
139 int uloi_qoio_fnc(ULOI_PARAM_coninfo void *context);
140 int uloi_rdrq_fnc(ULOI_PARAM_coninfo void *context);
142 int uloi_char_rdfnc(ULOI_PARAM_coninfo void *context);
143 int uloi_char_wrfnc(ULOI_PARAM_coninfo void *context);
144 int uloi_uchar_rdfnc(ULOI_PARAM_coninfo void *context);
145 int uloi_uchar_wrfnc(ULOI_PARAM_coninfo void *context);
146 int uloi_int_rdfnc(ULOI_PARAM_coninfo void *context);
147 int uloi_int_wrfnc(ULOI_PARAM_coninfo void *context);
148 int uloi_uint_rdfnc(ULOI_PARAM_coninfo void *context);
149 int uloi_uint_wrfnc(ULOI_PARAM_coninfo void *context);
150 int uloi_long_rdfnc(ULOI_PARAM_coninfo void *context);
151 int uloi_long_wrfnc(ULOI_PARAM_coninfo void *context);
152 int uloi_ulong_rdfnc(ULOI_PARAM_coninfo void *context);
153 int uloi_ulong_wrfnc(ULOI_PARAM_coninfo void *context);
159 #endif /*_ULOI_BASE_H*/