2021-10-11 18:20:23 -03:00

59 lines
1.8 KiB
C

/* @(#)tmpnode.h 1.1 92/07/30 SMI */
#include <vm/seg_vn.h>
/*
* tmpnode is the (tmp)inode for the anonymous page based file system
*/
struct tmpnode {
u_int tn_flags; /* see T flags below */
int tn_count; /* links to tmpnode */
struct tmpnode *tn_back; /* linked list of tmpnodes */
struct tmpnode *tn_forw; /* linked list of tmpnodes */
long tn_owner; /* proc/thread locking node */
union {
struct tdirent *un_dir; /* pointer to directory list */
char *un_symlink; /* pointer to symlink */
} un_tmpnode;
struct vnode tn_vnode; /* vnode for this tmpnode */
struct anon_map *tn_amapp; /* anonymous pages map */
struct vattr tn_attr; /* attributes */
};
#define tn_dir un_tmpnode.un_dir
#define tn_symlink un_tmpnode.un_symlink
/* tn_flags */
#define TLOCKED 0x1 /* tmpnode is locked */
#define TWANTED 0x2 /* tmpnode wanted */
#define TREF 0x4 /* tmpnode referenced */
/* modes */
#define TFMT 0170000 /* type of file */
#define TFIFO 0010000 /* named pipe (fifo) */
#define TFCHR 0020000 /* character special */
#define TFDIR 0040000 /* directory */
#define TFBLK 0060000 /* block special */
#define TFREG 0100000 /* regular */
#define TFLNK 0120000 /* symbolic link */
#define TFSOCK 0140000 /* socket */
#define TSUID 04000 /* set user id on execution */
#define TSGID 02000 /* set group id on execution */
#define TSVTX 01000 /* save swapped text even after use */
#define TREAD 0400 /* read, write, execute permissions */
#define TWRITE 0200
#define TEXEC 0100
#define TMAP_ALLOC 131072 /* anon map's increment click size */
#define TP_TO_VP(tp) (&(tp)->tn_vnode)
#define VP_TO_TP(vp) ((struct tmpnode *)(vp)->v_data)
#ifdef KERNEL
struct tmpnode *tmpnode_alloc();
void tmpnode_get();
void tmpnode_free();
void tmpnode_put();
#endif KERNEL