OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [linux/] [ufs_fs.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
/*
2
 *  linux/include/linux/ufs_fs.h
3
 *
4
 * Copyright (C) 1996
5
 * Adrian Rodriguez (adrian@franklins-tower.rutgers.edu)
6
 * Laboratory for Computer Science Research Computing Facility
7
 * Rutgers, The State University of New Jersey
8
 *
9
 * $Id: ufs_fs.h,v 1.1 2005-12-20 11:32:27 jcastillo Exp $
10
 *
11
 */
12
 
13
#ifndef __LINUX_UFS_FS_H
14
#define __LINUX_UFS_FS_H
15
 
16
#include <linux/types.h>
17
#include <linux/kernel.h>
18
#include <linux/time.h>
19
#include <linux/stat.h>
20
 
21
#define UFS_BBLOCK 0
22
#define UFS_BBSIZE 8192
23
#define UFS_SBLOCK 8192
24
#define UFS_SBSIZE 8192
25
 
26
#define UFS_MAGIC 0x00011954
27
 
28
#define UFS_FSIZE 1024
29
#define UFS_BSIZE 8192
30
 
31
#define UFS_NDADDR 12
32
#define UFS_NINDIR 3
33
 
34
#define UFS_ROOTINO 2
35
 
36
#define UFS_USEEFT  ((__u16)65535)
37
 
38
#define UFS_FSOK      0x7c269d38
39
#define UFS_FSACTIVE  ((char)0x00)
40
#define UFS_FSCLEAN   ((char)0x01)
41
#define UFS_FSSTABLE  ((char)0x02)
42
#define UFS_FSBAD     ((char)0xff)
43
 
44
/* Flags for ufs_sb_info */
45
#define UFS_DEBUG       0x00000001
46
#define UFS_DEBUG_INODE 0x00000002
47
#define UFS_DEBUG_NAMEI 0x00000004
48
#define UFS_DEBUG_LINKS 0x00000008
49
 
50
 
51
/* Test if the inode number is valid. */
52
#define ufs_ino_ok(inode)  ((inode->i_ino < 2) &&  \
53
                            (inode->i_ino > (inode->i_sb->u.ufs_sb.s_ncg * inode->i_sb->u.ufs_sb.s_ipg - 1)))
54
 
55
/* Convert (sb,cg) to the first physical block number for that cg. */
56
#define ufs_cgstart(sb, cg)   \
57
  (((sb)->u.ufs_sb.s_fpg * (cg)) + (sb)->u.ufs_sb.s_cgoffset * ((cg) & ~((sb)->u.ufs_sb.s_cgmask)))
58
 
59
/* Convert (sb,cg) to the first phys. block number for inodes in that cg. */
60
#define ufs_cgimin(sb, cg) (ufs_cgstart((sb), (cg)) + (sb)->u.ufs_sb.s_iblkno)
61
#define ufs_cgdmin(sb, cg) (ufs_cgstart((sb), (cg)) + (sb)->u.ufs_sb.s_dblkno)
62
 
63
/* Convert an inode number to a cg number. */
64
/* XXX - this can be optimized if s_ipg is a power of 2. */
65
#define ufs_ino2cg(inode)  ((inode)->i_ino/(inode)->i_sb->u.ufs_sb.s_ipg)
66
 
67
#define UFS_MAXNAMLEN 255
68
 
69
struct ufs_direct {
70
        __u32  d_ino;                   /* inode number of this entry */
71
        __u16  d_reclen;                /* length of this entry */
72
        __u16  d_namlen;                /* actual length of d_name */
73
        char   d_name[UFS_MAXNAMLEN + 1];       /* file name */
74
};
75
 
76
#define MAXMNTLEN 512
77
#define MAXCSBUFS 32
78
 
79
struct ufs_csum {
80
        __u32   cs_ndir;        /* number of directories */
81
        __u32   cs_nbfree;      /* number of free blocks */
82
        __u32   cs_nifree;      /* number of free inodes */
83
        __u32   cs_nffree;      /* number of free frags */
84
};
85
 
86
typedef struct _ufsquad {
87
        __u32 val[2];
88
} ufsquad;
89
 
90
/*
91
 * This is the actual superblock, as it is laid out on the disk.
92
 */
