#include "kernel.h" #include "fd.h" #include "fifo.h" #include "kmalloc.h" #include "ext2.h" #include "log.h" #include "lib/string/string.h" #include "lib/printf/printf.h" #include "ringbuffer.h" bool fd_write(fd* f,uint8_t c) { return f->write(f->data,c); } uint8_t fd_read(fd* f) { return f->read(f->data); } bool fd_has(fd* f) { return f->has(f->data); } bool fd_eof(fd* f) { return f->eof(f->data); } bool fd_close(fd* f) { return f->close(f->data); } //---- void* ext2_init(char *path) { uint32_t *data=kballoc(1); uint32_t inode= ext2_filename_to_inode(VMEM_EXT2_RAMIMAGE,path); data[0]=inode;// inode data[1]=0; //pos return data; } void ext2_write(void* x) { kpanic("not impl"); } uint8_t ext2_read(uint32_t* data) { char c; ext2_read_inode(VMEM_EXT2_RAMIMAGE,data[0],&c,&data[1],1); return c; } bool ext2_has(uint32_t* data) { return 1; } bool ext2_eof(uint32_t* data) { uint32_t save=data[1]; uint32_t c=ext2_read_inode(VMEM_EXT2_RAMIMAGE,data[0],&c,&data[1],1); data[1]=save; return (c==0); } void ext2_close(void* x) { kbfree(x); } uint8_t sysfs_get(uint32_t *data) { return ringbuffer_get(data); } bool sysfs_has(uint32_t *data) { return true; } bool sysfs_eof(uint32_t *data) { return !ringbuffer_has(data); } void sysfs_close(uint32_t *data) { ringbuffer *r=data; ringbuffer_free(data); // free ringbuffer buffer kbfree(data); // free memory holding ringbuffer information } void get_sysfs_data(ringbuffer *r,char *format_string, ...) { char buf[256]; va_list va; va_start(va,format_string); tfp_vsprintf(buf,format_string,va); va_end(va); for(int i=0;i