FD.io VPP  v17.07-30-g839fa73
Vector Packet Processing
svmdb.h
Go to the documentation of this file.
1 /*
2  *------------------------------------------------------------------
3  * svmdb.h - shared VM database
4  *
5  * Copyright (c) 2009 Cisco and/or its affiliates.
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at:
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *------------------------------------------------------------------
18  */
19 
20 #ifndef __included_svmdb_h__
21 #define __included_svmdb_h__
22 
23 #include "svm.h"
24 
25 typedef enum
26 {
28  SVMDB_ACTION_GET, /* not clear why anyone would care */
32 
33 typedef struct
34 {
35  int pid;
36  int signum;
37  u32 action:4;
38  u32 opaque:28;
40 
41 typedef struct
42 {
47 
48 typedef enum
49 {
54 
55 typedef struct
56 {
58  /* pool of values */
60  uword *namespaces[SVMDB_N_NAMESPACES];
62 
63 #define SVMDB_SHM_VERSION 2
64 
65 typedef struct
66 {
67  int flags;
68  int pid;
72 
73 typedef struct
74 {
75  int add_del;
77  char *var;
79  int signum;
80  u32 action:4;
81  u32 opaque:28;
83 
84 typedef struct
85 {
86  const char *root_path;
91 
92 /*
93  * Must be a reasonable number, several mb smaller than
94  * SVM_GLOBAL_REGION_SIZE, or no donut for you...
95  */
96 #define SVMDB_DEFAULT_SIZE (4<<20)
97 
99 
100 void svmdb_unmap (svmdb_client_t * client);
101 void svmdb_local_unset_string_variable (svmdb_client_t * client, char *var);
103  char *var, char *val);
104 char *svmdb_local_get_string_variable (svmdb_client_t * client, char *var);
106  svmdb_namespace_t ns, char *var);
107 
109 
110 void svmdb_local_unset_vec_variable (svmdb_client_t * client, char *var);
112  char *var, void *val, u32 elsize);
113 void *svmdb_local_get_vec_variable (svmdb_client_t * client, char *var,
114  u32 elsize);
115 void svmdb_local_dump_vecs (svmdb_client_t * client);
116 
119 
121  char *var, u32 nbytes);
122 
123 int svmdb_local_serialize_strings (svmdb_client_t * client, char *filename);
124 int svmdb_local_unserialize_strings (svmdb_client_t * client, char *filename);
125 
126 
127 #endif /* __included_svmdb_h__ */
128 
129 /*
130  * fd.io coding-style-patch-verification: ON
131  *
132  * Local Variables:
133  * eval: (c-set-style "gnu")
134  * End:
135  */
int flags
Definition: svmdb.h:67
svmdb_namespace_t nspace
Definition: svmdb.h:76
void svmdb_local_dump_strings(svmdb_client_t *client)
Definition: svmdb.c:402
void svmdb_local_set_vec_variable(svmdb_client_t *client, char *var, void *val, u32 elsize)
Definition: svmdb.c:556
int signum
Definition: svmdb.h:36
int svmdb_local_add_del_notification(svmdb_client_t *client, svmdb_notification_args_t *args)
Definition: svmdb.c:189
void svmdb_unmap(svmdb_client_t *client)
Definition: svmdb.c:134
void svmdb_local_unset_string_variable(svmdb_client_t *client, char *var)
Definition: svmdb.c:286
uword version
Definition: svmdb.h:57
const char * root_path
Definition: svmdb.h:86
svmdb_namespace_t
Definition: svmdb.h:48
void svmdb_local_unset_vec_variable(svmdb_client_t *client, char *var)
Definition: svmdb.c:544
int svmdb_local_unserialize_strings(svmdb_client_t *client, char *filename)
Definition: svmdb.c:492
svmdb_shm_hdr_t * shm
Definition: svmdb.h:70
svmdb_action_t
Definition: svmdb.h:25
u32 elsize
Definition: svmdb.h:45
void svmdb_local_dump_vecs(svmdb_client_t *client)
Definition: svmdb.c:597
svm_region_t * db_rp
Definition: svmdb.h:69
svmdb_notify_t * notifications
Definition: svmdb.h:44
char * svmdb_local_get_string_variable(svmdb_client_t *client, char *var)
Definition: svmdb.c:385
unsigned int u32
Definition: types.h:88
void svmdb_local_set_string_variable(svmdb_client_t *client, char *var, char *val)
Definition: svmdb.c:335
void * svmdb_local_get_variable_reference(svmdb_client_t *client, svmdb_namespace_t ns, char *var)
Definition: svmdb.c:373
int svmdb_local_serialize_strings(svmdb_client_t *client, char *filename)
Definition: svmdb.c:426
u64 uword
Definition: types.h:112
svmdb_client_t * svmdb_map(svmdb_map_args_t *)
Definition: svmdb.c:71
unsigned char u8
Definition: types.h:56
void * svmdb_local_find_or_add_vec_variable(svmdb_client_t *client, char *var, u32 nbytes)
Definition: svmdb.c:623
u8 * value
Definition: svmdb.h:43
uword size
Definition: svmdb.h:87
svmdb_value_t * values
Definition: svmdb.h:59
void * svmdb_local_get_vec_variable(svmdb_client_t *client, char *var, u32 elsize)
Definition: svmdb.c:574