X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Fyportenv.h;h=ee27f73cee0c7011057c456102985d4f0ec92088;hp=700115007a26bf8b2762eb18772292dfdc7d8cba;hb=HEAD;hpb=9efa67752f0f585c2854c45422f0724df8e38e93 diff --git a/direct/yportenv.h b/direct/yportenv.h index 7001150..5a79f93 100644 --- a/direct/yportenv.h +++ b/direct/yportenv.h @@ -1,8 +1,7 @@ /* * YAFFS: Yet another Flash File System . A NAND-flash specific file system. * - * Copyright (C) 2002-2010 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering + * Copyright (C) 2002-2018 Aleph One Ltd. * * Created by Charles Manning * @@ -17,65 +16,91 @@ #ifndef __YPORTENV_H__ #define __YPORTENV_H__ -/* - * Define the MTD version in terms of Linux Kernel versions - * This allows yaffs to be used independantly of the kernel - * as well as with it. - */ +#ifdef __rtems__ -#if defined CONFIG_YAFFS_WINCE +#include +#include +#include +#include -#include "ywinceenv.h" +#define CONFIG_YAFFS_DIRECT 1 +#define CONFIG_YAFFS_SHORT_NAMES_IN_RAM 1 +#define CONFIG_YAFFS_YAFFS2 1 +#define CONFIG_YAFFS_PROVIDE_DEFS 1 +#define CONFIG_YAFFSFS_PROVIDE_VALUES 1 +#define CONFIG_YAFFS_DEFINES_TYPES 1 +#define CONFIG_YAFFS_USE_32_BIT_TIME_T 1 +#define NO_Y_INLINE 1 +#define loff_t off_t +#endif /* __rtems__ */ -#elif defined CONFIG_YAFFS_DIRECT +/* Definition of types */ +#ifdef CONFIG_YAFFS_DEFINES_TYPES +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long long u64; +typedef signed int s32; +#endif -/* Direct interface */ -#include "ydirectenv.h" +#ifdef CONFIG_YAFFS_PROVIDE_DEFS +/* File types */ -#elif defined CONFIG_YAFFS_UTIL -/* Stuff for YAFFS utilities */ +#define DT_UNKNOWN 0 +#define DT_FIFO 1 +#define DT_CHR 2 +#define DT_DIR 4 +#define DT_BLK 6 +#define DT_REG 8 +#define DT_LNK 10 +#define DT_SOCK 12 +#define DT_WHT 14 -#include "stdlib.h" -#include "stdio.h" -#include "string.h" +/* + * Attribute flags. + * These are or-ed together to select what has been changed. + */ +#define ATTR_MODE 1 +#define ATTR_UID 2 +#define ATTR_GID 4 +#define ATTR_SIZE 8 +#define ATTR_ATIME 16 +#define ATTR_MTIME 32 +#define ATTR_CTIME 64 -#define YMALLOC(x) malloc(x) -#define YFREE(x) free(x) -#define YMALLOC_ALT(x) malloc(x) -#define YFREE_ALT(x) free(x) +struct iattr { + unsigned int ia_valid; + unsigned ia_mode; + unsigned ia_uid; + unsigned ia_gid; + unsigned ia_size; + unsigned ia_atime; + unsigned ia_mtime; + unsigned ia_ctime; + unsigned int ia_attr_flags; +}; -#define YCHAR char -#define YUCHAR unsigned char -#define _Y(x) x -#define yaffs_strcat(a, b) strcat(a, b) -#define yaffs_strcpy(a, b) strcpy(a, b) -#define yaffs_strncpy(a, b, c) strncpy(a, b, c) -#define yaffs_strnlen(s,m) strnlen(s,m) -#define yaffs_sprintf sprintf -#define yaffs_toupper(a) toupper(a) +#endif -#define Y_INLINE inline -/* #define YINFO(s) YPRINTF(( __FILE__ " %d %s\n",__LINE__,s)) */ -/* #define YALERT(s) YINFO(s) */ -#define TENDSTR "\n" -#define TSTR(x) x -#define TOUT(p) printf p +#if defined CONFIG_YAFFS_WINCE -#define YAFFS_LOSTNFOUND_NAME "lost+found" -#define YAFFS_LOSTNFOUND_PREFIX "obj" -/* #define YPRINTF(x) printf x */ +#include "ywinceenv.h" -#define YAFFS_ROOT_MODE 0755 -#define YAFFS_LOSTNFOUND_MODE 0700 -#define yaffs_sum_cmp(x, y) ((x) == (y)) -#define yaffs_strcmp(a, b) strcmp(a, b) +#elif defined CONFIG_YAFFS_DIRECT + +/* Direct interface */ +#include "ydirectenv.h" + +#elif defined CONFIG_YAFFS_UTIL + +#include "yutilsenv.h" #else /* Should have specified a configuration type */ @@ -88,7 +113,7 @@ #ifdef CONFIG_YAFFSFS_PROVIDE_VALUES #ifndef O_RDONLY -#define O_RDONLY 00 +#define O_RDONLY 00 #endif #ifndef O_WRONLY @@ -99,8 +124,8 @@ #define O_RDWR 02 #endif -#ifndef O_CREAT -#define O_CREAT 0100 +#ifndef O_CREAT +#define O_CREAT 0100 #endif #ifndef O_EXCL @@ -151,7 +176,7 @@ #define EACCES 13 #endif -#ifndef EXDEV +#ifndef EXDEV #define EXDEV 18 #endif @@ -187,6 +212,10 @@ #define ENOMEM 12 #endif +#ifndef EFAULT +#define EFAULT 14 +#endif + #ifndef EEXIST #define EEXIST 17 #endif @@ -204,12 +233,28 @@ #endif -// Mode flags +/* Mode flags */ #ifndef S_IFMT #define S_IFMT 0170000 #endif +#ifndef S_IFSOCK +#define S_IFSOCK 0140000 +#endif + +#ifndef S_IFIFO +#define S_IFIFO 0010000 +#endif + +#ifndef S_IFCHR +#define S_IFCHR 0020000 +#endif + +#ifndef S_IFBLK +#define S_IFBLK 0060000 +#endif + #ifndef S_IFLNK #define S_IFLNK 0120000 #endif @@ -222,7 +267,42 @@ #define S_IFREG 0100000 #endif -#ifndef S_IREAD +#ifndef S_ISSOCK +#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) +#endif +#ifndef S_ISLNK +#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif +#ifndef S_ISBLK +#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) +#endif +#ifndef S_ISCHR +#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) +#endif +#ifndef S_ISFIFO +#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) +#endif + + +#ifndef S_IRUSR +#define S_IRUSR 0000400 +#endif + +#ifndef S_IWUSR +#define S_IWUSR 0000200 +#endif + +#ifndef S_IXUSR +#define S_IXUSR 0000100 +#endif + +#ifndef S_IREAD #define S_IREAD 0000400 #endif @@ -234,6 +314,16 @@ #define S_IEXEC 0000100 #endif + +#else +#include +#include +#include +#endif + +#endif + +/* Create some less common define values if they don't exist */ #ifndef XATTR_CREATE #define XATTR_CREATE 1 #endif @@ -249,112 +339,21 @@ #define F_OK 0 #endif -#else -#include -#include -#include -#endif - +#ifndef S_ISSOCK +#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) #endif #ifndef Y_DUMP_STACK #define Y_DUMP_STACK() do { } while (0) #endif -#ifndef YBUG -#define YBUG() do {\ - T(YAFFS_TRACE_BUG,\ - (TSTR("==>> yaffs bug: " __FILE__ " %d" TENDSTR),\ - __LINE__));\ +#ifndef BUG +#define BUG() do {\ + yaffs_trace(YAFFS_TRACE_BUG,\ + "==>> yaffs bug: " __FILE__ " %d",\ + __LINE__);\ Y_DUMP_STACK();\ } while (0) #endif - -#endif - -/* - * YAFFS: Yet another Flash File System . A NAND-flash specific file system. - * - * Copyright (C) 2002-2010 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering - * - * Created by Charles Manning - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 2.1 as - * published by the Free Software Foundation. - * - * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. - */ - -/* - * This file is just holds extra declarations of macros that would normally - * be provided in the Linux kernel. These macros have been written from - * scratch but are functionally equivalent to the Linux ones. - * - */ - -#ifndef __EXTRAS_H__ -#define __EXTRAS_H__ - - -/* Definition of types */ -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned u32; - - -#ifndef WIN32 -#include -#endif - - -#ifdef CONFIG_YAFFS_PROVIDE_DEFS -/* File types */ - - -#define DT_UNKNOWN 0 -#define DT_FIFO 1 -#define DT_CHR 2 -#define DT_DIR 4 -#define DT_BLK 6 -#define DT_REG 8 -#define DT_LNK 10 -#define DT_SOCK 12 -#define DT_WHT 14 - - -#ifndef WIN32 -#include -#endif - -/* - * Attribute flags. These should be or-ed together to figure out what - * has been changed! - */ -#define ATTR_MODE 1 -#define ATTR_UID 2 -#define ATTR_GID 4 -#define ATTR_SIZE 8 -#define ATTR_ATIME 16 -#define ATTR_MTIME 32 -#define ATTR_CTIME 64 - -struct iattr { - unsigned int ia_valid; - unsigned ia_mode; - unsigned ia_uid; - unsigned ia_gid; - unsigned ia_size; - unsigned ia_atime; - unsigned ia_mtime; - unsigned ia_ctime; - unsigned int ia_attr_flags; -}; - -#endif - - - #endif