diff options
author | Nao Pross <naopross@thearcway.org> | 2018-10-30 11:41:24 +0100 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2018-10-30 11:41:24 +0100 |
commit | 43be150dc6e84f6f6eeb071cd3cdb7fc21125d60 (patch) | |
tree | 541fd3d690c1bdfd7b68d684029a400b80f4aa06 /sw/z80/kernel/fs | |
parent | Add datasheets for ATmega328 and 74LS259 (diff) | |
download | z80uPC-43be150dc6e84f6f6eeb071cd3cdb7fc21125d60.tar.gz z80uPC-43be150dc6e84f6f6eeb071cd3cdb7fc21125d60.zip |
Move sw to sw-old and hw to hw-altium, add kicad files
Diffstat (limited to 'sw/z80/kernel/fs')
-rw-r--r-- | sw/z80/kernel/fs/fd.c | 255 | ||||
-rw-r--r-- | sw/z80/kernel/fs/fs.c | 236 |
2 files changed, 0 insertions, 491 deletions
diff --git a/sw/z80/kernel/fs/fd.c b/sw/z80/kernel/fs/fd.c deleted file mode 100644 index 96603ad..0000000 --- a/sw/z80/kernel/fs/fd.c +++ /dev/null @@ -1,255 +0,0 @@ -#include "fs/fd.h" -#include "fs/fdop.h" -#include "fs/fs.h" - -/* from fd.h */ -struct file_desc fd_table[FD_TABLE_SIZE]; -struct uint8_t fd_bmap[FD_TABLE_SIZE / 8]; - -/* File descriptors implementation */ - -int8_t open(const char *path, uint8_t flags) -{ - // TODO - return 0; -} - -size_t ls(int8_t fd, struct dirent *buf, uint8_t all) -{ - // TODO - return 0; -} - -size_t find(int8_t fd, struct dirent *buf, const char *name) -{ - // TODO - return 0; -} - -int8_t mkdir(int8_t fd, const char *name) -{ - // TODO - return 0; -} - -int8_t touch(int8_t fd, const char *name) -{ - // TODO - return 0; -} - -int8_t ln(int8_t fd, const char *name) -{ - // TODO - return 0; -} - -int8_t seek(int8_t fd, fsize_t pos) -{ - // TODO - return 0; -} - -size_t readline(int8_t fd, char *buf, char term) -{ - // TODO - return 0; -} - -int8_t print(int8_t fd, const char *str) -{ - // TODO - return 0; -} - -size_t read(int8_t fd, void *buf, size_t n) -{ - // TODO - return 0; -} - -int8_t write(int8_t fd, const void *buf, size_t n) -{ - // TODO - return 0; -} - -void close(int8_t fd) -{ - // TODO - return 0; -} - -/* Set of file descriptors operations */ -/* Determines if to use the serial interface or the address space */ - -/* Address space section */ - -/* File functions */ - -size_t as_readline(inode_t inode, fsize_t seek, char *buf, char term) -{ - // TODO - return 0; -} - -size_t as_print(inode_t inode, fsize_t seek, const char *str) -{ - // TODO - return 0; -} - -size_t as_append(inode_t inode, fsize_t *seek_ptr, const char *str) -{ - // TODO - return 0; -} - -size_t as_read(inode_t inode, fsize_t seek, void *buf, size_t n) -{ - // TODO - return 0; -} - -size_t as_write(inode_t inode, fsize_t seek, const void *buf, size_t n) -{ - // TODO - return 0; -} - -size_t as_bin_append(inode_t inode, fsize_t *seek_ptr, const void *buf, size_t -n) -{ - // TODO - return 0; -} - -/* Directory functions */ - -size_t as_ls(inode_t inode, struct dirent *buf, uint8_t all) -{ - // TODO - return 0; -} - -size_t as_find(inode_t inode, struct dirent *buf, const char *name) -{ - // TODO - return 0; -} - -int8_t as_mkdir(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t as_rmdir(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t as_touch(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t as_rm(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t as_ln(inode_t inode, const char *path, const char *name) -{ - // TODO - return 0; -} - -/* Serial Space section */ -/* Warning, it doesn't switch to the right driver */ - -/* File functions */ - -size_t ss_readline(inode_t inode, fsize_t seek, char *buf, char term) -{ - // TODO - return 0; -} - -size_t ss_print(inode_t inode, fsize_t seek, const char *str) -{ - // TODO - return 0; -} - -size_t ss_append(inode_t inode, fsize_t *seek_ptr, const char *str) -{ - // TODO - return 0; -} - -size_t ss_read(inode_t inode, fsize_t seek, void *buf, size_t n) -{ - // TODO - return 0; -} - -size_t ss_write(inode_t inode, fsize_t seek, const void *buf, size_t n) -{ - // TODO - return 0; -} - -size_t ss_bin_append(inode_t inode, fsize_t *seek_ptr, const void *buf, size_t -n) -{ - // TODO - return 0; -} - -/* Directory functions */ - -size_t ss_ls(inode_t inode, struct dirent *buf, uint8_t all) -{ - // TODO - return 0; -} - -size_t ss_find(inode_t inode, struct dirent *buf, const char *name) -{ - // TODO - return 0; -} - -int8_t ss_mkdir(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t ss_rmdir(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t ss_touch(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t ss_rm(inode_t inode, const char *name) -{ - // TODO - return 0; -} - -int8_t ss_ln(inode_t, const char *path, const char *name) -{ - // TODO - return 0; -} diff --git a/sw/z80/kernel/fs/fs.c b/sw/z80/kernel/fs/fs.c deleted file mode 100644 index 584f934..0000000 --- a/sw/z80/kernel/fs/fs.c +++ /dev/null @@ -1,236 +0,0 @@ -#include "fs/fs.h" -#include "fs/users.h" -#include "fs/dev.h" - -/* from users.h */ -struct fs_user c_user; - -/* from inode.h */ -inode_t c_inode; - -struct fs_dev devices[FS_MOUNT_LIMIT]; - -/* filesystem basic implementation */ - -devsize_t fs_block(blk_t block) -{ - // TODO - return 0; -} - -devsize_t fs_inode(struct fs_inode *buf) -{ - struct fs_superblock * sb; - devsize_t seek; - - if (FS_USE_ROM(c_inode)) - { - seek = FS_ROM_SPACE; - sb = (struct fs_superblock*) seek; - - } else { - - seek = 0; - - if (c_inode.dev > 0x7) - panic("Invalid device"); // TODO, still to implement - - sb = &devices[c_inode.dev].superblock; - } - - if (c_inode.inode >= sb->imap_size) - { - // TODO, set errno - return 0; // inode doesn't exist - } - - seek += sizeof(struct fs_superblock) + - sizeof(struct fs_inode) * c_inode.inode; - - if (FS_USE_ROM(c_inode)) - *buf = *(struct fs_inode*)seek; - else - { - /* set sio port */ - sio_port = devices[c_inode.dev].port_no; - sio_seek = seek; - - if (sio_read((void *)buf, INODE_META_SIZE) < INODE_META_SIZE) - { - // TODO, set errno - return 0; // cannot read to device - } - } - - return seek + INODE_META_SIZE; -} - -/* from fd.h */ -int8_t __fd_new() -{ - int8_t fd; - for (int8_t = 0; i < FD_TABLE_SIZE / 8; i++) - { - for (uint8_t bit = 0x80, j = 0; bit > 0; bit >>= 1, j++) - { - if (!(bit & fd_bmap[i])) - return i * 8 + j; - } - } - - return -1; -} - -/* from fd.h */ -int8_t __open_c_inode(uint8_t flags) -{ - /* read meta data */ - struct fs_inode inode; - - /* init file_desc buffer */ - struct file_desc desc = {c_inode, 0}; - - desc.begin = fs_inode(&inode); - - /* bind operations */ - - if (flags & OPEN_DIR) - { - /* dir handler */ - - if (inode.type == INODE_TYPE_DIR) - { - /* bind dir functions */ - if (FS_USE_ROM(c_inode)) - /* bind address space functions */ - FD_BIND_AS_DIR(desc.opers) - else - /* bind serial space functions */ - FD_BIND_SS_DIR(desc.opers) - - } else { - - // TODO, set errno - return -1; // not a directory - } - - } else if (flags & OPEN_LINK) { - - /* link handler */ - - if (inode.type == INODE_TYPE_LINK) - { - if (FS_USE_ROM(c_inode)) - FD_BIND_AS_FILE(desc.opers, flags) - else - FD_BIND_SS_FILE(desc.opers, flags) - - if (flags & OPEN_ERASE) - /* empty file content */ - __inode_empty(desc.begin); - - } else { - - // TODO, set errno - return -1; // not a link - } - - } else { - - /* file */ - - if (inode.type == INODE_TYPE_FILE) - ; // do nothing - else if (inode.type == INODE_TYPE_SPECIAL) { - - // TODO, bind special callbacks - - } else { - - // TODO, set errno - return -1; - } - - /* bind operations */ - - if (FS_USE_ROM(c_inode)) - { - if (flags & OPEN_BIN) - FD_BIND_AS_BINFILE(desc.opers, flags) - else - FD_BIND_AS_FILE(desc.opers, flags) - - } else { - - if (flags & OPEN_BIN) - FD_BIND_SS_BINFILE(desc.opers, flags) - else - FD_BIND_SS_FILE(desc.opers, flags) - } - } - - /* find a free fd space */ - - int8_t fd = __fd_new(); - - if (fd < 0) - { - // TODO, set errno, fd not available - - } else - fd_table[fd] = desc; // copy buffer into the table - - return fd; -} - -inode_t fs_rec_path(const char *path); - -inode_t fs_parse_path(const char *path) -{ - inode_t ino, cwd = c_inode; - - switch (path[0]) - { - case '0': - FS_INODE_NULL(ino) - return ino; - - case '/': - FS_INODE_ROOT(ino) - c_inode = ino; // set cwd to root - path++; - break; - - case '~': - - if (path[1] = '/') - { - c_inode.dev = FS_DEV_ROM; - c_inode.inode = c_user.home; // set cwd to home - path += 2; - } - - break; - } - - ino = fs_rec_path(path); - c_inode = cwd; - return ino; -} - -inode_t fs_rec_path(const char *path) -{ - devsize_t inode = fs_inode(c_inode.inode); - inode_t rel; - - if (!inode) // if not exists - { - FS_INODE_NULL(rel) - return rel; - } - - // TODO, check if dir or file - // TODO, if dir, find name - // TODO, set fs_cwd to new inode - // TODO, recall fs_rec_path -} |