#ifndef _SYS_VARSYM_H_
#define _SYS_VARSYM_H_
#if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
#ifndef _SYS_QUEUE_H_
#include <sys/queue.h>
#endif
#include <sys/lock.h>
struct varsym {
int vs_refs;
int vs_namelen;
char *vs_name;
char *vs_data;
};
typedef struct varsym *varsym_t;
struct varsyment {
TAILQ_ENTRY(varsyment) ve_entry;
varsym_t ve_sym;
};
struct varsymset {
TAILQ_HEAD(, varsyment) vx_queue;
int vx_setsize;
struct lock vx_lock;
};
#endif
#define VARSYM_PROC 1
#define VARSYM_USER 2
#define VARSYM_SYS 3
#define VARSYM_PRISON 4
#define VARSYM_PROC_MASK (1 << VARSYM_PROC)
#define VARSYM_USER_MASK (1 << VARSYM_USER)
#define VARSYM_SYS_MASK (1 << VARSYM_SYS)
#define VARSYM_ALL_MASK (VARSYM_PROC_MASK|VARSYM_USER_MASK|VARSYM_SYS_MASK)
#define MAXVARSYM_NAME 64
#define MAXVARSYM_DATA 256
#define MAXVARSYM_SET 16384
#ifdef _KERNEL
varsym_t varsymfind(int mask, const char *name, int namelen);
int varsymmake(int level, const char *name, const char *data);
void varsymdrop(varsym_t var);
void varsymset_init(struct varsymset *varsymset, struct varsymset *copy);
void varsymset_clean(struct varsymset *varsymset);
int varsymreplace(char *cp, int linklen, int maxlen);
#endif
#endif