file.h

Go to the documentation of this file.
00001 /**************************************************************************************
00002  Copyright (c) 2002 The UbixOS Project
00003  All rights reserved.
00004 
00005 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
00006 
00007 Redistributions of source code must retain the above copyright notice, this list of conditions, the following disclaimer and the list of authors.
00008 Redistributions in binary form must reproduce the above copyright notice, this list of conditions, the following disclaimer and the list of authors
00009 in the documentation and/or other materials provided with the distribution. Neither the name of the UbixOS Project nor the names of its
00010 contributors may be used to endorse or promote products derived from this software without specific prior written permission.
00011 
00012 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
00013 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00014 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00015 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
00016 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
00017 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00018 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00019 
00020  $Id: file_8h-source.html 88 2016-01-12 00:11:29Z reddawg $
00021 
00022 **************************************************************************************/
00023 
00024 #ifndef _FILE_H
00025 #define _FILE_H
00026 
00027 #include <ubixos/types.h>
00028 #include <ubixfs/dirCache.h>
00029 #include <vfs/mount.h>
00030 
00031 #define SEEK_SET 0x0
00032 
00033 #define VBLKSHIFT       12
00034 #define VBLKSIZE        (1 << VBLKSHIFT)
00035 #define SBLOCKSIZE      8192
00036 #define      DEV_BSHIFT      9               /* log2(DEV_BSIZE) */
00037 #define      DEV_BSIZE       (1<<DEV_BSHIFT)
00038 
00039 struct dmadat {
00040   char blkbuf[VBLKSIZE];  /* filesystem blocks */
00041   char indbuf[VBLKSIZE];  /* indir blocks */
00042   char sbbuf[SBLOCKSIZE]; /* superblock */
00043   char secbuf[DEV_BSIZE]; /* for MBR/disklabel */
00044   };
00045 
00046 typedef struct fileDescriptorStruct {
00047   struct fileDescriptorStruct *prev;
00048   struct fileDescriptorStruct *next;
00049   struct vfs_mountPoint       *mp;
00050   uInt16                       status;
00051   uInt16                       mode;
00052   uInt32                       offset;
00053   uInt32                       size;
00054   uInt16                       length;
00055   uInt32                       start;
00056   char                         fileName[512];
00057   char                        *buffer;
00058   uInt32                       ino;
00059   struct cacheNode            *cacheNode;
00060   uInt32                       perms;
00061   struct dmadat               *dmadat;
00062   int                          dsk_meta;
00063   uInt32                       resid;
00064   } fileDescriptor;
00065 
00066 
00067 typedef struct userFileDescriptorStruct {
00068   struct fileDescriptorStruct *fd;
00069   uInt32                       fdSize;
00070   } userFileDescriptor;
00071 
00072 extern fileDescriptor *fdTable;
00073 
00074 fileDescriptor *fopen(const char *,const char *);
00075 int             fclose(fileDescriptor *);
00076 
00077 /* UBU */
00078 
00079 
00080 int unlink(const char *path);
00081 int feof(fileDescriptor *fd);
00082 int fgetc(fileDescriptor *fd);
00083 size_t fread(void *ptr,size_t size,size_t nmemb,fileDescriptor *fd);
00084 size_t fwrite(void *ptr,int size,int nmemb,fileDescriptor *fd);
00085 int fseek(fileDescriptor *,long,int);
00086 
00087 void sysFseek(userFileDescriptor *,long,int);
00088 
00089 //Good
00090 void sysChDir(const char *path);
00091 void chDir(const char *path);
00092 char *verifyDir(const char *path);
00093 
00094 #endif

Generated on Fri Dec 15 11:18:55 2006 for UbixOS V2 by  doxygen 1.4.7