xref: /OK3568_Linux_fs/u-boot/fs/yaffs2/yportenv.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2002-2011 Aleph One Ltd.
5*4882a593Smuzhiyun  *   for Toby Churchill Ltd and Brightstar Engineering
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Created by Charles Manning <charles@aleph1.co.uk>
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify
10*4882a593Smuzhiyun  * it under the terms of the GNU Lesser General Public License version 2.1 as
11*4882a593Smuzhiyun  * published by the Free Software Foundation.
12*4882a593Smuzhiyun  *
13*4882a593Smuzhiyun  * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun #ifndef __YPORTENV_H__
18*4882a593Smuzhiyun #define __YPORTENV_H__
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #include <linux/types.h>
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /* Definition of types */
23*4882a593Smuzhiyun #ifdef CONFIG_YAFFS_DEFINES_TYPES
24*4882a593Smuzhiyun typedef unsigned char u8;
25*4882a593Smuzhiyun typedef unsigned short u16;
26*4882a593Smuzhiyun typedef unsigned u32;
27*4882a593Smuzhiyun #endif
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #ifdef CONFIG_YAFFS_PROVIDE_DEFS
31*4882a593Smuzhiyun /* File types */
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define DT_UNKNOWN	0
35*4882a593Smuzhiyun #define DT_FIFO		1
36*4882a593Smuzhiyun #define DT_CHR		2
37*4882a593Smuzhiyun #define DT_DIR		4
38*4882a593Smuzhiyun #define DT_BLK		6
39*4882a593Smuzhiyun #define DT_REG		8
40*4882a593Smuzhiyun #define DT_LNK		10
41*4882a593Smuzhiyun #define DT_SOCK		12
42*4882a593Smuzhiyun #define DT_WHT		14
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun /*
46*4882a593Smuzhiyun  * Attribute flags.
47*4882a593Smuzhiyun  * These are or-ed together to select what has been changed.
48*4882a593Smuzhiyun  */
49*4882a593Smuzhiyun #define ATTR_MODE	1
50*4882a593Smuzhiyun #define ATTR_UID	2
51*4882a593Smuzhiyun #define ATTR_GID	4
52*4882a593Smuzhiyun #define ATTR_SIZE	8
53*4882a593Smuzhiyun #define ATTR_ATIME	16
54*4882a593Smuzhiyun #define ATTR_MTIME	32
55*4882a593Smuzhiyun #define ATTR_CTIME	64
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun struct iattr {
58*4882a593Smuzhiyun 	unsigned int ia_valid;
59*4882a593Smuzhiyun 	unsigned ia_mode;
60*4882a593Smuzhiyun 	unsigned ia_uid;
61*4882a593Smuzhiyun 	unsigned ia_gid;
62*4882a593Smuzhiyun 	unsigned ia_size;
63*4882a593Smuzhiyun 	unsigned ia_atime;
64*4882a593Smuzhiyun 	unsigned ia_mtime;
65*4882a593Smuzhiyun 	unsigned ia_ctime;
66*4882a593Smuzhiyun 	unsigned int ia_attr_flags;
67*4882a593Smuzhiyun };
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun #endif
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #if defined CONFIG_YAFFS_WINCE
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #include "ywinceenv.h"
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #elif defined CONFIG_YAFFS_DIRECT
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun /* Direct interface */
81*4882a593Smuzhiyun #include "ydirectenv.h"
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #elif defined CONFIG_YAFFS_UTIL
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #include "yutilsenv.h"
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun #else
88*4882a593Smuzhiyun /* Should have specified a configuration type */
89*4882a593Smuzhiyun #error Unknown configuration
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #endif
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #if defined(CONFIG_YAFFS_DIRECT) || defined(CONFIG_YAFFS_WINCE)
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #ifdef CONFIG_YAFFSFS_PROVIDE_VALUES
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #ifndef O_RDONLY
98*4882a593Smuzhiyun #define O_RDONLY	00
99*4882a593Smuzhiyun #endif
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #ifndef O_WRONLY
102*4882a593Smuzhiyun #define O_WRONLY	01
103*4882a593Smuzhiyun #endif
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun #ifndef O_RDWR
106*4882a593Smuzhiyun #define O_RDWR		02
107*4882a593Smuzhiyun #endif
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #ifndef O_CREAT
110*4882a593Smuzhiyun #define O_CREAT		0100
111*4882a593Smuzhiyun #endif
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #ifndef O_EXCL
114*4882a593Smuzhiyun #define O_EXCL		0200
115*4882a593Smuzhiyun #endif
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #ifndef O_TRUNC
118*4882a593Smuzhiyun #define O_TRUNC		01000
119*4882a593Smuzhiyun #endif
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #ifndef O_APPEND
122*4882a593Smuzhiyun #define O_APPEND	02000
123*4882a593Smuzhiyun #endif
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #ifndef SEEK_SET
126*4882a593Smuzhiyun #define SEEK_SET	0
127*4882a593Smuzhiyun #endif
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #ifndef SEEK_CUR
130*4882a593Smuzhiyun #define SEEK_CUR	1
131*4882a593Smuzhiyun #endif
132*4882a593Smuzhiyun 
133*4882a593Smuzhiyun #ifndef SEEK_END
134*4882a593Smuzhiyun #define SEEK_END	2
135*4882a593Smuzhiyun #endif
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #ifndef EBUSY
138*4882a593Smuzhiyun #define EBUSY	16
139*4882a593Smuzhiyun #endif
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun #ifndef ENODEV
142*4882a593Smuzhiyun #define ENODEV	19
143*4882a593Smuzhiyun #endif
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun #ifndef EINVAL
146*4882a593Smuzhiyun #define EINVAL	22
147*4882a593Smuzhiyun #endif
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun #ifndef ENFILE
150*4882a593Smuzhiyun #define ENFILE	23
151*4882a593Smuzhiyun #endif
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun #ifndef EBADF
154*4882a593Smuzhiyun #define EBADF	9
155*4882a593Smuzhiyun #endif
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #ifndef EACCES
158*4882a593Smuzhiyun #define EACCES	13
159*4882a593Smuzhiyun #endif
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun #ifndef EXDEV
162*4882a593Smuzhiyun #define EXDEV	18
163*4882a593Smuzhiyun #endif
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun #ifndef ENOENT
166*4882a593Smuzhiyun #define ENOENT	2
167*4882a593Smuzhiyun #endif
168*4882a593Smuzhiyun 
169*4882a593Smuzhiyun #ifndef ENOSPC
170*4882a593Smuzhiyun #define ENOSPC	28
171*4882a593Smuzhiyun #endif
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #ifndef EROFS
174*4882a593Smuzhiyun #define EROFS	30
175*4882a593Smuzhiyun #endif
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun #ifndef ERANGE
178*4882a593Smuzhiyun #define ERANGE 34
179*4882a593Smuzhiyun #endif
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun #ifndef ENODATA
182*4882a593Smuzhiyun #define ENODATA 61
183*4882a593Smuzhiyun #endif
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #ifndef ENOTEMPTY
186*4882a593Smuzhiyun #define ENOTEMPTY 39
187*4882a593Smuzhiyun #endif
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun #ifndef ENAMETOOLONG
190*4882a593Smuzhiyun #define ENAMETOOLONG 36
191*4882a593Smuzhiyun #endif
192*4882a593Smuzhiyun 
193*4882a593Smuzhiyun #ifndef ENOMEM
194*4882a593Smuzhiyun #define ENOMEM 12
195*4882a593Smuzhiyun #endif
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun #ifndef EFAULT
198*4882a593Smuzhiyun #define EFAULT 14
199*4882a593Smuzhiyun #endif
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun #ifndef EEXIST
202*4882a593Smuzhiyun #define EEXIST 17
203*4882a593Smuzhiyun #endif
204*4882a593Smuzhiyun 
205*4882a593Smuzhiyun #ifndef ENOTDIR
206*4882a593Smuzhiyun #define ENOTDIR 20
207*4882a593Smuzhiyun #endif
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun #ifndef EISDIR
210*4882a593Smuzhiyun #define EISDIR 21
211*4882a593Smuzhiyun #endif
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun #ifndef ELOOP
214*4882a593Smuzhiyun #define ELOOP	40
215*4882a593Smuzhiyun #endif
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun 
218*4882a593Smuzhiyun /* Mode flags */
219*4882a593Smuzhiyun 
220*4882a593Smuzhiyun #ifndef S_IFMT
221*4882a593Smuzhiyun #define S_IFMT		0170000
222*4882a593Smuzhiyun #endif
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun #ifndef S_IFSOCK
225*4882a593Smuzhiyun #define S_IFSOCK	0140000
226*4882a593Smuzhiyun #endif
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun #ifndef S_IFIFO
229*4882a593Smuzhiyun #define S_IFIFO		0010000
230*4882a593Smuzhiyun #endif
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun #ifndef S_IFCHR
233*4882a593Smuzhiyun #define S_IFCHR		0020000
234*4882a593Smuzhiyun #endif
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun #ifndef S_IFBLK
237*4882a593Smuzhiyun #define S_IFBLK		0060000
238*4882a593Smuzhiyun #endif
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun #ifndef S_IFLNK
241*4882a593Smuzhiyun #define S_IFLNK		0120000
242*4882a593Smuzhiyun #endif
243*4882a593Smuzhiyun 
244*4882a593Smuzhiyun #ifndef S_IFDIR
245*4882a593Smuzhiyun #define S_IFDIR		0040000
246*4882a593Smuzhiyun #endif
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun #ifndef S_IFREG
249*4882a593Smuzhiyun #define S_IFREG		0100000
250*4882a593Smuzhiyun #endif
251*4882a593Smuzhiyun 
252*4882a593Smuzhiyun #define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
253*4882a593Smuzhiyun #define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
254*4882a593Smuzhiyun #define S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
255*4882a593Smuzhiyun #define S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
256*4882a593Smuzhiyun #define S_ISBLK(m)	(((m) & S_IFMT) == S_IFBLK)
257*4882a593Smuzhiyun #define S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
258*4882a593Smuzhiyun #define S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun #ifndef S_IREAD
262*4882a593Smuzhiyun #define S_IREAD		0000400
263*4882a593Smuzhiyun #endif
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun #ifndef S_IWRITE
266*4882a593Smuzhiyun #define	S_IWRITE	0000200
267*4882a593Smuzhiyun #endif
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun #ifndef S_IEXEC
270*4882a593Smuzhiyun #define	S_IEXEC	0000100
271*4882a593Smuzhiyun #endif
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun #ifndef XATTR_CREATE
274*4882a593Smuzhiyun #define XATTR_CREATE 1
275*4882a593Smuzhiyun #endif
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun #ifndef XATTR_REPLACE
278*4882a593Smuzhiyun #define XATTR_REPLACE 2
279*4882a593Smuzhiyun #endif
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun #ifndef R_OK
282*4882a593Smuzhiyun #define R_OK	4
283*4882a593Smuzhiyun #define W_OK	2
284*4882a593Smuzhiyun #define X_OK	1
285*4882a593Smuzhiyun #define F_OK	0
286*4882a593Smuzhiyun #endif
287*4882a593Smuzhiyun 
288*4882a593Smuzhiyun #else
289*4882a593Smuzhiyun #include <errno.h>
290*4882a593Smuzhiyun #include <sys/stat.h>
291*4882a593Smuzhiyun #include <fcntl.h>
292*4882a593Smuzhiyun #endif
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #endif
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun #ifndef Y_DUMP_STACK
297*4882a593Smuzhiyun #define Y_DUMP_STACK() do { } while (0)
298*4882a593Smuzhiyun #endif
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #ifndef BUG
301*4882a593Smuzhiyun #define BUG() do {\
302*4882a593Smuzhiyun 	yaffs_trace(YAFFS_TRACE_BUG,\
303*4882a593Smuzhiyun 		"==>> yaffs bug: " __FILE__ " %d",\
304*4882a593Smuzhiyun 		__LINE__);\
305*4882a593Smuzhiyun 	Y_DUMP_STACK();\
306*4882a593Smuzhiyun } while (0)
307*4882a593Smuzhiyun #endif
308*4882a593Smuzhiyun 
309*4882a593Smuzhiyun #endif
310