smb_fs_sb.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  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. #ifndef _SMB_FS_SB
  9. #define _SMB_FS_SB
  10. #ifdef __KERNEL__
  11. #include <linux/types.h>
  12. #include <linux/smb.h>
  13. /*
  14.  * Upper limit on the total number of active smb_request structs.
  15.  */
  16. #define MAX_REQUEST_HARD       256
  17. enum smb_receive_state {
  18. SMB_RECV_START, /* No data read, looking for length + sig */
  19. SMB_RECV_HEADER, /* Reading the header data */
  20. SMB_RECV_HCOMPLETE, /* Done with the header */
  21. SMB_RECV_PARAM, /* Reading parameter words */
  22. SMB_RECV_DATA, /* Reading data bytes */
  23. SMB_RECV_END, /* End of request */
  24. SMB_RECV_DROP, /* Dropping this SMB */
  25. SMB_RECV_REQUEST, /* Received a request and not a reply */
  26. };
  27. /* structure access macros */
  28. #define server_from_inode(inode) SMB_SB((inode)->i_sb)
  29. #define server_from_dentry(dentry) SMB_SB((dentry)->d_sb)
  30. #define SB_of(server) ((server)->super_block)
  31. struct smb_sb_info {
  32. /* List of all smbfs superblocks */
  33. struct list_head entry;
  34.         enum smb_conn_state state;
  35. struct file * sock_file;
  36. int conn_error;
  37. enum smb_receive_state rstate;
  38. atomic_t nr_requests;
  39. struct list_head xmitq;
  40. struct list_head recvq;
  41. u16 mid;
  42.         struct smb_mount_data_kernel *mnt;
  43. /* Connections are counted. Each time a new socket arrives,
  44.  * generation is incremented.
  45.  */
  46. unsigned int generation;
  47. pid_t conn_pid;
  48. struct smb_conn_opt opt;
  49. wait_queue_head_t conn_wq;
  50. int conn_complete;
  51. struct semaphore sem;
  52. unsigned char      header[SMB_HEADER_LEN + 20*2 + 2];
  53. u32                header_len;
  54. u32                smb_len;
  55. u32                smb_read;
  56.         /* We use our own data_ready callback, but need the original one */
  57.         void *data_ready;
  58. /* nls pointers for codepage conversions */
  59. struct nls_table *remote_nls;
  60. struct nls_table *local_nls;
  61. struct smb_ops *ops;
  62. struct super_block *super_block;
  63. };
  64. static inline int
  65. smb_lock_server_interruptible(struct smb_sb_info *server)
  66. {
  67. return down_interruptible(&(server->sem));
  68. }
  69. static inline void
  70. smb_lock_server(struct smb_sb_info *server)
  71. {
  72. down(&(server->sem));
  73. }
  74. static inline void
  75. smb_unlock_server(struct smb_sb_info *server)
  76. {
  77. up(&(server->sem));
  78. }
  79. #endif /* __KERNEL__ */
  80. #endif