#include "filesys/inode.h"
#include <list.h>
#include <debug.h>
#include <round.h>
#include <string.h>
#include "filesys/filesys.h"
#include "filesys/free-map.h"
#include "threads/malloc.h"
Go to the source code of this file.
Data Structures | |
struct | inode_disk |
struct | inode |
Defines | |
#define | INODE_MAGIC 0x494e4f44 |
Functions | |
static size_t | bytes_to_sectors (off_t size) |
static block_sector_t | byte_to_sector (const struct inode *inode, off_t pos) |
void | inode_init (void) |
bool | inode_create (block_sector_t sector, off_t length) |
struct inode * | inode_open (block_sector_t sector) |
struct inode * | inode_reopen (struct inode *inode) |
block_sector_t | inode_get_inumber (const struct inode *inode) |
void | inode_close (struct inode *inode) |
void | inode_remove (struct inode *inode) |
off_t | inode_read_at (struct inode *inode, void *buffer_, off_t size, off_t offset) |
off_t | inode_write_at (struct inode *inode, const void *buffer_, off_t size, off_t offset) |
void | inode_deny_write (struct inode *inode) |
void | inode_allow_write (struct inode *inode) |
off_t | inode_length (const struct inode *inode) |
Variables | |
static struct list | open_inodes |
#define INODE_MAGIC 0x494e4f44 |
static block_sector_t byte_to_sector | ( | const struct inode * | inode, | |
off_t | pos | |||
) | [static] |
Definition at line 48 of file inode.c.
References ASSERT, BLOCK_SECTOR_SIZE, inode::data, NULL, and inode_disk::start.
Referenced by inode_read_at(), and inode_write_at().
Definition at line 27 of file inode.c.
References BLOCK_SECTOR_SIZE, and DIV_ROUND_UP.
Referenced by inode_close(), and inode_create().
void inode_allow_write | ( | struct inode * | inode | ) |
Definition at line 334 of file inode.c.
References ASSERT, inode::deny_write_cnt, and inode::open_cnt.
Referenced by file_allow_write().
void inode_close | ( | struct inode * | inode | ) |
Definition at line 165 of file inode.c.
References bytes_to_sectors(), inode::data, inode::elem, free(), free_map_release(), inode_disk::length, list_remove(), NULL, inode::open_cnt, inode::removed, inode::sector, and inode_disk::start.
Referenced by dir_close(), dir_open(), dir_remove(), file_close(), and file_open().
bool inode_create | ( | block_sector_t | sector, | |
off_t | length | |||
) |
Definition at line 74 of file inode.c.
References ASSERT, BLOCK_SECTOR_SIZE, block_write(), bytes_to_sectors(), calloc(), free(), free_map_allocate(), fs_device, INODE_MAGIC, inode_disk::length, inode_disk::magic, NULL, and inode_disk::start.
Referenced by dir_create(), filesys_create(), and free_map_create().
void inode_deny_write | ( | struct inode * | inode | ) |
Definition at line 324 of file inode.c.
References ASSERT, inode::deny_write_cnt, and inode::open_cnt.
Referenced by file_deny_write().
block_sector_t inode_get_inumber | ( | const struct inode * | inode | ) |
void inode_init | ( | void | ) |
Definition at line 63 of file inode.c.
References list_init(), and open_inodes.
Referenced by filesys_init().
Definition at line 343 of file inode.c.
References inode::data, and inode_disk::length.
Referenced by file_length(), inode_read_at(), and inode_write_at().
struct inode* inode_open | ( | block_sector_t | sector | ) | [read] |
Definition at line 113 of file inode.c.
References block_read(), inode::data, inode::deny_write_cnt, inode::elem, fs_device, inode_reopen(), list_begin(), list_end(), list_entry, list_next(), list_push_front(), malloc(), NULL, inode::open_cnt, open_inodes, inode::removed, and inode::sector.
Referenced by dir_lookup(), dir_open_root(), dir_remove(), free_map_create(), and free_map_open().
Definition at line 202 of file inode.c.
References block_read(), BLOCK_SECTOR_SIZE, buffer, byte_to_sector(), free(), fs_device, inode_length(), malloc(), memcpy(), and NULL.
Referenced by dir_add(), dir_readdir(), file_read(), file_read_at(), and lookup().
void inode_remove | ( | struct inode * | inode | ) |
Definition at line 192 of file inode.c.
References ASSERT, NULL, and inode::removed.
Referenced by dir_remove().
Definition at line 147 of file inode.c.
References NULL, and inode::open_cnt.
Referenced by dir_reopen(), file_reopen(), and inode_open().
Definition at line 259 of file inode.c.
References block_read(), BLOCK_SECTOR_SIZE, block_write(), buffer, byte_to_sector(), inode::deny_write_cnt, free(), fs_device, inode_length(), malloc(), memcpy(), memset(), and NULL.
Referenced by dir_add(), dir_remove(), file_write(), and file_write_at().
struct list open_inodes [static] |