Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / minix / ds.h @ 13

History | View | Annotate | Download (2.33 KB)

1 13 up20180614
/* 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 */