1// See LICENSE for license details. 2 3#ifndef _FILE_H 4#define _FILE_H 5 6#include <sys/stat.h> 7#include <unistd.h> 8#include <stdint.h> 9 10typedef struct file 11{ 12 int kfd; // file descriptor on the host side of the HTIF 13 uint32_t refcnt; 14} file_t; 15 16extern file_t files[]; 17#define stdin (files + 0) 18#define stdout (files + 1) 19#define stderr (files + 2) 20 21file_t* file_get(int fd); 22file_t* file_open(const char* fn, int flags, int mode); 23void file_decref(file_t*); 24void file_incref(file_t*); 25int file_dup(file_t*); 26 27file_t* file_openat(int dirfd, const char* fn, int flags, int mode); 28ssize_t file_pwrite(file_t* f, const void* buf, size_t n, off_t off); 29ssize_t file_pread(file_t* f, void* buf, size_t n, off_t off); 30ssize_t file_write(file_t* f, const void* buf, size_t n); 31ssize_t file_read(file_t* f, void* buf, size_t n); 32ssize_t file_lseek(file_t* f, size_t ptr, int dir); 33int file_truncate(file_t* f, off_t len); 34int file_stat(file_t* f, struct stat* s); 35int fd_close(int fd); 36 37void file_init(); 38 39#endif 40