StuBS
GuardedVFS Class Reference

Guarded interface to the VFS used by user applications. More...

#include <syscall/guarded_vfs.h>

Inheritance diagram for GuardedVFS:
[legend]
Collaboration diagram for GuardedVFS:
[legend]

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. More...
 
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. More...
 
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. More...
 
static int ftruncate (int fd, off_t length)
 Kürzt Datei für Dateideskriptor fd auf Länge length. Siehe man 2 ftruncate. More...
 
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. More...
 
static int unlink (const char *pathname)
 Löscht Namen und bei keinem verbleibenden Verweis mehr die Datei pathname. Siehe man 2 unlink. More...
 
static int rmdir (const char *pathname)
 Löscht Verzeichnis pathname. Siehe man 2 rmdir. More...
 
static int rename (const char *oldpath, const char *newpath)
 Verschieben von Dateien/Verzeichnissen. Siehe man 2 rename. More...
 
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 DIRopendir (const char *name)
 Öffnet ein Verzeichnis name. Siehe man 3 opendir. More...
 
static struct Direntreaddir (DIR *dirp)
 Liest einen Verzeichniseintrag. Siehe man 3 readdir. More...
 
static void rewinddir (DIR *dirp)
 Setzt die Position im Verzeichnis zurück. Siehe man 3 rewinddir. More...
 
static int closedir (DIR *dirp)
 Schließt ein Verzeichnis. Siehe man 3 closedir. More...
 
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. More...
 
static int fchdir (int fd)
 Wechselt in Verzeichnis fd. Siehe man 2 fchdir. More...
 
- Static Public Member Functions inherited from VFS
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 DIRopendir (const char *name)
 Öffnet ein Verzeichnis name. Siehe man 3 opendir.
 
static struct Direntreaddir (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

Guarded interface to the VFS used by user applications.

Implements the system call interface for class VFS. All methods provided by this class are wrappers for the respective method from the base class, which provide additional synchronization by using the class Guarded.

Member Function Documentation

◆ mount()

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

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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ umount()

static int GuardedVFS::umount ( )
inlinestatic

Siehe man 2 umount.

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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ sync()

static void GuardedVFS::sync ( )
inlinestatic

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

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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ open()

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

Ö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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ close()

static int GuardedVFS::close ( int  fd)
inlinestatic

Schließt einen Dateideskriptor. Siehe man 2 close.

Parameters
fdFiledeskriptor zum Schließen.

Es gelten die "NOTES" aus der manpage.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ read()

static ssize_t GuardedVFS::read ( int  fd,
void *  buf,
size_t  count 
)
inlinestatic

Lesen von einem Dateideskriptor fd in Speicher buf der Länge count. Siehe man 2 read.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ write()

static ssize_t GuardedVFS::write ( int  fd,
const void *  buf,
size_t  count 
)
inlinestatic

Schreiben von Daten aus Speicher buf der Länge count an Dateideskriptor fd. Siehe man 2 write.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ lseek()

static off_t GuardedVFS::lseek ( int  fd,
off_t  offset,
int  whence 
)
inlinestatic

Ä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.)

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ truncate()

static int GuardedVFS::truncate ( const char *  path,
off_t  length 
)
inlinestatic

Setzt die Länge der Datei an path auf length. Siehe man 2 truncate.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ ftruncate()

static int GuardedVFS::ftruncate ( int  fd,
off_t  length 
)
inlinestatic

Kürzt Datei für Dateideskriptor fd auf Länge length. Siehe man 2 ftruncate.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ link()

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

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.)

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ symlink()

static int GuardedVFS::symlink ( const char *  target,
const char *  linkpath 
)
inlinestatic

Erstellt einen symbolischen Verweis mit Inhalt target. Siehe man 2 symlink.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ unlink()

static int GuardedVFS::unlink ( const char *  pathname)
inlinestatic

Löscht Namen und bei keinem verbleibenden Verweis mehr die Datei pathname. Siehe man 2 unlink.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ rmdir()

static int GuardedVFS::rmdir ( const char *  pathname)
inlinestatic

Löscht Verzeichnis pathname. Siehe man 2 rmdir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ rename()

static int GuardedVFS::rename ( const char *  oldpath,
const char *  newpath 
)
inlinestatic

Verschieben von Dateien/Verzeichnissen. Siehe man 2 rename.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ stat()

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

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

Limitierungen: -st_dev und st_rdev sind immer 0

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ lstat()

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

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.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ fstat()

static int GuardedVFS::fstat ( int  fd,
struct stat statbuf 
)
inlinestatic

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

Es gelten dieselben Limitierungen wie für stat.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ readlink()

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

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

Achtung: Der Buffer wird nicht null-terminiert.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ getdents()

static int GuardedVFS::getdents ( int  fd,
Dirent dirp,
int  count 
)
inlinestatic

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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ opendir()

static DIR * GuardedVFS::opendir ( const char *  name)
inlinestatic

Öffnet ein Verzeichnis name. Siehe man 3 opendir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ readdir()

static struct Dirent * GuardedVFS::readdir ( DIR dirp)
inlinestatic

Liest einen Verzeichniseintrag. Siehe man 3 readdir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ rewinddir()

static void GuardedVFS::rewinddir ( DIR dirp)
inlinestatic

Setzt die Position im Verzeichnis zurück. Siehe man 3 rewinddir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ closedir()

static int GuardedVFS::closedir ( DIR dirp)
inlinestatic

Schließt ein Verzeichnis. Siehe man 3 closedir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ mkdir()

static int GuardedVFS::mkdir ( const char *  pathname)
inlinestatic

Erstellt Verzeichnis pathname. Siehe man 2 mkdir.

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

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ chdir()

static int GuardedVFS::chdir ( const char *  path)
inlinestatic

Wechselt in Verzeichnis path. Siehe man 2 chdir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

◆ fchdir()

static int GuardedVFS::fchdir ( int  fd)
inlinestatic

Wechselt in Verzeichnis fd. Siehe man 2 fchdir.

Note
This method is equal to the correspondent method in base class VFS, with the only difference that the call will be protected by a Guarded object.

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