source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/fs.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 7.4 KB
Line 
1#ifndef _LINUX_FS_H
2#define _LINUX_FS_H
3
4/*
5 * This file has definitions for some important file table
6 * structures etc.
7 */
8
9#include <linux/types.h>
10#include <linux/limits.h>
11#include <linux/ioctl.h>
12
13/*
14 * It's silly to have NR_OPEN bigger than NR_FILE, but you can change
15 * the file limit at runtime and only root can increase the per-process
16 * nr_file rlimit, so it's safe to set up a ridiculously high absolute
17 * upper limit on files-per-process.
18 *
19 * Some programs (notably those using select()) may have to be
20 * recompiled to take full advantage of the new limits.. 
21 */
22
23/* Fixed constants first: */
24#undef NR_OPEN
25#define NR_OPEN (1024*1024)     /* Absolute upper limit on fd num */
26#define INR_OPEN 1024           /* Initial setting for nfile rlimits */
27
28#define BLOCK_SIZE_BITS 10
29#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
30
31/* And dynamically-tunable limits and defaults: */
32struct files_stat_struct {
33        int nr_files;           /* read only */
34        int nr_free_files;      /* read only */
35        int max_files;          /* tunable */
36};
37extern struct files_stat_struct files_stat;
38
39struct inodes_stat_t {
40        int nr_inodes;
41        int nr_unused;
42        int dummy[5];
43};
44extern struct inodes_stat_t inodes_stat;
45
46extern int leases_enable, lease_break_time;
47
48#ifdef CONFIG_DNOTIFY
49extern int dir_notify_enable;
50#endif
51
52#define NR_FILE  8192   /* this can well be larger on a larger system */
53
54#define MAY_EXEC 1
55#define MAY_WRITE 2
56#define MAY_READ 4
57#define MAY_APPEND 8
58
59#define FMODE_READ 1
60#define FMODE_WRITE 2
61
62/* Internal kernel extensions */
63#define FMODE_LSEEK     4
64#define FMODE_PREAD     8
65#define FMODE_PWRITE    FMODE_PREAD     /* These go hand in hand */
66
67#define RW_MASK         1
68#define RWA_MASK        2
69#define READ 0
70#define WRITE 1
71#define READA 2         /* read-ahead  - don't block if no resources */
72#define SPECIAL 4       /* For non-blockdevice requests in request queue */
73#define READ_SYNC       (READ | (1 << BIO_RW_SYNC))
74#define WRITE_SYNC      (WRITE | (1 << BIO_RW_SYNC))
75#define WRITE_BARRIER   ((1 << BIO_RW) | (1 << BIO_RW_BARRIER))
76
77#define SEL_IN          1
78#define SEL_OUT         2
79#define SEL_EX          4
80
81/* public flags for file_system_type */
82#define FS_REQUIRES_DEV 1
83#define FS_BINARY_MOUNTDATA 2
84#define FS_REVAL_DOT    16384   /* Check the paths ".", ".." for staleness */
85#define FS_ODD_RENAME   32768   /* Temporary stuff; will go away as soon
86                                  * as nfs_rename() will be cleaned up
87                                  */
88/*
89 * These are the fs-independent mount-flags: up to 32 flags are supported
90 */
91#define MS_RDONLY        1      /* Mount read-only */
92#define MS_NOSUID        2      /* Ignore suid and sgid bits */
93#define MS_NODEV         4      /* Disallow access to device special files */
94#define MS_NOEXEC        8      /* Disallow program execution */
95#define MS_SYNCHRONOUS  16      /* Writes are synced at once */
96#define MS_REMOUNT      32      /* Alter flags of a mounted FS */
97#define MS_MANDLOCK     64      /* Allow mandatory locks on an FS */
98#define MS_DIRSYNC      128     /* Directory modifications are synchronous */
99#define MS_NOATIME      1024    /* Do not update access times. */
100#define MS_NODIRATIME   2048    /* Do not update directory access times */
101#define MS_BIND         4096
102#define MS_MOVE         8192
103#define MS_REC          16384
104#define MS_VERBOSE      32768
105#define MS_POSIXACL     (1<<16) /* VFS does not apply the umask */
106#define MS_ACTIVE       (1<<30)
107#define MS_NOUSER       (1<<31)
108
109/*
110 * Superblock flags that can be altered by MS_REMOUNT
111 */
112#define MS_RMT_MASK     (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_NOATIME|\
113                         MS_NODIRATIME)
114
115/*
116 * Old magic mount flag and mask
117 */
118#define MS_MGC_VAL 0xC0ED0000
119#define MS_MGC_MSK 0xffff0000
120
121/* Inode flags - they have nothing to superblock flags now */
122
123#define S_SYNC          1       /* Writes are synced at once */
124#define S_NOATIME       2       /* Do not update access times */
125#define S_APPEND        4       /* Append-only file */
126#define S_IMMUTABLE     8       /* Immutable file */
127#define S_DEAD          16      /* removed, but still open directory */
128#define S_NOQUOTA       32      /* Inode is not counted to quota */
129#define S_DIRSYNC       64      /* Directory modifications are synchronous */
130#define S_NOCMTIME      128     /* Do not update file c/mtime */
131#define S_SWAPFILE      256     /* Do not truncate: swapon got its bmaps */
132#define S_PRIVATE       512     /* Inode is fs-internal */
133
134/*
135 * Note that nosuid etc flags are inode-specific: setting some file-system
136 * flags just means all the inodes inherit those flags by default. It might be
137 * possible to override it selectively if you really wanted to with some
138 * ioctl() that is not currently implemented.
139 *
140 * Exception: MS_RDONLY is always applied to the entire file system.
141 *
142 * Unfortunately, it is possible to change a filesystems flags with it mounted
143 * with files in use.  This means that all of the inodes will not have their
144 * i_flags updated.  Hence, i_flags no longer inherit the superblock mount
145 * flags, so these have to be checked separately. -- rmk@arm.uk.linux.org
146 */
147#define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
148
149#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
150#define IS_SYNC(inode)          (__IS_FLG(inode, MS_SYNCHRONOUS) || \
151                                        ((inode)->i_flags & S_SYNC))
152#define IS_DIRSYNC(inode)       (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \
153                                        ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
154#define IS_MANDLOCK(inode)      __IS_FLG(inode, MS_MANDLOCK)
155
156#define IS_NOQUOTA(inode)       ((inode)->i_flags & S_NOQUOTA)
157#define IS_APPEND(inode)        ((inode)->i_flags & S_APPEND)
158#define IS_IMMUTABLE(inode)     ((inode)->i_flags & S_IMMUTABLE)
159#define IS_NOATIME(inode)       (__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME))
160#define IS_NODIRATIME(inode)    __IS_FLG(inode, MS_NODIRATIME)
161#define IS_POSIXACL(inode)      __IS_FLG(inode, MS_POSIXACL)
162
163#define IS_DEADDIR(inode)       ((inode)->i_flags & S_DEAD)
164#define IS_NOCMTIME(inode)      ((inode)->i_flags & S_NOCMTIME)
165#define IS_SWAPFILE(inode)      ((inode)->i_flags & S_SWAPFILE)
166#define IS_PRIVATE(inode)       ((inode)->i_flags & S_PRIVATE)
167
168/* the read-only stuff doesn't really belong here, but any other place is
169   probably as bad and I don't want to create yet another include file. */
170
171#define BLKROSET   _IO(0x12,93) /* set device read-only (0 = read-write) */
172#define BLKROGET   _IO(0x12,94) /* get read-only status (0 = read_write) */
173#define BLKRRPART  _IO(0x12,95) /* re-read partition table */
174#define BLKGETSIZE _IO(0x12,96) /* return device size /512 (long *arg) */
175#define BLKFLSBUF  _IO(0x12,97) /* flush buffer cache */
176#define BLKRASET   _IO(0x12,98) /* set read ahead for block device */
177#define BLKRAGET   _IO(0x12,99) /* get current read ahead setting */
178#define BLKFRASET  _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
179#define BLKFRAGET  _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
180#define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
181#define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
182#define BLKSSZGET  _IO(0x12,104)/* get block device sector size */
183
184#define BLKPG      _IO(0x12,105)/* See blkpg.h */
185
186/* Some people are morons.  Do not use sizeof! */
187
188#define BLKELVGET  _IOR(0x12,106,size_t)/* elevator get */
189#define BLKELVSET  _IOW(0x12,107,size_t)/* elevator set */
190/* This was here just to show that the number is taken -
191   probably all these _IO(0x12,*) ioctls should be moved to blkpg.h. */
192
193/* A jump here: 108-111 have been used for various private purposes. */
194#define BLKBSZGET  _IOR(0x12,112,size_t)
195#define BLKBSZSET  _IOW(0x12,113,size_t)
196#define BLKGETSIZE64 _IOR(0x12,114,size_t)      /* return device size in bytes (__u64 *arg) */
197
198#define BMAP_IOCTL 1            /* obsolete - kept for compatibility */
199#define FIBMAP     _IO(0x00,1)  /* bmap access */
200#define FIGETBSZ   _IO(0x00,2)  /* get the block size used for bmap */
201
202#endif /* _LINUX_FS_H */
Note: See TracBrowser for help on using the repository browser.