xref: /rk3399_rockchip-uboot/fs/yaffs2/yportenv.h (revision 1c27059a2f7158a9c9a8778535b030935d75179d)
10e8cc8bdSWilliam Juul /*
20e8cc8bdSWilliam Juul  * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
30e8cc8bdSWilliam Juul  *
4753ac610SCharles Manning  * Copyright (C) 2002-2011 Aleph One Ltd.
50e8cc8bdSWilliam Juul  *   for Toby Churchill Ltd and Brightstar Engineering
60e8cc8bdSWilliam Juul  *
70e8cc8bdSWilliam Juul  * Created by Charles Manning <charles@aleph1.co.uk>
80e8cc8bdSWilliam Juul  *
90e8cc8bdSWilliam Juul  * This program is free software; you can redistribute it and/or modify
100e8cc8bdSWilliam Juul  * it under the terms of the GNU Lesser General Public License version 2.1 as
110e8cc8bdSWilliam Juul  * published by the Free Software Foundation.
120e8cc8bdSWilliam Juul  *
130e8cc8bdSWilliam Juul  * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
140e8cc8bdSWilliam Juul  */
150e8cc8bdSWilliam Juul 
160e8cc8bdSWilliam Juul 
170e8cc8bdSWilliam Juul #ifndef __YPORTENV_H__
180e8cc8bdSWilliam Juul #define __YPORTENV_H__
190e8cc8bdSWilliam Juul 
20*74f45b73SCharles Manning #include <linux/types.h>
21753ac610SCharles Manning 
22753ac610SCharles Manning /* Definition of types */
23753ac610SCharles Manning #ifdef CONFIG_YAFFS_DEFINES_TYPES
24753ac610SCharles Manning typedef unsigned char u8;
25753ac610SCharles Manning typedef unsigned short u16;
26753ac610SCharles Manning typedef unsigned u32;
2790ef117bSWilliam Juul #endif
2890ef117bSWilliam Juul 
29753ac610SCharles Manning 
30753ac610SCharles Manning #ifdef CONFIG_YAFFS_PROVIDE_DEFS
31753ac610SCharles Manning /* File types */
32753ac610SCharles Manning 
33753ac610SCharles Manning 
34753ac610SCharles Manning #define DT_UNKNOWN	0
35753ac610SCharles Manning #define DT_FIFO		1
36753ac610SCharles Manning #define DT_CHR		2
37753ac610SCharles Manning #define DT_DIR		4
38753ac610SCharles Manning #define DT_BLK		6
39753ac610SCharles Manning #define DT_REG		8
40753ac610SCharles Manning #define DT_LNK		10
41753ac610SCharles Manning #define DT_SOCK		12
42753ac610SCharles Manning #define DT_WHT		14
43753ac610SCharles Manning 
44753ac610SCharles Manning 
45753ac610SCharles Manning /*
46753ac610SCharles Manning  * Attribute flags.
47753ac610SCharles Manning  * These are or-ed together to select what has been changed.
48753ac610SCharles Manning  */
49753ac610SCharles Manning #define ATTR_MODE	1
50753ac610SCharles Manning #define ATTR_UID	2
51753ac610SCharles Manning #define ATTR_GID	4
52753ac610SCharles Manning #define ATTR_SIZE	8
53753ac610SCharles Manning #define ATTR_ATIME	16
54753ac610SCharles Manning #define ATTR_MTIME	32
55753ac610SCharles Manning #define ATTR_CTIME	64
56753ac610SCharles Manning 
57753ac610SCharles Manning struct iattr {
58753ac610SCharles Manning 	unsigned int ia_valid;
59753ac610SCharles Manning 	unsigned ia_mode;
60753ac610SCharles Manning 	unsigned ia_uid;
61753ac610SCharles Manning 	unsigned ia_gid;
62753ac610SCharles Manning 	unsigned ia_size;
63753ac610SCharles Manning 	unsigned ia_atime;
64753ac610SCharles Manning 	unsigned ia_mtime;
65753ac610SCharles Manning 	unsigned ia_ctime;
66753ac610SCharles Manning 	unsigned int ia_attr_flags;
67753ac610SCharles Manning };
68753ac610SCharles Manning 
69753ac610SCharles Manning #endif
70753ac610SCharles Manning 
71753ac610SCharles Manning 
72753ac610SCharles Manning 
730e8cc8bdSWilliam Juul #if defined CONFIG_YAFFS_WINCE
740e8cc8bdSWilliam Juul 
750e8cc8bdSWilliam Juul #include "ywinceenv.h"
760e8cc8bdSWilliam Juul 
770e8cc8bdSWilliam Juul 
780e8cc8bdSWilliam Juul #elif defined CONFIG_YAFFS_DIRECT
790e8cc8bdSWilliam Juul 
800e8cc8bdSWilliam Juul /* Direct interface */
810e8cc8bdSWilliam Juul #include "ydirectenv.h"
820e8cc8bdSWilliam Juul 
830e8cc8bdSWilliam Juul #elif defined CONFIG_YAFFS_UTIL
840e8cc8bdSWilliam Juul 
85753ac610SCharles Manning #include "yutilsenv.h"
860e8cc8bdSWilliam Juul 
870e8cc8bdSWilliam Juul #else
880e8cc8bdSWilliam Juul /* Should have specified a configuration type */
890e8cc8bdSWilliam Juul #error Unknown configuration
900e8cc8bdSWilliam Juul 
910e8cc8bdSWilliam Juul #endif
920e8cc8bdSWilliam Juul 
93753ac610SCharles Manning #if defined(CONFIG_YAFFS_DIRECT) || defined(CONFIG_YAFFS_WINCE)
940e8cc8bdSWilliam Juul 
95753ac610SCharles Manning #ifdef CONFIG_YAFFSFS_PROVIDE_VALUES
960e8cc8bdSWilliam Juul 
97753ac610SCharles Manning #ifndef O_RDONLY
98753ac610SCharles Manning #define O_RDONLY	00
99753ac610SCharles Manning #endif
1000e8cc8bdSWilliam Juul 
101753ac610SCharles Manning #ifndef O_WRONLY
102753ac610SCharles Manning #define O_WRONLY	01
103753ac610SCharles Manning #endif
104753ac610SCharles Manning 
105753ac610SCharles Manning #ifndef O_RDWR
106753ac610SCharles Manning #define O_RDWR		02
107753ac610SCharles Manning #endif
108753ac610SCharles Manning 
109753ac610SCharles Manning #ifndef O_CREAT
110753ac610SCharles Manning #define O_CREAT		0100
111753ac610SCharles Manning #endif
112753ac610SCharles Manning 
113753ac610SCharles Manning #ifndef O_EXCL
114753ac610SCharles Manning #define O_EXCL		0200
115753ac610SCharles Manning #endif
116753ac610SCharles Manning 
117753ac610SCharles Manning #ifndef O_TRUNC
118753ac610SCharles Manning #define O_TRUNC		01000
119753ac610SCharles Manning #endif
120753ac610SCharles Manning 
121753ac610SCharles Manning #ifndef O_APPEND
122753ac610SCharles Manning #define O_APPEND	02000
123753ac610SCharles Manning #endif
124753ac610SCharles Manning 
125753ac610SCharles Manning #ifndef SEEK_SET
126753ac610SCharles Manning #define SEEK_SET	0
127753ac610SCharles Manning #endif
128753ac610SCharles Manning 
129753ac610SCharles Manning #ifndef SEEK_CUR
130753ac610SCharles Manning #define SEEK_CUR	1
131753ac610SCharles Manning #endif
132753ac610SCharles Manning 
133753ac610SCharles Manning #ifndef SEEK_END
134753ac610SCharles Manning #define SEEK_END	2
135753ac610SCharles Manning #endif
136753ac610SCharles Manning 
137753ac610SCharles Manning #ifndef EBUSY
138753ac610SCharles Manning #define EBUSY	16
139753ac610SCharles Manning #endif
140753ac610SCharles Manning 
141753ac610SCharles Manning #ifndef ENODEV
142753ac610SCharles Manning #define ENODEV	19
143753ac610SCharles Manning #endif
144753ac610SCharles Manning 
145753ac610SCharles Manning #ifndef EINVAL
146753ac610SCharles Manning #define EINVAL	22
147753ac610SCharles Manning #endif
148753ac610SCharles Manning 
149753ac610SCharles Manning #ifndef ENFILE
150753ac610SCharles Manning #define ENFILE	23
151753ac610SCharles Manning #endif
152753ac610SCharles Manning 
153753ac610SCharles Manning #ifndef EBADF
154753ac610SCharles Manning #define EBADF	9
155753ac610SCharles Manning #endif
156753ac610SCharles Manning 
157753ac610SCharles Manning #ifndef EACCES
158753ac610SCharles Manning #define EACCES	13
159753ac610SCharles Manning #endif
160753ac610SCharles Manning 
161753ac610SCharles Manning #ifndef EXDEV
162753ac610SCharles Manning #define EXDEV	18
163753ac610SCharles Manning #endif
164753ac610SCharles Manning 
165753ac610SCharles Manning #ifndef ENOENT
166753ac610SCharles Manning #define ENOENT	2
167753ac610SCharles Manning #endif
168753ac610SCharles Manning 
169753ac610SCharles Manning #ifndef ENOSPC
170753ac610SCharles Manning #define ENOSPC	28
171753ac610SCharles Manning #endif
172753ac610SCharles Manning 
173753ac610SCharles Manning #ifndef EROFS
174753ac610SCharles Manning #define EROFS	30
175753ac610SCharles Manning #endif
176753ac610SCharles Manning 
177753ac610SCharles Manning #ifndef ERANGE
178753ac610SCharles Manning #define ERANGE 34
179753ac610SCharles Manning #endif
180753ac610SCharles Manning 
181753ac610SCharles Manning #ifndef ENODATA
182753ac610SCharles Manning #define ENODATA 61
183753ac610SCharles Manning #endif
184753ac610SCharles Manning 
185753ac610SCharles Manning #ifndef ENOTEMPTY
186753ac610SCharles Manning #define ENOTEMPTY 39
187753ac610SCharles Manning #endif
188753ac610SCharles Manning 
189753ac610SCharles Manning #ifndef ENAMETOOLONG
190753ac610SCharles Manning #define ENAMETOOLONG 36
191753ac610SCharles Manning #endif
192753ac610SCharles Manning 
193753ac610SCharles Manning #ifndef ENOMEM
194753ac610SCharles Manning #define ENOMEM 12
195753ac610SCharles Manning #endif
196753ac610SCharles Manning 
197753ac610SCharles Manning #ifndef EFAULT
198753ac610SCharles Manning #define EFAULT 14
199753ac610SCharles Manning #endif
200753ac610SCharles Manning 
201753ac610SCharles Manning #ifndef EEXIST
202753ac610SCharles Manning #define EEXIST 17
203753ac610SCharles Manning #endif
204753ac610SCharles Manning 
205753ac610SCharles Manning #ifndef ENOTDIR
206753ac610SCharles Manning #define ENOTDIR 20
207753ac610SCharles Manning #endif
208753ac610SCharles Manning 
209753ac610SCharles Manning #ifndef EISDIR
210753ac610SCharles Manning #define EISDIR 21
211753ac610SCharles Manning #endif
212753ac610SCharles Manning 
213753ac610SCharles Manning #ifndef ELOOP
214753ac610SCharles Manning #define ELOOP	40
215753ac610SCharles Manning #endif
2160e8cc8bdSWilliam Juul 
2170e8cc8bdSWilliam Juul 
218753ac610SCharles Manning /* Mode flags */
219753ac610SCharles Manning 
220753ac610SCharles Manning #ifndef S_IFMT
221753ac610SCharles Manning #define S_IFMT		0170000
222753ac610SCharles Manning #endif
223753ac610SCharles Manning 
224753ac610SCharles Manning #ifndef S_IFSOCK
225753ac610SCharles Manning #define S_IFSOCK	0140000
226753ac610SCharles Manning #endif
227753ac610SCharles Manning 
228753ac610SCharles Manning #ifndef S_IFIFO
229753ac610SCharles Manning #define S_IFIFO		0010000
230753ac610SCharles Manning #endif
231753ac610SCharles Manning 
232753ac610SCharles Manning #ifndef S_IFCHR
233753ac610SCharles Manning #define S_IFCHR		0020000
234753ac610SCharles Manning #endif
235753ac610SCharles Manning 
236753ac610SCharles Manning #ifndef S_IFBLK
237753ac610SCharles Manning #define S_IFBLK		0060000
238753ac610SCharles Manning #endif
239753ac610SCharles Manning 
240753ac610SCharles Manning #ifndef S_IFLNK
241753ac610SCharles Manning #define S_IFLNK		0120000
242753ac610SCharles Manning #endif
243753ac610SCharles Manning 
244753ac610SCharles Manning #ifndef S_IFDIR
245753ac610SCharles Manning #define S_IFDIR		0040000
246753ac610SCharles Manning #endif
247753ac610SCharles Manning 
248753ac610SCharles Manning #ifndef S_IFREG
249753ac610SCharles Manning #define S_IFREG		0100000
250753ac610SCharles Manning #endif
251753ac610SCharles Manning 
252753ac610SCharles Manning #define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
253753ac610SCharles Manning #define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
254753ac610SCharles Manning #define S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
255753ac610SCharles Manning #define S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
256753ac610SCharles Manning #define S_ISBLK(m)	(((m) & S_IFMT) == S_IFBLK)
257753ac610SCharles Manning #define S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
258753ac610SCharles Manning #define S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
2590e8cc8bdSWilliam Juul 
2600e8cc8bdSWilliam Juul 
261753ac610SCharles Manning #ifndef S_IREAD
262753ac610SCharles Manning #define S_IREAD		0000400
263753ac610SCharles Manning #endif
2640e8cc8bdSWilliam Juul 
265753ac610SCharles Manning #ifndef S_IWRITE
266753ac610SCharles Manning #define	S_IWRITE	0000200
267753ac610SCharles Manning #endif
268753ac610SCharles Manning 
269753ac610SCharles Manning #ifndef S_IEXEC
270753ac610SCharles Manning #define	S_IEXEC	0000100
271753ac610SCharles Manning #endif
272753ac610SCharles Manning 
273753ac610SCharles Manning #ifndef XATTR_CREATE
274753ac610SCharles Manning #define XATTR_CREATE 1
275753ac610SCharles Manning #endif
276753ac610SCharles Manning 
277753ac610SCharles Manning #ifndef XATTR_REPLACE
278753ac610SCharles Manning #define XATTR_REPLACE 2
279753ac610SCharles Manning #endif
280753ac610SCharles Manning 
281753ac610SCharles Manning #ifndef R_OK
282753ac610SCharles Manning #define R_OK	4
283753ac610SCharles Manning #define W_OK	2
284753ac610SCharles Manning #define X_OK	1
285753ac610SCharles Manning #define F_OK	0
286753ac610SCharles Manning #endif
287753ac610SCharles Manning 
288753ac610SCharles Manning #else
289753ac610SCharles Manning #include <errno.h>
290753ac610SCharles Manning #include <sys/stat.h>
291753ac610SCharles Manning #include <fcntl.h>
292753ac610SCharles Manning #endif
293753ac610SCharles Manning 
294753ac610SCharles Manning #endif
295753ac610SCharles Manning 
296753ac610SCharles Manning #ifndef Y_DUMP_STACK
297753ac610SCharles Manning #define Y_DUMP_STACK() do { } while (0)
298753ac610SCharles Manning #endif
299753ac610SCharles Manning 
300753ac610SCharles Manning #ifndef BUG
301753ac610SCharles Manning #define BUG() do {\
302753ac610SCharles Manning 	yaffs_trace(YAFFS_TRACE_BUG,\
303753ac610SCharles Manning 		"==>> yaffs bug: " __FILE__ " %d",\
304753ac610SCharles Manning 		__LINE__);\
305753ac610SCharles Manning 	Y_DUMP_STACK();\
306753ac610SCharles Manning } while (0)
3070e8cc8bdSWilliam Juul #endif
3080e8cc8bdSWilliam Juul 
3090e8cc8bdSWilliam Juul #endif
310