1 /* internal.h: internal AFS stuff 2 * 3 * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 9 * 2 of the License, or (at your option) any later version. 10 */ 11 12 #ifndef AFS_INTERNAL_H 13 #define AFS_INTERNAL_H 14 15 #include <linux/compiler.h> 16 #include <linux/kernel.h> 17 #include <linux/fs.h> 18 #include <linux/pagemap.h> 19 20 /* 21 * debug tracing 22 */ 23 #define kenter(FMT, a...) printk("==> %s("FMT")\n",__FUNCTION__ , ## a) 24 #define kleave(FMT, a...) printk("<== %s()"FMT"\n",__FUNCTION__ , ## a) 25 #define kdebug(FMT, a...) printk(FMT"\n" , ## a) 26 #define kproto(FMT, a...) printk("### "FMT"\n" , ## a) 27 #define knet(FMT, a...) printk(FMT"\n" , ## a) 28 29 #ifdef __KDEBUG 30 #define _enter(FMT, a...) kenter(FMT , ## a) 31 #define _leave(FMT, a...) kleave(FMT , ## a) 32 #define _debug(FMT, a...) kdebug(FMT , ## a) 33 #define _proto(FMT, a...) kproto(FMT , ## a) 34 #define _net(FMT, a...) knet(FMT , ## a) 35 #else 36 #define _enter(FMT, a...) do { } while(0) 37 #define _leave(FMT, a...) do { } while(0) 38 #define _debug(FMT, a...) do { } while(0) 39 #define _proto(FMT, a...) do { } while(0) 40 #define _net(FMT, a...) do { } while(0) 41 #endif 42 43 static inline void afs_discard_my_signals(void) 44 { 45 while (signal_pending(current)) { 46 siginfo_t sinfo; 47 48 spin_lock_irq(¤t->sighand->siglock); 49 dequeue_signal(current,¤t->blocked, &sinfo); 50 spin_unlock_irq(¤t->sighand->siglock); 51 } 52 } 53 54 /* 55 * cell.c 56 */ 57 extern struct rw_semaphore afs_proc_cells_sem; 58 extern struct list_head afs_proc_cells; 59 #ifdef AFS_CACHING_SUPPORT 60 extern struct cachefs_index_def afs_cache_cell_index_def; 61 #endif 62 63 /* 64 * dir.c 65 */ 66 extern struct inode_operations afs_dir_inode_operations; 67 extern struct file_operations afs_dir_file_operations; 68 69 /* 70 * file.c 71 */ 72 extern struct address_space_operations afs_fs_aops; 73 extern struct inode_operations afs_file_inode_operations; 74 75 #ifdef AFS_CACHING_SUPPORT 76 extern int afs_cache_get_page_cookie(struct page *page, 77 struct cachefs_page **_page_cookie); 78 #endif 79 80 /* 81 * inode.c 82 */ 83 extern int afs_iget(struct super_block *sb, struct afs_fid *fid, 84 struct inode **_inode); 85 extern int afs_inode_getattr(struct vfsmount *mnt, struct dentry *dentry, 86 struct kstat *stat); 87 extern void afs_clear_inode(struct inode *inode); 88 89 /* 90 * key_afs.c 91 */ 92 #ifdef CONFIG_KEYS 93 extern int afs_key_register(void); 94 extern void afs_key_unregister(void); 95 #endif 96 97 /* 98 * main.c 99 */ 100 #ifdef AFS_CACHING_SUPPORT 101 extern struct cachefs_netfs afs_cache_netfs; 102 #endif 103 104 /* 105 * mntpt.c 106 */ 107 extern struct inode_operations afs_mntpt_inode_operations; 108 extern struct file_operations afs_mntpt_file_operations; 109 extern struct afs_timer afs_mntpt_expiry_timer; 110 extern struct afs_timer_ops afs_mntpt_expiry_timer_ops; 111 extern unsigned long afs_mntpt_expiry_timeout; 112 113 extern int afs_mntpt_check_symlink(struct afs_vnode *vnode); 114 115 /* 116 * super.c 117 */ 118 extern int afs_fs_init(void); 119 extern void afs_fs_exit(void); 120 121 #define AFS_CB_HASH_COUNT (PAGE_SIZE / sizeof(struct list_head)) 122 123 extern struct list_head afs_cb_hash_tbl[]; 124 extern spinlock_t afs_cb_hash_lock; 125 126 #define afs_cb_hash(SRV,FID) \ 127 afs_cb_hash_tbl[((unsigned long)(SRV) + \ 128 (FID)->vid + (FID)->vnode + (FID)->unique) % \ 129 AFS_CB_HASH_COUNT] 130 131 /* 132 * proc.c 133 */ 134 extern int afs_proc_init(void); 135 extern void afs_proc_cleanup(void); 136 extern int afs_proc_cell_setup(struct afs_cell *cell); 137 extern void afs_proc_cell_remove(struct afs_cell *cell); 138 139 #endif /* AFS_INTERNAL_H */ 140