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#ifndef __YPORTENV_H__ 17#define __YPORTENV_H__ 18 19/* 20 * Define the MTD version in terms of Linux Kernel versions 21 * This allows yaffs to be used independantly of the kernel 22 * as well as with it. 23 */ 24 25#define MTD_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c)) 26 27#ifdef YAFFS_OUT_OF_TREE 28#include "moduleconfig.h" 29#endif 30 31#include <linux/version.h> 32#define MTD_VERSION_CODE LINUX_VERSION_CODE 33 34#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)) 35#include <linux/config.h> 36#endif 37#include <linux/version.h> 38#include <linux/kernel.h> 39#include <linux/mm.h> 40#include <linux/sched.h> 41#include <linux/string.h> 42#include <linux/slab.h> 43#include <linux/vmalloc.h> 44#include <linux/xattr.h> 45#include <linux/list.h> 46#include <linux/types.h> 47#include <linux/fs.h> 48#include <linux/stat.h> 49#include <linux/sort.h> 50#include <linux/bitops.h> 51 52/* These type wrappings are used to support Unicode names in WinCE. */ 53#define YCHAR char 54#define YUCHAR unsigned char 55#define _Y(x) x 56 57#define YAFFS_LOSTNFOUND_NAME "lost+found" 58#define YAFFS_LOSTNFOUND_PREFIX "obj" 59 60 61#define YAFFS_ROOT_MODE 0755 62#define YAFFS_LOSTNFOUND_MODE 0700 63 64#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 5, 0)) 65#define Y_CURRENT_TIME CURRENT_TIME.tv_sec 66#define Y_TIME_CONVERT(x) (x).tv_sec 67#else 68#define Y_CURRENT_TIME CURRENT_TIME 69#define Y_TIME_CONVERT(x) (x) 70#endif 71 72#define compile_time_assertion(assertion) \ 73 ({ int x = __builtin_choose_expr(assertion, 0, (void)0); (void) x; }) 74 75 76#define yaffs_printf(msk, fmt, ...) \ 77 printk(KERN_DEBUG "yaffs: " fmt "\n", ##__VA_ARGS__) 78 79#define yaffs_trace(msk, fmt, ...) do { \ 80 if (yaffs_trace_mask & (msk)) \ 81 printk(KERN_DEBUG "yaffs: " fmt "\n", ##__VA_ARGS__); \ 82} while (0) 83 84 85#endif 86