Home | History | Annotate | Download | only in yaffs2
      1 /*
      2  * YAFFS: Yet another FFS. A NAND-flash specific file system.
      3  * yportenv.h: Portable services used by yaffs. This is done to allow
      4  * simple migration from kernel space into app space for testing.
      5  *
      6  * Copyright (C) 2002 Aleph One Ltd.
      7  *   for Toby Churchill Ltd and Brightstar Engineering
      8  *
      9  * Created by Charles Manning <charles (at) aleph1.co.uk>
     10  *
     11  * This program is free software; you can redistribute it and/or modify
     12  * it under the terms of the GNU Lesser General Public License version 2.1 as
     13  * published by the Free Software Foundation.
     14  *
     15  *
     16  * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
     17  *
     18  * $Id: yportenv.h,v 1.11 2006/05/21 09:39:12 charles Exp $
     19  *
     20  */
     21 
     22 #ifndef __YPORTENV_H__
     23 #define __YPORTENV_H__
     24 
     25 #if defined CONFIG_YAFFS_WINCE
     26 
     27 #include "ywinceenv.h"
     28 
     29 #elif  defined __KERNEL__
     30 
     31 #include "moduleconfig.h"
     32 
     33 /* Linux kernel */
     34 #include <linux/config.h>
     35 #include <linux/kernel.h>
     36 #include <linux/version.h>
     37 #include <linux/mm.h>
     38 #include <linux/string.h>
     39 #include <linux/slab.h>
     40 #include <linux/vmalloc.h>
     41 
     42 #define YCHAR char
     43 #define YUCHAR unsigned char
     44 #define _Y(x)     x
     45 #define yaffs_strcpy(a,b)    strcpy(a,b)
     46 #define yaffs_strncpy(a,b,c) strncpy(a,b,c)
     47 #define yaffs_strlen(s)	     strlen(s)
     48 #define yaffs_sprintf	     sprintf
     49 #define yaffs_toupper(a)     toupper(a)
     50 
     51 #define Y_INLINE inline
     52 
     53 #define YAFFS_LOSTNFOUND_NAME		"lost+found"
     54 #define YAFFS_LOSTNFOUND_PREFIX		"obj"
     55 
     56 /* #define YPRINTF(x) printk x */
     57 #define YMALLOC(x) kmalloc(x,GFP_KERNEL)
     58 #define YFREE(x)   kfree(x)
     59 #define YMALLOC_ALT(x) vmalloc(x)
     60 #define YFREE_ALT(x)   vfree(x)
     61 #define YMALLOC_DMA(x) YMALLOC(x)
     62 
     63 // KR - added for use in scan so processes aren't blocked indefinitely.
     64 #define YYIELD() schedule()
     65 
     66 #define YAFFS_ROOT_MODE				0666
     67 #define YAFFS_LOSTNFOUND_MODE		0666
     68 
     69 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
     70 #define Y_CURRENT_TIME CURRENT_TIME.tv_sec
     71 #define Y_TIME_CONVERT(x) (x).tv_sec
     72 #else
     73 #define Y_CURRENT_TIME CURRENT_TIME
     74 #define Y_TIME_CONVERT(x) (x)
     75 #endif
     76 
     77 #define yaffs_SumCompare(x,y) ((x) == (y))
     78 #define yaffs_strcmp(a,b) strcmp(a,b)
     79 
     80 #define TENDSTR "\n"
     81 #define TSTR(x) KERN_WARNING x
     82 #define TOUT(p) printk p
     83 
     84 #elif defined CONFIG_YAFFS_DIRECT
     85 
     86 /* Direct interface */
     87 #include "ydirectenv.h"
     88 
     89 #elif defined CONFIG_YAFFS_UTIL
     90 
     91 /* Stuff for YAFFS utilities */
     92 
     93 #include "stdlib.h"
     94 #include "stdio.h"
     95 #include "string.h"
     96 
     97 #include "devextras.h"
     98 
     99 #define YMALLOC(x) malloc(x)
    100 #define YFREE(x)   free(x)
    101 #define YMALLOC_ALT(x) malloc(x)
    102 #define YFREE_ALT(x) free(x)
    103 
    104 #define YCHAR char
    105 #define YUCHAR unsigned char
    106 #define _Y(x)     x
    107 #define yaffs_strcpy(a,b)    strcpy(a,b)
    108 #define yaffs_strncpy(a,b,c) strncpy(a,b,c)
    109 #define yaffs_strlen(s)	     strlen(s)
    110 #define yaffs_sprintf	     sprintf
    111 #define yaffs_toupper(a)     toupper(a)
    112 
    113 #define Y_INLINE inline
    114 
    115 /* #define YINFO(s) YPRINTF(( __FILE__ " %d %s\n",__LINE__,s)) */
    116 /* #define YALERT(s) YINFO(s) */
    117 
    118 #define TENDSTR "\n"
    119 #define TSTR(x) x
    120 #define TOUT(p) printf p
    121 
    122 #define YAFFS_LOSTNFOUND_NAME		"lost+found"
    123 #define YAFFS_LOSTNFOUND_PREFIX		"obj"
    124 /* #define YPRINTF(x) printf x */
    125 
    126 #define YAFFS_ROOT_MODE				0666
    127 #define YAFFS_LOSTNFOUND_MODE		0666
    128 
    129 #define yaffs_SumCompare(x,y) ((x) == (y))
    130 #define yaffs_strcmp(a,b) strcmp(a,b)
    131 
    132 #else
    133 /* Should have specified a configuration type */
    134 #error Unknown configuration
    135 
    136 #endif
    137 
    138 extern unsigned yaffs_traceMask;
    139 
    140 #define YAFFS_TRACE_ERROR		0x00000001
    141 #define YAFFS_TRACE_OS			0x00000002
    142 #define YAFFS_TRACE_ALLOCATE		0x00000004
    143 #define YAFFS_TRACE_SCAN		0x00000008
    144 #define YAFFS_TRACE_BAD_BLOCKS		0x00000010
    145 #define YAFFS_TRACE_ERASE		0x00000020
    146 #define YAFFS_TRACE_GC			0x00000040
    147 #define YAFFS_TRACE_WRITE		0x00000080
    148 #define YAFFS_TRACE_TRACING		0x00000100
    149 #define YAFFS_TRACE_DELETION		0x00000200
    150 #define YAFFS_TRACE_BUFFERS		0x00000400
    151 #define YAFFS_TRACE_NANDACCESS		0x00000800
    152 #define YAFFS_TRACE_GC_DETAIL		0x00001000
    153 #define YAFFS_TRACE_SCAN_DEBUG		0x00002000
    154 #define YAFFS_TRACE_MTD			0x00004000
    155 #define YAFFS_TRACE_CHECKPOINT		0x00008000
    156 #define YAFFS_TRACE_ALWAYS		0x40000000
    157 #define YAFFS_TRACE_BUG			0x80000000
    158 
    159 #define T(mask,p) do{ if((mask) & (yaffs_traceMask | YAFFS_TRACE_ERROR)) TOUT(p);} while(0)
    160 
    161 #ifndef CONFIG_YAFFS_WINCE
    162 #define YBUG() T(YAFFS_TRACE_BUG,(TSTR("==>> yaffs bug: " __FILE__ " %d" TENDSTR),__LINE__))
    163 #endif
    164 
    165 #endif
    166