kernel - Restore ability to thaw checkpoints
[dragonfly.git] / sys / sys / varsym.h
blob9ef7087f054fb987a97467cf9144f48905f2c49f
1 /*
2 * SYS/VARSYM.H
4 * Implements structures used for variant symlink support.
5 *
6 * $DragonFly: src/sys/sys/varsym.h,v 1.7 2008/02/23 00:59:23 swildner Exp $
7 */
9 #ifndef _SYS_VARSYM_H_
10 #define _SYS_VARSYM_H_
12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
14 #ifndef _SYS_QUEUE_H_
15 #include <sys/queue.h> /* TAILQ_* macros */
16 #endif
18 #include <sys/lock.h>
20 struct varsym {
21 int vs_refs; /* a lot of sharing occurs */
22 int vs_namelen;
23 char *vs_name; /* variable name */
24 char *vs_data; /* variable contents */
27 typedef struct varsym *varsym_t;
29 struct varsyment {
30 TAILQ_ENTRY(varsyment) ve_entry;
31 varsym_t ve_sym;
34 struct varsymset {
35 TAILQ_HEAD(, varsyment) vx_queue;
36 int vx_setsize;
37 struct lock vx_lock;
40 #endif /* _KERNEL || _KERNEL_STRUCTURES */
42 #define VARSYM_PROC 1
43 #define VARSYM_USER 2
44 #define VARSYM_SYS 3
45 #define VARSYM_PRISON 4 /* used internally */
47 #define VARSYM_PROC_MASK (1 << VARSYM_PROC)
48 #define VARSYM_USER_MASK (1 << VARSYM_USER)
49 #define VARSYM_SYS_MASK (1 << VARSYM_SYS)
50 #define VARSYM_ALL_MASK (VARSYM_PROC_MASK|VARSYM_USER_MASK|VARSYM_SYS_MASK)
52 #define MAXVARSYM_NAME 64
53 #define MAXVARSYM_DATA 256
54 #define MAXVARSYM_SET 16384
56 #ifdef _KERNEL
58 varsym_t varsymfind(int mask, const char *name, int namelen);
59 int varsymmake(int level, const char *name, const char *data);
60 void varsymdrop(varsym_t var);
61 void varsymset_init(struct varsymset *varsymset, struct varsymset *copy);
62 void varsymset_clean(struct varsymset *varsymset);
63 int varsymreplace(char *cp, int linklen, int maxlen);
65 #endif /* _KERNEL */
67 #endif