93
struct ufs_superblock {
94
        __u32   fs_link;        /* UNUSED */
95
        __u32   fs_rlink;       /* UNUSED */
96
        __u32   fs_sblkno;
97
        __u32   fs_cblkno;
98
        __u32   fs_iblkno;
99
        __u32   fs_dblkno;
100
        __u32   fs_cgoffset;
101
        __u32   fs_cgmask;
102
        time_t  fs_time;        /* XXX - check type */
103
        __u32   fs_size;
104
        __u32   fs_dsize;
105
        __u32   fs_ncg;
106
        __u32   fs_bsize;
107
        __u32   fs_fsize;
108
        __u32   fs_frag;
109
        __u32   fs_minfree;
110
        __u32   fs_rotdelay;
111
        __u32   fs_rps;
112
        __u32   fs_bmask;
113
        __u32   fs_fmask;
114
        __u32   fs_bshift;
115
        __u32   fs_fshift;
116
        __u32   fs_maxcontig;
117
        __u32   fs_maxbpg;
118
        __u32   fs_fragshift;
119
        __u32   fs_fsbtodb;
120
        __u32   fs_sbsize;
121
        __u32   fs_csmask;
122
        __u32   fs_csshift;
123
        __u32   fs_nindir;
124
        __u32   fs_inopb;
125
        __u32   fs_nspf;
126
        __u32   fs_optim;
127
        __u32   fs_XXX1;
128
        __u32   fs_interleave;
129
        __u32   fs_trackskew;
130
        __u32   fs_id[2];
131
        __u32   fs_csaddr;
132
        __u32   fs_cssize;
133
        __u32   fs_cgsize;
134
        __u32   fs_ntrak;
135
        __u32   fs_nsect;
136
        __u32   fs_spc;
137
        __u32   fs_ncyl;
138
        __u32   fs_cpg;
139
        __u32   fs_ipg;
140
        __u32   fs_fpg;
141
        struct ufs_csum fs_cstotal;
142
        __u8    fs_fmod;
143
        __u8    fs_clean;
144
        __u8    fs_ronly;
145
        __u8    fs_flags;
146
        __u8    fs_fsmnt[MAXMNTLEN];
147
        __u32   fs_cgrotor;
148
        struct ufs_csum * fs_csp[MAXCSBUFS];
149
        __u32   fs_cpc;
150
        __u16   fs_opostbl[16][8];      /* old rotation block list head */
151
        __s32   fs_sparecon[55];        /* reserved for future constants */
152
        __s32   fs_state;               /* file system state time stamp */
153
        ufsquad fs_qbmask;              /* ~usb_bmask - for use with __s64 size */
154
        ufsquad fs_qfmask;              /* ~usb_fmask - for use with __s64 size */
155
        __s32   fs_postblformat;        /* format of positional layout tables */
156
        __s32   fs_nrpos;               /* number of rotational positions */
157
        __s32   fs_postbloff;           /* (__s16) rotation block list head */
158
        __s32   fs_rotbloff;            /* (__u8) blocks for each rotation */
159
        __s32   fs_magic;               /* magic number */
160
        __u8    fs_space[1];            /* list of blocks for each rotation */
161
 
162
};
163
 
164
/*
165
 * structure of an on-disk inode
166
 */
167
struct ufs_inode {
168
        __u16   ui_mode;                /*  0x0 */
169
        __u16   ui_nlink;               /*  0x2 */
170
        __u16   ui_suid;                /*  0x4 */
171
        __u16   ui_sgid;                /*  0x6 */
172
        ufsquad ui_size;                /*  0x8 */  /* XXX - should be __u64 */
173
        struct timeval ui_atime;        /* 0x10 */
174
        struct timeval ui_mtime;        /* 0x18 */
175
        struct timeval ui_ctime;        /* 0x20 */
176
        __u32   ui_db[UFS_NDADDR];              /* 0x28 data blocks */
177
        __u32   ui_ib[UFS_NINDIR];              /* 0x58 indirect blocks */
178
        __u32   ui_flags;               /* 0x64 unused */
179
        __u32   ui_blocks;              /* 0x68 blocks in use */
180
        __u32   ui_gen;                 /* 0x6c generation number XXX - what is this? */
181
        __u32   ui_shadow;              /* 0x70 shadow inode XXX - what is this?*/
182
        __u32   ui_uid;                 /* 0x74 long EFT version of uid */
183
        __u32   ui_gid;                 /* 0x78 long EFT version of gid */
184
        __u32   ui_oeftflag;            /* 0x7c reserved */
185
};
186
 
187
extern int init_ufs_fs(void);
188
 
189
#endif /* __LINUX_UFS_FS_H */
190
/*
191
 * Local Variables: ***
192
 * c-indent-level: 8 ***
193
 * c-continued-statement-offset: 8 ***
194
 * c-brace-offset: -8 ***
195
 * c-argdecl-indent: 0 ***
196
 * c-label-offset: -8 ***
197
 * End: ***
198
 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.