8 ds_subscribe(ds_name_regexp
, type
, flags
)
18 len
= strlen(ds_name_regexp
)+1;
19 g
= cpf_grant_direct(DS_PROC_NR
,
20 (vir_bytes
) ds_name_regexp
, len
, CPF_READ
);
27 m
.DS_KEY_GRANT
= (char *) g
;
29 m
.DS_FLAGS
= flags
| (type
& DS_TYPE_MASK
);
31 r
= _taskcall(DS_PROC_NR
, DS_SUBSCRIBE
, &m
);
38 int ds_publish_u32(ds_name
, value
)
47 len
= strlen(ds_name
)+1;
48 g
= cpf_grant_direct(DS_PROC_NR
,
49 (vir_bytes
) ds_name
, len
, CPF_READ
);
54 m
.DS_KEY_GRANT
= (char *) g
;
56 m
.DS_FLAGS
= DS_TYPE_U32
;
58 m
.DS_VAL_LEN
= sizeof(value
);
60 r
= _taskcall(DS_PROC_NR
, DS_PUBLISH
, &m
);
67 int ds_publish_str(ds_name
, value
)
73 cp_grant_id_t g_key
, g_str
;
74 size_t len_key
, len_str
;
77 len_key
= strlen(ds_name
)+1;
78 g_key
= cpf_grant_direct(DS_PROC_NR
,
79 (vir_bytes
) ds_name
, len_key
, CPF_READ
);
80 if(!GRANT_VALID(g_key
))
83 /* Grant for value. */
84 len_str
= strlen(value
)+1;
85 g_str
= cpf_grant_direct(DS_PROC_NR
,
86 (vir_bytes
) value
, len_str
, CPF_READ
);
88 if(!GRANT_VALID(g_str
)) {
93 m
.DS_KEY_GRANT
= (char *) g_key
;
94 m
.DS_KEY_LEN
= len_key
;
95 m
.DS_FLAGS
= DS_TYPE_STR
;
97 m
.DS_VAL_LEN
= len_str
;
99 r
= _taskcall(DS_PROC_NR
, DS_PUBLISH
, &m
);
107 int ds_retrieve_u32(ds_name
, value
)
117 len_key
= strlen(ds_name
)+1;
118 g_key
= cpf_grant_direct(DS_PROC_NR
,
119 (vir_bytes
) ds_name
, len_key
, CPF_READ
);
120 if(!GRANT_VALID(g_key
))
124 m
.DS_KEY_GRANT
= (char *) g_key
;
125 m
.DS_KEY_LEN
= len_key
;
126 m
.DS_FLAGS
= DS_TYPE_U32
;
128 r
= _taskcall(DS_PROC_NR
, DS_RETRIEVE
, &m
);
132 /* Assign u32 value. */
138 int ds_retrieve_str(ds_name
, value
, len_str
)
145 cp_grant_id_t g_key
, g_str
;
149 len_key
= strlen(ds_name
)+1;
150 g_key
= cpf_grant_direct(DS_PROC_NR
,
151 (vir_bytes
) ds_name
, len_key
, CPF_READ
);
152 if(!GRANT_VALID(g_key
))
155 /* Grant for value. */
156 g_str
= cpf_grant_direct(DS_PROC_NR
,
157 (vir_bytes
) value
, len_str
, CPF_WRITE
);
159 if(!GRANT_VALID(g_str
)) {
166 m
.DS_KEY_GRANT
= (char *) g_key
;
167 m
.DS_KEY_LEN
= len_key
;
168 m
.DS_FLAGS
= DS_TYPE_STR
;
170 m
.DS_VAL_LEN
= len_str
;
172 r
= _taskcall(DS_PROC_NR
, DS_RETRIEVE
, &m
);
180 int ds_check_str(ds_key
, len_key
, value
, len_str
)
188 cp_grant_id_t g_key
, g_str
;
190 if(len_key
< 1 || len_str
< 1) return -1;
193 g_key
= cpf_grant_direct(DS_PROC_NR
,
194 (vir_bytes
) ds_key
, len_key
, CPF_WRITE
);
195 if(!GRANT_VALID(g_key
))
198 /* Grant for value. */
199 g_str
= cpf_grant_direct(DS_PROC_NR
,
200 (vir_bytes
) value
, len_str
, CPF_WRITE
);
202 if(!GRANT_VALID(g_str
)) {
209 m
.DS_KEY_GRANT
= (char *) g_key
;
210 m
.DS_KEY_LEN
= len_key
;
211 m
.DS_FLAGS
= DS_TYPE_STR
;
213 m
.DS_VAL_LEN
= len_str
;
215 r
= _taskcall(DS_PROC_NR
, DS_CHECK
, &m
);
220 ds_key
[len_key
-1] = '\0';
221 value
[len_str
-1] = '\0';
226 int ds_check_u32(ds_key
, len_key
, value
)
235 if(len_key
< 1) return -1;
238 g_key
= cpf_grant_direct(DS_PROC_NR
,
239 (vir_bytes
) ds_key
, len_key
, CPF_WRITE
);
240 if(!GRANT_VALID(g_key
))
244 m
.DS_KEY_GRANT
= (char *) g_key
;
245 m
.DS_KEY_LEN
= len_key
;
246 m
.DS_FLAGS
= DS_TYPE_U32
;
248 r
= _taskcall(DS_PROC_NR
, DS_CHECK
, &m
);
252 ds_key
[len_key
-1] = '\0';
254 /* Assign u32 value. */