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