Inode:
un inode représente un fichier
on ne met pas le nom du fichier dans l’inode
on y met la taille
Filesystem:
on va monter un filesystem dans le /root avec mount()
qqsoit le filesystem, ça s’utilise de la même façon
V-tables (or virtual tables) are how most C++ implementations do polymorphism. For each concrete implementation of a class, there is a table of function pointers to all the virtual methods. A pointer to this table (called the virtual table) exists as a data member in all the objects. When one calls a virtual method, we lookup the object’s v-table and call the appropriate derived class method.
struct foo {
struct foo_ops *ops;
};
struct foo_ops {
int (*f)();
};
struct foo t;
t.ops = func;
struct file_operations;
virtual filesystem (VFS):
-> filesystem
-> namei (pour name inode), c’est cette partie là qui s’occupe de faire le caching
-> open => vfs_open
-> read => vfs_read
stat (ou fstat)
Factory (?)
read(fd, buf, 82) <- buf est une dentry *
variantes de read: pread && readv
Comment changer la sémantique de read() pour que ça ait du sens ?
(début de parenthèses du cours
struct iovec {
void *ptr;
size_t len;
};
reverse proxy
fin de parenthèses du cours)
getdent
use sendfile to recreate cp (man sendfile)
En C++, pour les functions qui ont virtual
, on a besoin d’implémenter le destructeur.
Pour les shared_ptr -> ref_count pour éviter les types d’erreurs suivantes:
use after free
leak memory
les fichiers de devices, y en a 2 types:
- char dev (devices) (utiliser pour faire des terminaux)
- block dev (devices) (comme char dev, mais uniquement pour des disques)
Major number -> quel est le driver associé au device ?
Minor number -> quelle est l’instance du device ?
Inode:
un inode représente un fichier
on ne met pas le nom du fichier dans l’inode
on y met la taille
Filesystem:
on va monter un filesystem dans le /root avec mount()
qqsoit le filesystem, ça s’utilise de la même façon
V-tables (or virtual tables) are how most C++ implementations do polymorphism. For each concrete implementation of a class, there is a table of function pointers to all the virtual methods. A pointer to this table (called the virtual table) exists as a data member in all the objects. When one calls a virtual method, we lookup the object’s v-table and call the appropriate derived class method.
virtual filesystem (VFS):
-> filesystem
-> namei (pour name inode), c’est cette partie là qui s’occupe de faire le caching
-> open => vfs_open
-> read => vfs_read
stat (ou fstat)
Factory (?)
read(fd, buf, 82) <- buf est une dentry *
variantes de read: pread && readv
Comment changer la sémantique de read() pour que ça ait du sens ?
(début de parenthèses du cours
reverse proxy
fin de parenthèses du cours)
getdent
use sendfile to recreate cp (man sendfile)
En C++, pour les functions qui ont
virtual
, on a besoin d’implémenter le destructeur.Pour les shared_ptr -> ref_count pour éviter les types d’erreurs suivantes:
use after free
leak memory
les fichiers de devices, y en a 2 types:
Major number -> quel est le driver associé au device ?
Minor number -> quelle est l’instance du device ?