update name of code to labcodes
This commit is contained in:
62
labcodes/lab8/kern/fs/file.h
Normal file
62
labcodes/lab8/kern/fs/file.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#ifndef __KERN_FS_FILE_H__
|
||||
#define __KERN_FS_FILE_H__
|
||||
|
||||
//#include <types.h>
|
||||
#include <fs.h>
|
||||
#include <proc.h>
|
||||
#include <atomic.h>
|
||||
#include <assert.h>
|
||||
|
||||
struct inode;
|
||||
struct stat;
|
||||
struct dirent;
|
||||
|
||||
struct file {
|
||||
enum {
|
||||
FD_NONE, FD_INIT, FD_OPENED, FD_CLOSED,
|
||||
} status;
|
||||
bool readable;
|
||||
bool writable;
|
||||
int fd;
|
||||
off_t pos;
|
||||
struct inode *node;
|
||||
int open_count;
|
||||
};
|
||||
|
||||
void fd_array_init(struct file *fd_array);
|
||||
void fd_array_open(struct file *file);
|
||||
void fd_array_close(struct file *file);
|
||||
void fd_array_dup(struct file *to, struct file *from);
|
||||
bool file_testfd(int fd, bool readable, bool writable);
|
||||
|
||||
int file_open(char *path, uint32_t open_flags);
|
||||
int file_close(int fd);
|
||||
int file_read(int fd, void *base, size_t len, size_t *copied_store);
|
||||
int file_write(int fd, void *base, size_t len, size_t *copied_store);
|
||||
int file_seek(int fd, off_t pos, int whence);
|
||||
int file_fstat(int fd, struct stat *stat);
|
||||
int file_fsync(int fd);
|
||||
int file_getdirentry(int fd, struct dirent *dirent);
|
||||
int file_dup(int fd1, int fd2);
|
||||
int file_pipe(int fd[]);
|
||||
int file_mkfifo(const char *name, uint32_t open_flags);
|
||||
|
||||
static inline int
|
||||
fopen_count(struct file *file) {
|
||||
return file->open_count;
|
||||
}
|
||||
|
||||
static inline int
|
||||
fopen_count_inc(struct file *file) {
|
||||
file->open_count += 1;
|
||||
return file->open_count;
|
||||
}
|
||||
|
||||
static inline int
|
||||
fopen_count_dec(struct file *file) {
|
||||
file->open_count -= 1;
|
||||
return file->open_count;
|
||||
}
|
||||
|
||||
#endif /* !__KERN_FS_FILE_H__ */
|
||||
|
||||
Reference in New Issue
Block a user