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 #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