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