at v2.6.19 139 lines 3.6 kB view raw
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 43static inline void afs_discard_my_signals(void) 44{ 45 while (signal_pending(current)) { 46 siginfo_t sinfo; 47 48 spin_lock_irq(&current->sighand->siglock); 49 dequeue_signal(current,&current->blocked, &sinfo); 50 spin_unlock_irq(&current->sighand->siglock); 51 } 52} 53 54/* 55 * cell.c 56 */ 57extern struct rw_semaphore afs_proc_cells_sem; 58extern struct list_head afs_proc_cells; 59#ifdef AFS_CACHING_SUPPORT 60extern struct cachefs_index_def afs_cache_cell_index_def; 61#endif 62 63/* 64 * dir.c 65 */ 66extern struct inode_operations afs_dir_inode_operations; 67extern const struct file_operations afs_dir_file_operations; 68 69/* 70 * file.c 71 */ 72extern const struct address_space_operations afs_fs_aops; 73extern struct inode_operations afs_file_inode_operations; 74 75#ifdef AFS_CACHING_SUPPORT 76extern int afs_cache_get_page_cookie(struct page *page, 77 struct cachefs_page **_page_cookie); 78#endif 79 80/* 81 * inode.c 82 */ 83extern int afs_iget(struct super_block *sb, struct afs_fid *fid, 84 struct inode **_inode); 85extern int afs_inode_getattr(struct vfsmount *mnt, struct dentry *dentry, 86 struct kstat *stat); 87extern void afs_clear_inode(struct inode *inode); 88 89/* 90 * key_afs.c 91 */ 92#ifdef CONFIG_KEYS 93extern int afs_key_register(void); 94extern void afs_key_unregister(void); 95#endif 96 97/* 98 * main.c 99 */ 100#ifdef AFS_CACHING_SUPPORT 101extern struct cachefs_netfs afs_cache_netfs; 102#endif 103 104/* 105 * mntpt.c 106 */ 107extern struct inode_operations afs_mntpt_inode_operations; 108extern const struct file_operations afs_mntpt_file_operations; 109extern struct afs_timer afs_mntpt_expiry_timer; 110extern struct afs_timer_ops afs_mntpt_expiry_timer_ops; 111extern unsigned long afs_mntpt_expiry_timeout; 112 113extern int afs_mntpt_check_symlink(struct afs_vnode *vnode); 114 115/* 116 * super.c 117 */ 118extern int afs_fs_init(void); 119extern void afs_fs_exit(void); 120 121#define AFS_CB_HASH_COUNT (PAGE_SIZE / sizeof(struct list_head)) 122 123extern struct list_head afs_cb_hash_tbl[]; 124extern 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 */ 134extern int afs_proc_init(void); 135extern void afs_proc_cleanup(void); 136extern int afs_proc_cell_setup(struct afs_cell *cell); 137extern void afs_proc_cell_remove(struct afs_cell *cell); 138 139#endif /* AFS_INTERNAL_H */