AquilaOS documentation
How it works, and its code
Loading...
Searching...
No Matches
stat.c
Go to the documentation of this file.
1
4
5#include <core/system.h>
6#include <fs/vfs.h>
7#include <fs/stat.h>
8
16int vfs_stat(struct vnode *vnode, struct aquila_stat *buf)
17{
18 vfs_log(LOG_DEBUG, "vfs_stat(vnode=%p, buf=%p)\n", vnode, buf);
19
20 buf->st_dev = vnode->dev;
21 buf->st_ino = vnode->ino;
22 buf->st_mode = vnode->mode;
23 buf->st_nlink = vnode->nlink;
24 buf->st_uid = vnode->uid;
25 buf->st_gid = vnode->gid;
26 buf->st_rdev = vnode->rdev;
27 buf->st_size = vnode->size;
28 buf->st_mtim.tv_sec = vnode->mtime.tv_sec;
29 buf->st_mtim.tv_nsec = vnode->mtime.tv_nsec;
30 buf->st_atim.tv_sec = vnode->atime.tv_sec;
31 buf->st_atim.tv_nsec = vnode->atime.tv_nsec;
32 buf->st_ctim.tv_sec = vnode->ctime.tv_sec;
33 buf->st_ctim.tv_nsec = vnode->ctime.tv_nsec;
34
35 /* filesystems don't report how much they allocated, so the size is
36 * counted in 512-byte blocks */
37 buf->st_blksize = 512;
38 buf->st_blocks = (vnode->size + 511) / 512;
39
40 return 0;
41}
42
#define LOG_DEBUG
Definition printk.h:19
int vfs_stat(struct vnode *vnode, struct aquila_stat *buf)
Fills a stat structure with a vnode's attributes.
Definition stat.c:16
uint32_t tv_nsec
Definition types.h:32
time_t tv_sec
Definition types.h:31
A file in memory (a vnode): what its inode says, and the kernel's own state.
Definition vfs.h:113
ino_t ino
Definition vfs.h:114
_time_t atime
Definition vfs.h:123
_time_t ctime
Definition vfs.h:125
dev_t dev
Definition vfs.h:116
nlink_t nlink
Definition vfs.h:121
_time_t mtime
Definition vfs.h:124
gid_t gid
Definition vfs.h:120
size_t size
Definition vfs.h:115
mode_t mode
Definition vfs.h:118
uid_t uid
Definition vfs.h:119
dev_t rdev
Definition vfs.h:117