Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  smb_fs_sb.h
  3  *
  4  *  Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke
  5  *  Copyright (C) 1997 by Volker Lendecke
  6  *
  7  */
  8 
  9 #ifndef _SMB_FS_SB
 10 #define _SMB_FS_SB
 11 
 12 #ifdef __KERNEL__
 13 
 14 #include <linux/types.h>
 15 #include <linux/smb.h>
 16 
 17 /*
 18  * Upper limit on the total number of active smb_request structs.
 19  */
 20 #define MAX_REQUEST_HARD       256
 21 
 22 enum smb_receive_state {
 23         SMB_RECV_START,         /* No data read, looking for length + sig */
 24         SMB_RECV_HEADER,        /* Reading the header data */
 25         SMB_RECV_HCOMPLETE,     /* Done with the header */
 26         SMB_RECV_PARAM,         /* Reading parameter words */
 27         SMB_RECV_DATA,          /* Reading data bytes */
 28         SMB_RECV_END,           /* End of request */
 29         SMB_RECV_DROP,          /* Dropping this SMB */
 30         SMB_RECV_REQUEST,       /* Received a request and not a reply */
 31 };
 32 
 33 /* structure access macros */
 34 #define server_from_inode(inode) SMB_SB((inode)->i_sb)
 35 #define server_from_dentry(dentry) SMB_SB((dentry)->d_sb)
 36 #define SB_of(server) ((server)->super_block)
 37 
 38 struct smb_sb_info {
 39         /* List of all smbfs superblocks */
 40         struct list_head entry;
 41 
 42         enum smb_conn_state state;
 43         struct file * sock_file;
 44         int conn_error;
 45         enum smb_receive_state rstate;
 46 
 47         atomic_t nr_requests;
 48         struct list_head xmitq;
 49         struct list_head recvq;
 50         u16 mid;
 51 
 52         struct smb_mount_data_kernel *mnt;
 53 
 54         /* Connections are counted. Each time a new socket arrives,
 55          * generation is incremented.
 56          */
 57         unsigned int generation;
 58         struct pid *conn_pid;
 59         struct smb_conn_opt opt;
 60         wait_queue_head_t conn_wq;
 61         int conn_complete;
 62         struct semaphore sem;
 63 
 64         unsigned char      header[SMB_HEADER_LEN + 20*2 + 2];
 65         u32                header_len;
 66         u32                smb_len;
 67         u32                smb_read;
 68 
 69         /* We use our own data_ready callback, but need the original one */
 70         void *data_ready;
 71 
 72         /* nls pointers for codepage conversions */
 73         struct nls_table *remote_nls;
 74         struct nls_table *local_nls;
 75 
 76         struct smb_ops *ops;
 77 
 78         struct super_block *super_block;
 79 };
 80 
 81 static inline int
 82 smb_lock_server_interruptible(struct smb_sb_info *server)
 83 {
 84         return down_interruptible(&(server->sem));
 85 }
 86 
 87 static inline void
 88 smb_lock_server(struct smb_sb_info *server)
 89 {
 90         down(&(server->sem));
 91 }
 92 
 93 static inline void
 94 smb_unlock_server(struct smb_sb_info *server)
 95 {
 96         up(&(server->sem));
 97 }
 98 
 99 #endif /* __KERNEL__ */
100 
101 #endif
102 
  This page was automatically generated by the LXR engine.