StuBS
VFS Class Reference

Virtual File System - POSIX-ähnliche Dateisystem-Schnittstelle. More...

#include <vfs.h>

Inheritance diagram for VFS:

Static Public Member Functions

static int mount (const char *fstype, BlockDevice *bdev, const void *data)
 Siehe man 2 mount. More...
 
static int umount ()
 Siehe man 2 umount. More...
 
static void sync ()
 Schreibt Änderungen im Puffer auf die Festplatte. Siehe man 2 sync. More...
 
static int open (const char *pathname, int flags)
 Öffnet und erstellt (je nach flags) Dateien. Siehe man 2 open. More...
 
static int close (int fd)
 Schließt einen Dateideskriptor. Siehe man 2 close. More...
 
static ssize_t read (int fd, void *buf, size_t count)
 Lesen von einem Dateideskriptor fd in Speicher buf der Länge count. Siehe man 2 read.
 
static ssize_t write (int fd, const void *buf, size_t count)
 Schreiben von Daten aus Speicher buf der Länge count an Dateideskriptor fd. Siehe man 2 write.
 
static off_t lseek (int fd, off_t offset, int whence)
 Ändert den aktuellen offset für Dateideskriptor fd. Siehe man 2 lseek. More...
 
static int truncate (const char *path, off_t length)
 Setzt die Länge der Datei an path auf length. Siehe man 2 truncate.
 
static int ftruncate (int fd, off_t length)
 Kürzt Datei für Dateideskriptor fd auf Länge length. Siehe man 2 ftruncate.
 
static int link (const char *oldpath, const char *newpath)
 Neuer Name newpath für Datei oldpath. Siehe man 2 link. More...
 
static int symlink (const char *target, const char *linkpath)
 Erstellt einen symbolischen Verweis mit Inhalt target. Siehe man 2 symlink.
 
static int unlink (const char *pathname)
 Löscht Namen und bei keinem verbleibenden Verweis mehr die Datei pathname. Siehe man 2 unlink.
 
static int rmdir (const char *pathname)
 Löscht Verzeichnis pathname. Siehe man 2 rmdir.
 
static int rename (const char *oldpath, const char *newpath)
 Verschieben von Dateien/Verzeichnissen. Siehe man 2 rename.
 
static int stat (const char *pathname, struct stat *statbuf)
 Liefert Dateistatus für pathname. Siehe man 2 stat. More...
 
static int lstat (const char *pathname, struct stat *statbuf)
 Liefert Dateistatus für pathname. Siehe man 2 lstat. More...
 
static int fstat (int fd, struct stat *statbuf)
 Liefert Dateistatus für Dateideskriptor fd. Siehe man 2 fstat. More...
 
static ssize_t readlink (const char *pathname, char *buf, size_t bufsiz)
 Liest den Inhalt eines symbolischen Verweises. Siehe man 2 readlink. More...
 
static int getdents (int fd, Dirent *dirp, int count)
 Liefert Verzeichniseinträge. Siehe man 2 getdents. More...
 
static DIR * opendir (const char *name)
 Öffnet ein Verzeichnis name. Siehe man 3 opendir.
 
static struct Dirent * readdir (DIR *dirp)
 Liest einen Verzeichniseintrag. Siehe man 3 readdir.
 
static void rewinddir (DIR *dirp)
 Setzt die Position im Verzeichnis zurück. Siehe man 3 rewinddir.
 
static int closedir (DIR *dirp)
 Schließt ein Verzeichnis. Siehe man 3 closedir.
 
static int mkdir (const char *pathname)
 Erstellt Verzeichnis pathname. Siehe man 2 mkdir. More...
 
static int chdir (const char *path)
 Wechselt in Verzeichnis path. Siehe man 2 chdir.
 
static int fchdir (int fd)
 Wechselt in Verzeichnis fd. Siehe man 2 fchdir.
 

Detailed Description

Virtual File System - POSIX-ähnliche Dateisystem-Schnittstelle.

Alle Funktionen geben im Fehlerfall eine negative errno zurück.

