TacOS  0.2
 Tout Structures de données Fichiers Fonctions Variables Définitions de type Énumérations Macros
vfs.h
Aller à la documentation de ce fichier.
1 
29 #ifndef _VFS_H_
30 #define _VFS_H_
31 
32 #include <types.h>
33 #include <fd_types.h>
34 #include <kstat.h>
35 
36 struct _fs_instance_t;
37 struct _dentry_t;
38 struct _inode_t;
39 struct _file_attributes_t;
40 
44 typedef struct {
45  char *name;
47  struct _fs_instance_t * (*mount) (open_file_descriptor*);
48  void (*umount) (struct _fs_instance_t *);
50 
54 typedef struct _fs_instance_t {
57  struct _dentry_t* (*getroot) (struct _fs_instance_t *);
58  struct _dentry_t* (*lookup) (struct _fs_instance_t *, struct _dentry_t*, const char *);
59  int (*mkdir) (struct _inode_t *, struct _dentry_t *, mode_t);
60  int (*mknod) (struct _inode_t *, struct _dentry_t *, mode_t, dev_t);
61  int (*stat) (struct _inode_t *, struct stat *);
62  int (*unlink) (struct _inode_t *, struct _dentry_t *);
63  int (*rmdir) (struct _inode_t *, struct _dentry_t *);
64  int (*truncate) (struct _inode_t *, off_t size);
65  int (*setattr) (struct _inode_t *inode, struct _file_attributes_t *attr);
66  int (*rename) (struct _inode_t *old_dir, struct _dentry_t *old_dentry, struct _inode_t *new_dir, struct _dentry_t *new_dentry);
68 
72 typedef struct _mounted_fs_t {
74  char *name;
75  struct _mounted_fs_t *next;
76 } mounted_fs_t;
77 
81 typedef struct _inode_t {
82  unsigned long i_ino;
83  int i_mode;
86  off_t i_size;
87  time_t i_atime;
88  time_t i_ctime;
89  time_t i_mtime;
90  time_t i_dtime;
91  int i_count;
92  unsigned char i_nlink;
93  unsigned char i_flags;
94  unsigned long i_blocks;
96 // inode_ops_t *i_ops; /**< Inode operations. */
98  void *i_fs_specific;
99 } inode_t;
100 
104 typedef struct _dentry_t {
105  const char *d_name;
108 } dentry_t;
109 
113 struct nameidata {
114  int flags;
117  const char *last;
118 };
119 
120 #define ATTR_UID 1
121 #define ATTR_GID (1 << 1)
122 #define ATTR_MODE (1 << 2)
123 #define ATTR_ATIME (1 << 3)
124 #define ATTR_MTIME (1 << 4)
125 #define ATTR_CTIME (1 << 5)
126 #define ATTR_SIZE (1 << 6)
131 typedef struct _file_attributes_t {
132  int mask;
133  struct stat stbuf;
134  size_t ia_size;
136 
141 
150 open_file_descriptor* vfs_open(const char * pathname, uint32_t flags);
151 
159 void vfs_mount(const char *device, const char *mountpoint, const char *type);
160 
168 int vfs_umount(const char *mountpoint);
169 
178 int vfs_mkdir(const char * pathname, mode_t mode);
179 
188 int vfs_stat(const char *pathname, struct stat * stbuf, int follow_link);
189 
197 int vfs_unlink(const char *pathname);
198 
208 int vfs_mknod(const char * path, mode_t mode, dev_t dev);
209 
218 int vfs_chmod(const char *pathname, mode_t mode);
219 
229 int vfs_chown(const char *pathname, uid_t owner, gid_t group);
230 
239 int vfs_utimes(const char *pathname, const struct timeval tv[2]);
240 
249 int vfs_rename(const char *oldpath, const char *newpath);
250 
258 int vfs_rmdir(const char *pathname);
259 
269 int vfs_readdir(open_file_descriptor * ofd, char * entries, size_t size);
270 
279 
283 void vfs_init();
284 
285 ssize_t vfs_readlink(const char *path, char *buf, size_t bufsize);
286 #endif
dentry_t * dentry
Definition: vfs.h:115
time_t i_mtime
Definition: vfs.h:89
inode_t * d_inode
Definition: vfs.h:106
struct _mounted_fs_t * next
Definition: vfs.h:75
int(* unlink)(struct _inode_t *, struct _dentry_t *)
Definition: vfs.h:62
int vfs_chmod(const char *pathname, mode_t mode)
Change les droits d'un noeud.
Definition: vfs.c:473
unsigned char i_flags
Definition: vfs.h:93
uint32_t uid_t
Definition: kstat.h:65
int(* setattr)(struct _inode_t *inode, struct _file_attributes_t *attr)
Definition: vfs.h:65
gid_t i_gid
Definition: vfs.h:85
Definition: vfs.h:131
int vfs_rename(const char *oldpath, const char *newpath)
Renomme ou déplace un fichier.
Definition: vfs.c:514
int(* mknod)(struct _inode_t *, struct _dentry_t *, mode_t, dev_t)
Definition: vfs.h:60
int(* rename)(struct _inode_t *old_dir, struct _dentry_t *old_dentry, struct _inode_t *new_dir, struct _dentry_t *new_dentry)
Definition: vfs.h:66
int(* mkdir)(struct _inode_t *, struct _dentry_t *, mode_t)
Definition: vfs.h:59
void vfs_mount(const char *device, const char *mountpoint, const char *type)
Montage d'un device sur un certain point de montage.
Definition: vfs.c:310
int vfs_chown(const char *pathname, uid_t owner, gid_t group)
Change le propriétaire d'un noeud.
Definition: vfs.c:486
int flags
Definition: vfs.h:114
mounted_fs_t * mnt
Definition: vfs.h:116
Definition: vfs.h:113
int vfs_mknod(const char *path, mode_t mode, dev_t dev)
Création d'un nouveau noeud.
Definition: vfs.c:433
int unique_inode
Definition: vfs.h:46
int vfs_rmdir(const char *pathname)
Suppression d'un dossier.
Definition: vfs.c:409
off_t i_size
Definition: vfs.h:86
time_t i_dtime
Definition: vfs.h:90
Instance d'un couple FS/Device monté.
Definition: vfs.h:54
int mask
Definition: vfs.h:132
Definition: vfs.h:72
int i_mode
Definition: vfs.h:83
unsigned long i_blocks
Definition: vfs.h:94
fs_instance_t * i_instance
Definition: vfs.h:95
Definition: vfs.h:81
unsigned long i_ino
Definition: vfs.h:82
struct _file_attributes_t file_attributes_t
int vfs_umount(const char *mountpoint)
Démonte un point de montage.
Definition: vfs.c:332
time_t i_atime
Definition: vfs.h:87
char * name
Definition: vfs.h:45
unsigned char i_nlink
Definition: vfs.h:92
int vfs_unlink(const char *pathname)
Suppression d'un noeud.
Definition: vfs.c:384
const char * d_name
Definition: vfs.h:105
Definition: clock.h:41
Structures liées aux fichiers ouverts.
void vfs_register_fs(file_system_t *fs)
Enregistrer un FS dans le VFS pour le rendre disponible.
Definition: vfs.c:85
int vfs_close(open_file_descriptor *ofd)
Fermeture d'un fichier ouvert.
Definition: vfs.c:288
void * i_fs_specific
Definition: vfs.h:98
uint32_t dev_t
Definition: kstat.h:64
uint32_t gid_t
Definition: kstat.h:66
const char * last
Definition: vfs.h:117
struct _inode_t inode_t
int vfs_readdir(open_file_descriptor *ofd, char *entries, size_t size)
Lecture de plusieurs entrées d'un dossier.
Definition: vfs.c:543
Informations sur un noeud.
Definition: kstat.h:75
Definition: fd_types.h:49
int(* truncate)(struct _inode_t *, off_t size)
Definition: vfs.h:64
struct _dentry_t * d_pdentry
Definition: vfs.h:107
uint32_t mode_t
Definition: kstat.h:63
struct _fs_instance_t fs_instance_t
Instance d'un couple FS/Device monté.
int ssize_t
Definition: types.h:44
int vfs_stat(const char *pathname, struct stat *stbuf, int follow_link)
Obtient des infos sur un noeud.
Definition: vfs.c:368
int(* rmdir)(struct _inode_t *, struct _dentry_t *)
Definition: vfs.h:63
int vfs_mkdir(const char *pathname, mode_t mode)
Création d'un dossier.
Definition: vfs.c:450
struct _open_file_operations_t * i_fops
Definition: vfs.h:97
int vfs_utimes(const char *pathname, const struct timeval tv[2])
Modifie la date d'accès et de modification d'un fichier.
Definition: vfs.c:500
unsigned long int uint32_t
Definition: types.h:36
char * name
Definition: vfs.h:74
fs_instance_t * instance
Definition: vfs.h:73
open_file_descriptor * vfs_open(const char *pathname, uint32_t flags)
Ouverture d'un fichier.
Definition: vfs.c:235
file_system_t * fs
Definition: vfs.h:55
struct _mounted_fs_t mounted_fs_t
Definition: vfs.h:104
uid_t i_uid
Definition: vfs.h:84
void vfs_init()
Definition: vfs.c:65
Definition: vga_modes.h:37
Definition: fd_types.h:91
open_file_descriptor * device
Definition: vfs.h:56
time_t i_ctime
Definition: vfs.h:88
struct _dentry_t dentry_t
Structure qui représente un FS.
Definition: vfs.h:44
Manipulation des caractéristiques d'un fichier.
int i_count
Definition: vfs.h:91