Newer
Older
ubixos-old / src / sys / ubixfsv2 / fsAbstract.h
#ifndef FSABSTRACT_H
#define FSABSTRACT_H

#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
#include <device.h>

class vfs_abstract {
 protected:
  vfs_abstract * prev;
  vfs_abstract * next;
  device_interface * device;
 public: 
  /* File I/O */
  virtual int     vfs_open(FILE *,int flags,...) = 0;
  virtual int     vfs_close(FILE *) = 0;
  virtual size_t  vfs_read(FILE *,void *,size_t,size_t) = 0;
  virtual size_t  vfs_write(FILE *,void *,size_t,size_t) = 0;

  /* Dir I/O */
  virtual int     vfs_opendir(DIR *,const char *) = 0x0;
  virtual int     vfs_closedir(DIR *) = 0x0;
  virtual int     vfs_mkdir(const char *,mode_t) = 0;
  virtual int     vfs_readdir(DIR *,struct dirent *) = 0;

  /* FS Functions */
  virtual int     vfs_init(void) = 0;
  virtual int     vfs_format(device_interface *) = 0;
  virtual int     vfs_stop(void) = 0;
  virtual int     vfs_sync(void) = 0;
  virtual void *  vfs_mknod(const char *, mode_t) = 0;

  /* Misc Functions */
  virtual int     vfs_unlink(const char *) = 0;
  virtual int     vfs_rename(const char *,const char *) = 0;

  virtual     ~vfs_abstract(void) { };
}; // vfs_FS

#endif // !FSABSTRACT_H