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