~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/coda_linux.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* 
  2  * Coda File System, Linux Kernel module
  3  * 
  4  * Original version, adapted from cfs_mach.c, (C) Carnegie Mellon University
  5  * Linux modifications (C) 1996, Peter J. Braam
  6  * Rewritten for Linux 2.1 (C) 1997 Carnegie Mellon University
  7  *
  8  * Carnegie Mellon University encourages users of this software to
  9  * contribute improvements to the Coda project.
 10  */
 11 
 12 #ifndef _LINUX_CODA_FS
 13 #define _LINUX_CODA_FS
 14 
 15 #include <linux/kernel.h>
 16 #include <linux/param.h>
 17 #include <linux/sched.h> 
 18 #include <linux/mm.h>
 19 #include <linux/vmalloc.h>
 20 #include <linux/malloc.h>
 21 #include <linux/wait.h>         
 22 #include <linux/types.h>
 23 #include <linux/fs.h>
 24 
 25 /* operations */
 26 extern struct inode_operations coda_dir_inode_operations;
 27 extern struct inode_operations coda_file_inode_operations;
 28 extern struct inode_operations coda_ioctl_inode_operations;
 29 
 30 extern struct address_space_operations coda_file_aops;
 31 extern struct address_space_operations coda_symlink_aops;
 32 
 33 extern struct file_operations coda_dir_operations;
 34 extern struct file_operations coda_file_operations;
 35 extern struct file_operations coda_ioctl_operations;
 36 
 37 /* operations shared over more than one file */
 38 int coda_open(struct inode *i, struct file *f);
 39 int coda_release(struct inode *i, struct file *f);
 40 int coda_permission(struct inode *inode, int mask);
 41 int coda_revalidate_inode(struct dentry *);
 42 int coda_notify_change(struct dentry *, struct iattr *);
 43 
 44 /* global variables */
 45 extern int coda_debug;
 46 extern int coda_print_entry;
 47 extern int coda_access_cache;
 48 
 49 /* this file:  heloers */
 50 static __inline__ struct ViceFid *coda_i2f(struct inode *);
 51 static __inline__ char *coda_i2s(struct inode *);
 52 static __inline__ void coda_flag_inode(struct inode *, int flag);
 53 char *coda_f2s(ViceFid *f);
 54 char *coda_f2s2(ViceFid *f);
 55 int coda_isroot(struct inode *i);
 56 int coda_fid_is_volroot(struct ViceFid *);
 57 int coda_fid_is_weird(struct ViceFid *fid);
 58 int coda_iscontrol(const char *name, size_t length);
 59 
 60 void coda_load_creds(struct coda_cred *cred);
 61 void coda_vattr_to_iattr(struct inode *, struct coda_vattr *);
 62 void coda_iattr_to_vattr(struct iattr *, struct coda_vattr *);
 63 unsigned short coda_flags_to_cflags(unsigned short);
 64 void print_vattr( struct coda_vattr *attr );
 65 int coda_cred_ok(struct coda_cred *cred);
 66 int coda_cred_eq(struct coda_cred *cred1, struct coda_cred *cred2);
 67 
 68 /* cache.c */
 69 void coda_purge_children(struct inode *, int);
 70 void coda_purge_dentries(struct inode *);
 71 
 72 /* sysctl.h */
 73 void coda_sysctl_init(void);
 74 void coda_sysctl_clean(void);
 75 
 76 
 77 /* debugging masks */
 78 #define D_SUPER     1   /* print results returned by Venus */ 
 79 #define D_INODE     2   /* print entry and exit into procedure */
 80 #define D_FILE      4   
 81 #define D_CACHE     8   /* cache debugging */
 82 #define D_MALLOC    16  /* print malloc, de-alloc information */
 83 #define D_CNODE     32
 84 #define D_UPCALL    64  /* up and downcall debugging */
 85 #define D_PSDEV    128  
 86 #define D_PIOCTL   256
 87 #define D_SPECIAL  512
 88 #define D_TIMING  1024
 89 #define D_DOWNCALL 2048
 90  
 91 #define CDEBUG(mask, format, a...)                                \
 92   do {                                                            \
 93   if (coda_debug & mask) {                                        \
 94     printk("(%s,l. %d): ",  __FUNCTION__, __LINE__);              \
 95     printk(format, ## a); }                                       \
 96 } while (0)
 97 
 98 #define ENTRY    \
 99     if(coda_print_entry) printk("Process %d entered %s\n",current->pid,__FUNCTION__)
100 
101 #define EXIT    \
102     if(coda_print_entry) printk("Process %d leaving %s\n",current->pid,__FUNCTION__)
103 
104 #define CODA_ALLOC(ptr, cast, size)                                       \
105 do {                                                                      \
106     if (size < PAGE_SIZE) {                                               \
107         ptr = (cast)kmalloc((unsigned long) size, GFP_KERNEL);            \
108         CDEBUG(D_MALLOC, "kmalloced: %lx at %p.\n", (long)size, ptr);     \
109      }  else {                                                            \
110         ptr = (cast)vmalloc((unsigned long) size);                        \
111         CDEBUG(D_MALLOC, "vmalloced: %lx at %p .\n", (long)size, ptr);}   \
112     if (ptr == 0) {                                                       \
113         printk("kernel malloc returns 0 at %s:%d\n", __FILE__, __LINE__); \
114     }                                                                     \
115     else memset( ptr, 0, size );                                          \
116 } while (0)
117 
118 
119 #define CODA_FREE(ptr,size) do {if (size < PAGE_SIZE) { kfree((ptr)); CDEBUG(D_MALLOC, "kfreed: %lx at %p.\n", (long) size, ptr); } else { vfree((ptr)); CDEBUG(D_MALLOC, "vfreed: %lx at %p.\n", (long) size, ptr);} } while (0)
120 
121 /* inode to cnode access functions */
122 
123 static __inline__ struct ViceFid *coda_i2f(struct inode *inode)
124 {
125         return &(inode->u.coda_i.c_fid);
126 }
127 
128 static __inline__ char *coda_i2s(struct inode *inode)
129 {
130         return coda_f2s(&(inode->u.coda_i.c_fid));
131 }
132 
133 /* this will not zap the inode away */
134 static __inline__ void coda_flag_inode(struct inode *inode, int flag)
135 {
136         inode->u.coda_i.c_flags |= flag;
137 }               
138 
139 #define ITOC(inode) (&((inode)->u.coda_i))
140 
141 #endif
142 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.