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

TOMOYO Linux Cross Reference
Linux/fs/qnx6/qnx6.h

Version: ~ [ linux-5.3-rc4 ] ~ [ linux-5.2.8 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.66 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.138 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.189 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.189 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.71 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * QNX6 file system, Linux implementation.
  3  *
  4  * Version : 1.0.0
  5  *
  6  * History :
  7  *
  8  * 01-02-2012 by Kai Bankett (chaosman@ontika.net) : first release.
  9  * 16-02-2012 page map extension by Al Viro
 10  *
 11  */
 12 
 13 #ifdef pr_fmt
 14 #undef pr_fmt
 15 #endif
 16 
 17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 18 
 19 #include <linux/fs.h>
 20 #include <linux/pagemap.h>
 21 
 22 typedef __u16 __bitwise __fs16;
 23 typedef __u32 __bitwise __fs32;
 24 typedef __u64 __bitwise __fs64;
 25 
 26 #include <linux/qnx6_fs.h>
 27 
 28 struct qnx6_sb_info {
 29         struct buffer_head      *sb_buf;        /* superblock buffer */
 30         struct qnx6_super_block *sb;            /* our superblock */
 31         int                     s_blks_off;     /* blkoffset fs-startpoint */
 32         int                     s_ptrbits;      /* indirect pointer bitfield */
 33         unsigned long           s_mount_opt;    /* all mount options */
 34         int                     s_bytesex;      /* holds endianess info */
 35         struct inode *          inodes;
 36         struct inode *          longfile;
 37 };
 38 
 39 struct qnx6_inode_info {
 40         __fs32                  di_block_ptr[QNX6_NO_DIRECT_POINTERS];
 41         __u8                    di_filelevels;
 42         __u32                   i_dir_start_lookup;
 43         struct inode            vfs_inode;
 44 };
 45 
 46 extern struct inode *qnx6_iget(struct super_block *sb, unsigned ino);
 47 extern struct dentry *qnx6_lookup(struct inode *dir, struct dentry *dentry,
 48                                         unsigned int flags);
 49 
 50 #ifdef CONFIG_QNX6FS_DEBUG
 51 extern void qnx6_superblock_debug(struct qnx6_super_block *,
 52                                                 struct super_block *);
 53 #endif
 54 
 55 extern const struct inode_operations qnx6_dir_inode_operations;
 56 extern const struct file_operations qnx6_dir_operations;
 57 
 58 static inline struct qnx6_sb_info *QNX6_SB(struct super_block *sb)
 59 {
 60         return sb->s_fs_info;
 61 }
 62 
 63 static inline struct qnx6_inode_info *QNX6_I(struct inode *inode)
 64 {
 65         return container_of(inode, struct qnx6_inode_info, vfs_inode);
 66 }
 67 
 68 #define clear_opt(o, opt)               (o &= ~(QNX6_MOUNT_##opt))
 69 #define set_opt(o, opt)                 (o |= (QNX6_MOUNT_##opt))
 70 #define test_opt(sb, opt)               (QNX6_SB(sb)->s_mount_opt & \
 71                                          QNX6_MOUNT_##opt)
 72 enum {
 73         BYTESEX_LE,
 74         BYTESEX_BE,
 75 };
 76 
 77 static inline __u64 fs64_to_cpu(struct qnx6_sb_info *sbi, __fs64 n)
 78 {
 79         if (sbi->s_bytesex == BYTESEX_LE)
 80                 return le64_to_cpu((__force __le64)n);
 81         else
 82                 return be64_to_cpu((__force __be64)n);
 83 }
 84 
 85 static inline __fs64 cpu_to_fs64(struct qnx6_sb_info *sbi, __u64 n)
 86 {
 87         if (sbi->s_bytesex == BYTESEX_LE)
 88                 return (__force __fs64)cpu_to_le64(n);
 89         else
 90                 return (__force __fs64)cpu_to_be64(n);
 91 }
 92 
 93 static inline __u32 fs32_to_cpu(struct qnx6_sb_info *sbi, __fs32 n)
 94 {
 95         if (sbi->s_bytesex == BYTESEX_LE)
 96                 return le32_to_cpu((__force __le32)n);
 97         else
 98                 return be32_to_cpu((__force __be32)n);
 99 }
100 
101 static inline __fs32 cpu_to_fs32(struct qnx6_sb_info *sbi, __u32 n)
102 {
103         if (sbi->s_bytesex == BYTESEX_LE)
104                 return (__force __fs32)cpu_to_le32(n);
105         else
106                 return (__force __fs32)cpu_to_be32(n);
107 }
108 
109 static inline __u16 fs16_to_cpu(struct qnx6_sb_info *sbi, __fs16 n)
110 {
111         if (sbi->s_bytesex == BYTESEX_LE)
112                 return le16_to_cpu((__force __le16)n);
113         else
114                 return be16_to_cpu((__force __be16)n);
115 }
116 
117 static inline __fs16 cpu_to_fs16(struct qnx6_sb_info *sbi, __u16 n)
118 {
119         if (sbi->s_bytesex == BYTESEX_LE)
120                 return (__force __fs16)cpu_to_le16(n);
121         else
122                 return (__force __fs16)cpu_to_be16(n);
123 }
124 
125 extern struct qnx6_super_block *qnx6_mmi_fill_super(struct super_block *s,
126                                                     int silent);
127 
128 static inline void qnx6_put_page(struct page *page)
129 {
130         kunmap(page);
131         page_cache_release(page);
132 }
133 
134 extern unsigned qnx6_find_entry(int len, struct inode *dir, const char *name,
135                                 struct page **res_page);
136 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp