Merge branch 'master' of ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2
authorCharles Manning <cdhmanning@gmail.com>
Wed, 3 Nov 2010 03:21:38 +0000 (16:21 +1300)
committerCharles Manning <cdhmanning@gmail.com>
Wed, 3 Nov 2010 03:21:38 +0000 (16:21 +1300)
1  2 
direct/yaffsfs.c
direct/yaffsfs.h

diff --combined direct/yaffsfs.c
index 5c583b9d39d44c9de2f16205c2756ce8c65a8148,64a949157697dc5f90a28888ba83d784a7b6bd46..b1871423e96de733ee74123f4f7f060389203bb4
@@@ -31,8 -31,8 +31,8 @@@
  #define YAFFSFS_RW_SIZE  (1<<YAFFSFS_RW_SHIFT)
  
  /* Some forward references */
 -static yaffs_obj_t *yaffsfs_FindObject(yaffs_obj_t *relativeDirectory, const YCHAR *path, int symDepth, int getEquiv);
 -static void yaffsfs_RemoveObjectCallback(yaffs_obj_t *obj);
 +static struct yaffs_obj *yaffsfs_FindObject(struct yaffs_obj *relativeDirectory, const YCHAR *path, int symDepth, int getEquiv);
 +static void yaffsfs_RemoveObjectCallback(struct yaffs_obj *obj);
  
  unsigned int yaffs_wr_attempts;
  
  
  typedef struct {
        int count;      /* Number of handles accessing this inode */
 -      yaffs_obj_t *iObj;
 +      struct yaffs_obj *iObj;
  } yaffsfs_Inode;
  
  typedef struct{
 -      __u8    reading:1;
 -      __u8    writing:1;
 -      __u8    append:1;
 -      __u8    shareRead:1;
 -      __u8    shareWrite:1;
 +      u8      reading:1;
 +      u8      writing:1;
 +      u8      append:1;
 +      u8      shareRead:1;
 +      u8      shareWrite:1;
        int     inodeId:12;     /* Index to corresponding yaffsfs_Inode */
        int     useCount:10;    /* Use count for this handle */
 -      __u32 position;         /* current position in file */
 +      u32 position;           /* current position in file */
  }yaffsfs_Handle;
  
  static yaffsfs_Inode yaffsfs_inode[YAFFSFS_N_HANDLES];
  static yaffsfs_Handle yaffsfs_handle[YAFFSFS_N_HANDLES];
  static int yaffsfs_handlesInitialised;
  
+ unsigned int yaffs_trace_mask;
+ int yaffs_set_trace(unsigned int tm) 
+ {
+       return yaffs_trace_mask=tm;
+ }
+ unsigned int yaffs_get_trace(void)
+ {
+       return yaffs_trace_mask;
+ }
  /*
   * yaffsfs_InitHandle
   * Inilitalise handle management on start-up.
@@@ -102,7 -114,7 +114,7 @@@ yaffsfs_Inode *yaffsfs_GetInodePointer(
        return NULL;
  }
  
 -yaffs_obj_t *yaffsfs_GetHandleObject(int handle)
 +struct yaffs_obj *yaffsfs_GetHandleObject(int handle)
  {
        yaffsfs_Inode *in = yaffsfs_GetInodePointer(handle);
  
   * Find the inode entry for an object, if it exists.
   */
  
 -static int yaffsfs_FindInodeIdForObject(yaffs_obj_t *obj)
 +static int yaffsfs_FindInodeIdForObject(struct yaffs_obj *obj)
  {
        int i;
        int ret = -1;
   * yaffsfs_GetInodeIdForObject
   * Grab an inode entry when opening a new inode.
   */
 -static int yaffsfs_GetInodeIdForObject(yaffs_obj_t *obj)
 +static int yaffsfs_GetInodeIdForObject(struct yaffs_obj *obj)
  {
        int i;
        int ret;
  }
  
  
 -static int yaffsfs_CountHandles(yaffs_obj_t *obj)
 +static int yaffsfs_CountHandles(struct yaffs_obj *obj)
  {
        int i = yaffsfs_FindInodeIdForObject(obj);
  
  
  static void yaffsfs_ReleaseInode(yaffsfs_Inode *in)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
        
        obj = in->iObj;
  
@@@ -290,7 -302,7 +302,7 @@@ int yaffsfs_IsPathDivider(YCHAR ch
  
  
  
 -YLIST_HEAD(yaffsfs_deviceList);
 +LIST_HEAD(yaffsfs_deviceList);
  
  /*
   * yaffsfs_FindDevice
   * Curveballs: Should match paths that end in '/' too
   * Curveball2 Might have "/x/ and "/x/y". Need to return the longest match
   */
 -static yaffs_dev_t *yaffsfs_FindDevice(const YCHAR *path, YCHAR **restOfPath)
 +static struct yaffs_dev *yaffsfs_FindDevice(const YCHAR *path, YCHAR **restOfPath)
  {
 -      struct ylist_head *cfg;
 +      struct list_head *cfg;
        const YCHAR *leftOver;
        const YCHAR *p;
 -      yaffs_dev_t *retval = NULL;
 -      yaffs_dev_t *dev = NULL;
 +      struct yaffs_dev *retval = NULL;
 +      struct yaffs_dev *dev = NULL;
        int thisMatchLength;
        int longestMatch = -1;
        int matching;
         * 1) Actually matches a prefix (ie /a amd /abc will not match
         * 2) Matches the longest.
         */
 -      ylist_for_each(cfg, &yaffsfs_deviceList){
 -              dev = ylist_entry(cfg, yaffs_dev_t, dev_list);
 +      list_for_each(cfg, &yaffsfs_deviceList){
 +              dev = list_entry(cfg, struct yaffs_dev, dev_list);
                leftOver = path;
                p = dev->param.name;
                thisMatchLength = 0;
  }
  
  #if 0
 -static yaffs_dev_t *yaffsfs_FindDevice(const YCHAR *path, YCHAR **restOfPath)
 +static struct yaffs_dev *yaffsfs_FindDevice(const YCHAR *path, YCHAR **restOfPath)
  {
        yaffsfs_DeviceConfiguration *cfg = yaffsfs_configurationList;
        const YCHAR *leftOver;
        const YCHAR *p;
 -      yaffs_dev_t *retval = NULL;
 +      struct yaffs_dev *retval = NULL;
        int thisMatchLength;
        int longestMatch = -1;
  
  }
  #endif
  
 -static yaffs_obj_t *yaffsfs_FindRoot(const YCHAR *path, YCHAR **restOfPath)
 +static struct yaffs_obj *yaffsfs_FindRoot(const YCHAR *path, YCHAR **restOfPath)
  {
  
 -      yaffs_dev_t *dev;
 +      struct yaffs_dev *dev;
  
        dev= yaffsfs_FindDevice(path,restOfPath);
        if(dev && dev->is_mounted){
        return NULL;
  }
  
 -static yaffs_obj_t *yaffsfs_FollowLink(yaffs_obj_t *obj,int symDepth)
 +static struct yaffs_obj *yaffsfs_FollowLink(struct yaffs_obj *obj,int symDepth)
  {
  
        if(obj)
   *
   * eg. "/data/xx/ff" --> puts name="ff" and returns the directory "/data/xx"
   */
 -static yaffs_obj_t *yaffsfs_DoFindDirectory(yaffs_obj_t *startDir,
 +static struct yaffs_obj *yaffsfs_DoFindDirectory(struct yaffs_obj *startDir,
                                const YCHAR *path, YCHAR **name, int symDepth)
  {
 -      yaffs_obj_t *dir;
 +      struct yaffs_obj *dir;
        YCHAR *restOfPath;
        YCHAR str[YAFFS_MAX_NAME_LENGTH+1];
        int i;
        return NULL;
  }
  
 -static yaffs_obj_t *yaffsfs_FindDirectory(yaffs_obj_t *relativeDirectory,
 +static struct yaffs_obj *yaffsfs_FindDirectory(struct yaffs_obj *relativeDirectory,
                                        const YCHAR *path,YCHAR **name,int symDepth)
  {
        return yaffsfs_DoFindDirectory(relativeDirectory,path,name,symDepth);
  /*
   * yaffsfs_FindObject turns a path for an existing object into the object
   */
 -static yaffs_obj_t *yaffsfs_FindObject(yaffs_obj_t *relativeDirectory, const YCHAR *path,int symDepth, int getEquiv)
 +static struct yaffs_obj *yaffsfs_FindObject(struct yaffs_obj *relativeDirectory, const YCHAR *path,int symDepth, int getEquiv)
  {
 -      yaffs_obj_t *dir;
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *dir;
 +      struct yaffs_obj *obj;
        YCHAR *name;
  
        dir = yaffsfs_FindDirectory(relativeDirectory,path,&name,symDepth);
@@@ -575,8 -587,8 +587,8 @@@ int yaffs_dup(int fd
  
  int yaffs_open_sharing(const YCHAR *path, int oflag, int mode, int sharing)
  {
 -      yaffs_obj_t *obj = NULL;
 -      yaffs_obj_t *dir = NULL;
 +      struct yaffs_obj *obj = NULL;
 +      struct yaffs_obj *dir = NULL;
        YCHAR *name;
        int handle = -1;
        yaffsfs_Handle *yh = NULL;
        int symDepth = 0;
        int errorReported = 0;
        int rwflags = oflag & ( O_RDWR | O_RDONLY | O_WRONLY);
 -      __u8 shareRead = (sharing & YAFFS_SHARE_READ) ?  1 : 0;
 -      __u8 shareWrite = (sharing & YAFFS_SHARE_WRITE) ? 1 : 0;
 -      __u8 sharedReadAllowed;
 -      __u8 sharedWriteAllowed;
 -      __u8 alreadyReading;
 -      __u8 alreadyWriting;
 -      __u8 readRequested;
 -      __u8 writeRequested;
 +      u8 shareRead = (sharing & YAFFS_SHARE_READ) ?  1 : 0;
 +      u8 shareWrite = (sharing & YAFFS_SHARE_WRITE) ? 1 : 0;
 +      u8 sharedReadAllowed;
 +      u8 sharedWriteAllowed;
 +      u8 alreadyReading;
 +      u8 alreadyWriting;
 +      u8 readRequested;
 +      u8 writeRequested;
  
        /* O_EXCL only has meaning if O_CREAT is specified */
        if(!(oflag & O_CREAT))
@@@ -817,14 -829,14 +829,14 @@@ int yaffs_close(int fd
  int yaffsfs_do_read(int fd, void *vbuf, unsigned int nbyte, int isPread, int offset)
  {
        yaffsfs_Handle *h = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int pos = 0;
        int startPos = 0;
        int nRead = 0;
        int nToRead = 0;
        int totalRead = 0;
        unsigned int maxRead;
 -      __u8 *buf = (__u8 *)vbuf;
 +      u8 *buf = (u8 *)vbuf;
  
        yaffsfs_Lock();
        h = yaffsfs_GetHandlePointer(fd);
@@@ -913,14 -925,14 +925,14 @@@ int yaffs_pread(int fd, void *buf, unsi
  int yaffsfs_do_write(int fd, const void *vbuf, unsigned int nbyte, int isPwrite, int offset)
  {
        yaffsfs_Handle *h = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int pos = 0;
        int startPos = 0;
        int nWritten = 0;
        int totalWritten = 0;
        int write_trhrough = 0;
        int nToWrite = 0;
 -      const __u8 *buf = (const __u8 *)vbuf;
 +      const u8 *buf = (const u8 *)vbuf;
  
        yaffsfs_Lock();
        h = yaffsfs_GetHandlePointer(fd);
@@@ -1000,7 -1012,7 +1012,7 @@@ int yaffs_pwrite(int fd, const void *bu
  
  int yaffs_truncate(const YCHAR *path,off_t new_size)
  {
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int result = YAFFS_FAIL;
  
        yaffsfs_Lock();
  int yaffs_ftruncate(int fd, off_t new_size)
  {
        yaffsfs_Handle *h = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int result = 0;
  
        yaffsfs_Lock();
  off_t yaffs_lseek(int fd, off_t offset, int whence)
  {
        yaffsfs_Handle *h = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int pos = -1;
        int fSize = -1;
  
  
  int yaffsfs_DoUnlink(const YCHAR *path,int isDirectory)
  {
 -      yaffs_obj_t *dir = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *dir = NULL;
 +      struct yaffs_obj *obj = NULL;
        YCHAR *name;
        int result = YAFFS_FAIL;
  
@@@ -1134,9 -1146,9 +1146,9 @@@ int yaffs_unlink(const YCHAR *path
  
  int yaffs_rename(const YCHAR *oldPath, const YCHAR *newPath)
  {
 -      yaffs_obj_t *olddir = NULL;
 -      yaffs_obj_t *newdir = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *olddir = NULL;
 +      struct yaffs_obj *newdir = NULL;
 +      struct yaffs_obj *obj = NULL;
        YCHAR *oldname;
        YCHAR *newname;
        int result= YAFFS_FAIL;
                 * Do this by tracing from the new directory back to the root, checking for obj
                 */
  
 -              yaffs_obj_t *xx = newdir;
 +              struct yaffs_obj *xx = newdir;
  
                while( rename_allowed && xx){
                        if(xx == obj)
  }
  
  
 -static int yaffsfs_DoStat(yaffs_obj_t *obj,struct yaffs_stat *buf)
 +static int yaffsfs_DoStat(struct yaffs_obj *obj,struct yaffs_stat *buf)
  {
        int retVal = -1;
  
  
  static int yaffsfs_DoStatOrLStat(const YCHAR *path, struct yaffs_stat *buf,int doLStat)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1266,7 -1278,7 +1278,7 @@@ int yaffs_lstat(const YCHAR *path, stru
  
  int yaffs_fstat(int fd, struct yaffs_stat *buf)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  static int yaffs_do_setxattr(const YCHAR *path, const char *name, const void *data, int size, int flags, int follow)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1331,7 -1343,7 +1343,7 @@@ int yaffs_lsetxattr(const YCHAR *path, 
  
  int yaffs_fsetxattr(int fd, const char *name, const void *data, int size, int flags)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  static int yaffs_do_getxattr(const YCHAR *path, const char *name, void *data, int size, int follow)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1395,7 -1407,7 +1407,7 @@@ int yaffs_lgetxattr(const YCHAR *path, 
  
  int yaffs_fgetxattr(int fd, const char *name, void *data, int size)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  static int yaffs_do_listxattr(const YCHAR *path, char *data, int size, int follow)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1458,7 -1470,7 +1470,7 @@@ int yaffs_llistxattr(const YCHAR *path
  
  int yaffs_flistxattr(int fd, char *data, int size)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  static int yaffs_do_removexattr(const YCHAR *path, const char *name, int follow)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1521,7 -1533,7 +1533,7 @@@ int yaffs_lremovexattr(const YCHAR *pat
  
  int yaffs_fremovexattr(int fd, const char *name)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  #ifdef CONFIG_YAFFS_WINCE
  int yaffs_get_wince_times(int fd, unsigned *wctime, unsigned *watime, unsigned *wmtime)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
@@@ -1586,7 -1598,7 +1598,7 @@@ int yaffs_set_wince_times(int fd
                                                  const unsigned *watime, 
                                                    const unsigned *wmtime)
  {
 -        yaffs_obj_t *obj;
 +        struct yaffs_obj *obj;
          int result;
          int retVal = -1;
  
  #endif
  
  
 -static int yaffsfs_DoChMod(yaffs_obj_t *obj,mode_t mode)
 +static int yaffsfs_DoChMod(struct yaffs_obj *obj,mode_t mode)
  {
        int result = -1;
  
  
  int yaffs_access(const YCHAR *path, int amode)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retval = 0;
  
  
  int yaffs_chmod(const YCHAR *path, mode_t mode)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  int yaffs_fchmod(int fd, mode_t mode)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        int retVal = -1;
  
  
  int yaffs_mkdir(const YCHAR *path, mode_t mode)
  {
 -      yaffs_obj_t *parent = NULL;
 -      yaffs_obj_t *dir = NULL;
 +      struct yaffs_obj *parent = NULL;
 +      struct yaffs_obj *dir = NULL;
        YCHAR *name;
        YCHAR *use_path = NULL;
        int path_length = 0;
  
  void * yaffs_getdev(const YCHAR *path)
  {
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
        dev = yaffsfs_FindDevice(path,&dummy);
        return (void *)dev;
@@@ -1805,7 -1817,7 +1817,7 @@@ int yaffs_mount2(const YCHAR *path,int 
  {
        int retVal=-1;
        int result=YAFFS_FAIL;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        T(YAFFS_TRACE_ALWAYS,(TSTR("yaffs: Mounting %s" TENDSTR),path));
@@@ -1845,7 -1857,7 +1857,7 @@@ int yaffs_mount(const YCHAR *path
  int yaffs_sync(const YCHAR *path)
  {
          int retVal=-1;
 -        yaffs_dev_t *dev=NULL;
 +        struct yaffs_dev *dev=NULL;
          YCHAR *dummy;
          
          yaffsfs_Lock();
  int yaffs_remount(const YCHAR *path, int force, int read_only)
  {
          int retVal=-1;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        yaffsfs_Lock();
  int yaffs_unmount2(const YCHAR *path, int force)
  {
          int retVal=-1;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        yaffsfs_Lock();
@@@ -1961,7 -1973,7 +1973,7 @@@ int yaffs_unmount(const YCHAR *path
  loff_t yaffs_freespace(const YCHAR *path)
  {
        loff_t retVal=-1;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        yaffsfs_Lock();
  loff_t yaffs_totalspace(const YCHAR *path)
  {
        loff_t retVal=-1;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        yaffsfs_Lock();
  int yaffs_inodecount(const YCHAR *path)
  {
        loff_t retVal= -1;
 -      yaffs_dev_t *dev=NULL;
 +      struct yaffs_dev *dev=NULL;
        YCHAR *dummy;
  
        yaffsfs_Lock();
  }
  
  
 -void yaffs_add_device(yaffs_dev_t *dev)
 +void yaffs_add_device(struct yaffs_dev *dev)
  {
        dev->is_mounted = 0;
        dev->param.remove_obj_fn = yaffsfs_RemoveObjectCallback;
  
        if(!dev->dev_list.next)
 -              YINIT_LIST_HEAD(&dev->dev_list);
 +              INIT_LIST_HEAD(&dev->dev_list);
  
 -      ylist_add(&dev->dev_list,&yaffsfs_deviceList);
 +      list_add(&dev->dev_list,&yaffsfs_deviceList);
  }
  
 -void yaffs_remove_device(yaffs_dev_t *dev)
 +void yaffs_remove_device(struct yaffs_dev *dev)
  {
 -      ylist_del_init(&dev->dev_list);
 +      list_del_init(&dev->dev_list);
  }
  
  
  
  typedef struct
  {
 -      __u32 magic;
 +      u32 magic;
        yaffs_dirent de;                /* directory entry being used by this dsc */
        YCHAR name[NAME_MAX+1];         /* name of directory being searched */
 -        yaffs_obj_t *dirObj;           /* ptr to directory being searched */
 -        yaffs_obj_t *nextReturn;       /* obj to be returned by next readddir */
 +        struct yaffs_obj *dirObj;           /* ptr to directory being searched */
 +        struct yaffs_obj *nextReturn;       /* obj to be returned by next readddir */
          int offset;
 -        struct ylist_head others;       
 +        struct list_head others;       
  } yaffsfs_DirectorySearchContext;
  
  
  
 -static struct ylist_head search_contexts;
 +static struct list_head search_contexts;
  
  
  static void yaffsfs_SetDirRewound(yaffsfs_DirectorySearchContext *dsc)
  
             dsc->offset = 0;
  
 -           if( ylist_empty(&dsc->dirObj->variant.dir_variant.children))
 +           if( list_empty(&dsc->dirObj->variant.dir_variant.children))
                  dsc->nextReturn = NULL;
             else
 -                dsc->nextReturn = ylist_entry(dsc->dirObj->variant.dir_variant.children.next,
 -                                                yaffs_obj_t,siblings);
 +                dsc->nextReturn = list_entry(dsc->dirObj->variant.dir_variant.children.next,
 +                                                struct yaffs_obj,siblings);
          } else {
                /* Hey someone isn't playing nice! */
        }
@@@ -2088,25 -2100,25 +2100,25 @@@ static void yaffsfs_DirAdvance(yaffsfs_
             dsc->dirObj->variant_type == YAFFS_OBJECT_TYPE_DIRECTORY){
  
             if( dsc->nextReturn == NULL ||
 -               ylist_empty(&dsc->dirObj->variant.dir_variant.children))
 +               list_empty(&dsc->dirObj->variant.dir_variant.children))
                  dsc->nextReturn = NULL;
             else {
 -                   struct ylist_head *next = dsc->nextReturn->siblings.next;
 +                   struct list_head *next = dsc->nextReturn->siblings.next;
  
                     if( next == &dsc->dirObj->variant.dir_variant.children)
                          dsc->nextReturn = NULL; /* end of list */
                     else
 -                        dsc->nextReturn = ylist_entry(next,yaffs_obj_t,siblings);
 +                        dsc->nextReturn = list_entry(next,struct yaffs_obj,siblings);
             }
          } else {
                  /* Hey someone isn't playing nice! */
        }
  }
  
 -static void yaffsfs_RemoveObjectCallback(yaffs_obj_t *obj)
 +static void yaffsfs_RemoveObjectCallback(struct yaffs_obj *obj)
  {
  
 -        struct ylist_head *i;
 +        struct list_head *i;
          yaffsfs_DirectorySearchContext *dsc;
  
          /* if search contexts not initilised then skip */
           * If any are the one being removed, then advance the dsc to
           * the next one to prevent a hanging ptr.
           */
 -         ylist_for_each(i, &search_contexts) {
 +         list_for_each(i, &search_contexts) {
                  if (i) {
 -                        dsc = ylist_entry(i, yaffsfs_DirectorySearchContext,others);
 +                        dsc = list_entry(i, yaffsfs_DirectorySearchContext,others);
                          if(dsc->nextReturn == obj)
                                  yaffsfs_DirAdvance(dsc);
                  }
  yaffs_DIR *yaffs_opendir(const YCHAR *dirname)
  {
        yaffs_DIR *dir = NULL;
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        yaffsfs_DirectorySearchContext *dsc = NULL;
  
        yaffsfs_Lock();
                          dsc->magic = YAFFS_MAGIC;
                          dsc->dirObj = obj;
                          yaffs_strncpy(dsc->name,dirname,NAME_MAX);
 -                        YINIT_LIST_HEAD(&dsc->others);
 +                        INIT_LIST_HEAD(&dsc->others);
  
                          if(!search_contexts.next)
 -                                YINIT_LIST_HEAD(&search_contexts);
 +                                INIT_LIST_HEAD(&search_contexts);
  
 -                        ylist_add(&dsc->others,&search_contexts);       
 +                        list_add(&dsc->others,&search_contexts);       
                          yaffsfs_SetDirRewound(dsc);
                }
  
@@@ -2215,7 -2227,7 +2227,7 @@@ int yaffs_closedir(yaffs_DIR *dirp
  
          yaffsfs_Lock();
          dsc->magic = 0;
 -        ylist_del(&dsc->others); /* unhook from list */
 +        list_del(&dsc->others); /* unhook from list */
          YFREE(dsc);
          yaffsfs_Unlock();
          return 0;
  
  int yaffs_symlink(const YCHAR *oldpath, const YCHAR *newpath)
  {
 -      yaffs_obj_t *parent = NULL;
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *parent = NULL;
 +      struct yaffs_obj *obj;
        YCHAR *name;
        int retVal= -1;
        int mode = 0; /* ignore for now */
  
  int yaffs_readlink(const YCHAR *path, YCHAR *buf, int bufsiz)
  {
 -      yaffs_obj_t *obj = NULL;
 +      struct yaffs_obj *obj = NULL;
        int retVal;
  
  
  int yaffs_link(const YCHAR *oldpath, const YCHAR *newpath)
  {
        /* Creates a link called newpath to existing oldpath */
 -      yaffs_obj_t *obj = NULL;
 -      yaffs_obj_t *target = NULL;
 +      struct yaffs_obj *obj = NULL;
 +      struct yaffs_obj *target = NULL;
        int retVal = 0;
        int new_nameLength = 0;
  
                yaffsfs_SetError(-EEXIST);
                retVal = -1;
        } else {
 -              yaffs_obj_t *newdir = NULL;
 -              yaffs_obj_t *link = NULL;
 +              struct yaffs_obj *newdir = NULL;
 +              struct yaffs_obj *link = NULL;
  
                YCHAR *newname;
  
@@@ -2359,7 -2371,7 +2371,7 @@@ int yaffs_mknod(const YCHAR *pathname, 
   */
  int yaffs_n_handles(const YCHAR *path)
  {
 -      yaffs_obj_t *obj;
 +      struct yaffs_obj *obj;
  
        obj = yaffsfs_FindObject(NULL,path,0,1);
  
@@@ -2376,10 -2388,10 +2388,10 @@@ int yaffs_dump_dev(const YCHAR *path
  #if 0
        YCHAR *rest;
  
 -      yaffs_obj_t *obj = yaffsfs_FindRoot(path,&rest);
 +      struct yaffs_obj *obj = yaffsfs_FindRoot(path,&rest);
  
        if(obj){
 -              yaffs_dev_t *dev = obj->my_dev;
 +              struct yaffs_dev *dev = obj->my_dev;
  
                printf("\n"
                           "n_page_writes.......... %d\n"
diff --combined direct/yaffsfs.h
index d8a4d0f2df25b5e8afb59fd431a4f476d765e379,a269ed2b41cf28a3cb0e28589c4ade6936ee271a..50b5cbcd8eac356c859043a48bf76e45007e76d2
@@@ -166,8 -166,8 +166,8 @@@ int yaffs_n_handles(const YCHAR *path)
  int yaffs_open_sharing(const YCHAR *path, int oflag, int mode, int shareMode) ;
  
  
 -struct yaffs_dev_s;
 -void yaffs_add_device(struct yaffs_dev_s *dev);
 +struct yaffs_dev;
 +void yaffs_add_device(struct yaffs_dev *dev);
  
  int yaffs_start_up(void);
  int yaffsfs_GetLastError(void);
@@@ -178,7 -178,9 +178,9 @@@ int yaffs_get_error(void)
  void * yaffs_getdev(const YCHAR *path);
  int yaffs_dump_dev(const YCHAR *path);
  
+ /* Trace control functions */
+ int yaffs_set_trace(unsigned int tm);
+ unsigned int yaffs_get_trace(void);
  #endif