xref: /minix/minix/include/minix/ds.h (revision 7f5f010b)
1 /* Prototypes and definitions for DS interface. */
2 
3 #ifndef _MINIX_DS_H
4 #define _MINIX_DS_H
5 
6 #ifdef _MINIX_SYSTEM
7 
8 #include <sys/types.h>
9 #include <minix/endpoint.h>
10 
11 /* Flags. */
12 #define DSF_IN_USE		0x001	/* entry is in use */
13 #define DSF_PRIV_RETRIEVE	0x002	/* only owner can retrieve */
14 #define DSF_PRIV_OVERWRITE	0x004	/* only owner can overwrite */
15 #define DSF_PRIV_SNAPSHOT	0x004	/* only owner can take a snapshot */
16 #define DSF_PRIV_SUBSCRIBE	0x008	/* only owner can subscribe */
17 #define DSF_TYPE_U32		0x010	/* u32 data type */
18 #define DSF_TYPE_STR		0x020	/* string data type */
19 #define DSF_TYPE_MEM		0x040	/* memory range data type */
20 #define DSF_TYPE_LABEL		0x100	/* label data type */
21 
22 #define DSF_MASK_TYPE		0xFF0	/* mask for type flags. */
23 #define DSF_MASK_INTERNAL	0xFFF	/* mask for internal flags. */
24 
25 #define DSF_OVERWRITE		0x01000	/* overwrite if entry exists */
26 #define DSF_INITIAL		0x02000	/* check subscriptions immediately */
27 
28 /* DS constants. */
29 #define DS_MAX_KEYLEN 80        /* Max length of a key, including '\0'. */
30 
31 /* DS events. */
32 #define DS_DRIVER_UP		1
33 
34 /* ds.c */
35 
36 /* U32 */
37 int ds_publish_u32(const char *name, u32_t val, int flags);
38 int ds_retrieve_u32(const char *name, u32_t *val);
39 int ds_delete_u32(const char *ds_name);
40 
41 /* STRING */
42 int ds_publish_str(const char *name, char *val, int flags);
43 int ds_retrieve_str(const char *name, char *val, size_t len);
44 int ds_delete_str(const char *ds_name);
45 
46 /* MEM */
47 int ds_publish_mem(const char *ds_name, void *vaddr, size_t length, int
48 	flags);
49 int ds_retrieve_mem(const char *ds_name, char *vaddr, size_t *length);
50 int ds_delete_mem(const char *ds_name);
51 
52 /* MAP */
53 int ds_publish_map(const char *ds_name, void *vaddr, size_t length, int
54 	flags);
55 int ds_snapshot_map(const char *ds_name, int *nr_snapshot);
56 int ds_retrieve_map(const char *ds_name, char *vaddr, size_t *length,
57 	int nr_snapshot, int flags);
58 int ds_delete_map(const char *ds_name);
59 
60 /* LABEL */
61 int ds_publish_label(const char *ds_name, endpoint_t endpoint, int
62 	flags);
63 int ds_retrieve_label_name(char *ds_name, endpoint_t endpoint);
64 int ds_retrieve_label_endpt(const char *ds_name, endpoint_t *endpoint);
65 int ds_delete_label(const char *ds_name);
66 
67 /* Subscribe and check. */
68 int ds_subscribe(const char *regex, int flags);
69 int ds_check(char *ds_name, int *type, endpoint_t *owner_e);
70 
71 #endif /* _MINIX_SYSTEM */
72 
73 #endif /* _MINIX_DS_H */
74 
75