Limitierungen: -Zeitstempel werden nie aktualisiert -Zugriffsrechte werden nie überprüft -setzt die UID und GID von neu erstellte Dateien auf 0 (root) -setzt die Zeitstempel von neu erstellen Dateien auf 0 (1.1.1970) -Dateideskriptoren und das aktuelle Arbeitsverzeichnis sind global

Member Function Documentation

◆ close()

int VFS::close ( int  fd)
static

Schließt einen Dateideskriptor. Siehe man 2 close.

Parameters
fdFiledeskriptor zum Schließen.

Es gelten die "NOTES" aus der manpage.

◆ fstat()

int VFS::fstat ( int  fd,
struct stat statbuf 
)
static

Liefert Dateistatus für Dateideskriptor fd. Siehe man 2 fstat.

Es gelten dieselben Limitierungen wie für stat.

◆ getdents()

int VFS::getdents ( int  fd,
Dirent *  dirp,
int  count 
)
static

Liefert Verzeichniseinträge. Siehe man 2 getdents.

Wird verwendet um readdir zu implementieren. Das Dirent struct ähnelt dem linux_dirent64 struct aus der manpage, allerdings sind d_ino und d_off nicht unbedingt 64-bit Werte. Limitierungen: -d_off ist immer 0

◆ link()

int VFS::link ( const char *  oldpath,
const char *  newpath 
)
static

Neuer Name newpath für Datei oldpath. Siehe man 2 link.

Falls oldpath ein Symlink ist wird ein Hardlink auf den Symlink erstellt, nicht auf die Datei auf die der Symlink zeigt. (Selbes Verhalten wie Linux, siehe NOTES in der Manpage.)

◆ lseek()

off_t VFS::lseek ( int  fd,
off_t  offset,
int  whence 
)
static

Ändert den aktuellen offset für Dateideskriptor fd. Siehe man 2 lseek.

Unterstützt kein SEEK_DATA oder SEEK_HOLE. (Mit lseek(fd, 0, SEEK_END) lässt sich die Größe einer Datei herausfinden.)

◆ lstat()

int VFS::lstat ( const char *  pathname,
struct stat statbuf 
)
static

Liefert Dateistatus für pathname. Siehe man 2 lstat.

Es gelten dieselben Limitierungen wie für stat. Falls pathname ein Symlink ist liefert lstat im Gegensatz zu stat Informationen über den Symlink, nicht über die Datei auf die der Symlink zeigt.

◆ mkdir()

int VFS::mkdir ( const char *  pathname)
static

Erstellt Verzeichnis pathname. Siehe man 2 mkdir.

Limitierungen: -pathname darf nicht mit einem '/' enden.

◆ mount()

int VFS::mount ( const char *  fstype,
BlockDevice *  bdev,
const void *  data 
)
static

Siehe man 2 mount.

Limitierungen: -target (siehe manpage) ist immer "/". -es werden keine Flags unterstützt -an Stelle des source Strings wird ein BlockDevice übergeben

◆ open()

int VFS::open ( const char *  pathname,
int  flags 
)
static

Öffnet und erstellt (je nach flags) Dateien. Siehe man 2 open.

Limitierungen: -mode ist immer 0777 -unterstützte Flags sind: O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL

◆ readlink()

ssize_t VFS::readlink ( const char *  pathname,
char *  buf,
size_t  bufsiz 
)
static

Liest den Inhalt eines symbolischen Verweises. Siehe man 2 readlink.

Achtung: Der Buffer wird nicht null-terminiert.

◆ stat()

int VFS::stat ( const char *  pathname,
struct stat *  statbuf 
)
static

Liefert Dateistatus für pathname. Siehe man 2 stat.

Limitierungen: -st_dev und st_rdev sind immer 0

◆ sync()

void VFS::sync ( )
static

Schreibt Änderungen im Puffer auf die Festplatte. Siehe man 2 sync.

Zurzeit nur nötig, um Änderungen an Inodes zu schreiben.

◆ umount()

int VFS::umount ( )
static

Siehe man 2 umount.

Gibt -EBUSY zurück, falls das Dateisystem noch verwendet wird (offene Dateien). Limitierungen: -target (siehe manpage) ist immer "/".


The documentation for this class was generated from the following files: