patch-2.1.45 linux/include/linux/dalloc.h
Next file: linux/include/linux/dcache.h
Previous file: linux/include/linux/cyclades.h
Back to the patch index
Back to the overall index
- Lines: 146
- Date:
Wed Dec 31 16:00:00 1969
- Orig file:
v2.1.44/linux/include/linux/dalloc.h
- Orig date:
Mon Jul 7 14:57:40 1997
diff -u --recursive --new-file v2.1.44/linux/include/linux/dalloc.h linux/include/linux/dalloc.h
@@ -1,145 +0,0 @@
-#ifndef DALLOC_H
-#define DALLOC_H
-/*
- * $Id: dalloc.h,v 1.3 1997/06/13 04:39:34 davem Exp $
- *
- * include/linux/dalloc.h - alloc routines for dcache
- * alloc / free space for pathname strings
- * Copyright (C) 1997, Thomas Schoebel-Theuer,
- * <schoebel@informatik.uni-stuttgart.de>.
- */
-
-#define D_MAXLEN 1024
-
-/* public flags for d_add() */
-#define D_NORMAL 0
-#define D_BASKET 1 /* put into basket (deleted/unref'd files) */
-#define D_DUPLICATE 2 /* allow duplicate entries */
-#define D_NOCHECKDUP 4 /* no not check for duplicates */
-#define D_NEGATIVE 8 /* negative entry */
-#define D_PRELOADED 16
-#define D_DIR 32 /* directory entry - look out for allocation issues */
-#define D_HASHED 64
-#define D_ZOMBIE 128
-#define D_INC_DDIR 512
-
-/* public flags for d_del() */
-#define D_REMOVE 0
-#define D_NO_CLEAR_INODE 1
-
-#define IS_ROOT(x) ((x) == (x)->d_parent)
-
-/* "quick string" -- I introduced this to shorten the parameter list
- * of many routines. Think of it as a (str,stlen,hash) pair.
- * Storing the len instead of doing strlen() very often is performance
- * critical.
- */
-struct qstr {
- const unsigned char * name;
- int len, hash;
-};
-
-/* Name hashing routines. Initial hash value */
-#define init_name_hash() 0
-
-/* partial hash update function. Assume roughly 4 bits per character */
-static inline unsigned long partial_name_hash(unsigned char c, unsigned long prevhash)
-{
- prevhash = (prevhash << 4) | (prevhash >> (8*sizeof(unsigned long)-4));
- return prevhash ^ c;
-}
-
-/* Finally: cut down the number of bits to a int value (and try to avoid losing bits) */
-static inline unsigned long end_name_hash(unsigned long hash)
-{
- if (sizeof(hash) > sizeof(unsigned int))
- hash += hash >> 4*sizeof(hash);
- return (unsigned int) hash;
-}
-
-struct dentry {
- unsigned int d_flag;
- unsigned int d_count;
- struct inode * d_inode; /* Where the name belongs to */
- struct dentry * d_parent; /* parent directory */
- struct dentry * d_mounts; /* mount information */
- struct dentry * d_covers;
- struct dentry * d_next; /* hardlink aliasname / empty list */
- struct dentry * d_prev; /* hardlink aliasname */
- struct dentry * d_hash_next;
- struct dentry * d_hash_prev;
- struct dentry * d_basket_next;
- struct dentry * d_basket_prev;
- struct qstr d_name;
-};
-
-extern struct dentry * the_root;
-
-/*
- * These are the low-level FS interfaces to the dcache..
- */
-extern void d_instantiate(struct dentry *, struct inode *, int);
-extern void d_delete(struct dentry *);
-
-
-/* Note that all these routines must be called with vfs_lock() held */
-
-/* get inode, if necessary retrieve it with iget() */
-extern blocking struct inode * d_inode(struct dentry ** changing_entry);
-
-/* allocate/de-allocate */
-extern void d_free(struct dentry *);
-extern struct dentry * d_alloc(struct dentry * parent, struct qstr *name, int isdir);
-
-/* only used at mount-time */
-extern blocking
-struct dentry * d_alloc_root(struct inode * root_inode, struct dentry * old_root);
-
-/*
- * This adds the entry to the hash queues and initializes "d_inode".
- * The entry was actually filled in earlier during "d_alloc()"
- */
-extern blocking
-void d_add(struct dentry * entry, struct inode * inode, int flags);
-
-/* combination of d_alloc() and d_add(), less lookup overhead */
-extern blocking
-struct dentry * d_entry(struct dentry * parent, struct qstr * name, struct inode * inode);
-extern blocking
-void d_entry_preliminary(struct dentry * parent, struct qstr * name, unsigned long ino);
-
-/* recursive d_del() all successors */
-extern blocking
-void d_del(struct dentry * entry, int flags);
-
-/* used for rename() and baskets */
-extern blocking
-void d_move(struct dentry * entry, struct dentry * newparent, struct qstr * newname);
-
-/* appendix may either be NULL or be used for transname suffixes */
-extern struct dentry * d_lookup(struct dentry * dir, struct qstr * name);
-
-/* write full pathname into buffer and return length */
-extern int d_path(struct dentry * entry, struct dentry * chroot, char * buf);
-
-extern struct dentry * d_basket(struct dentry * dir_entry);
-
-extern int d_isbasket(struct dentry * entry);
-
-/*
- * Whee..
- */
-static inline void dput(struct dentry *dentry)
-{
- if (dentry)
- dentry->d_count--;
-}
-
-static inline struct dentry * dget(struct dentry *dentry)
-{
- if (dentry)
- dentry->d_count++;
- return dentry;
-}
-
-#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov