diff --git a/.gitignore b/.gitignore index 391bf0f5..6842d839 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ *.img *.a *.log +*.swp *.DS_Store tags include/metalsvm/config.h diff --git a/fs/initrd.c b/fs/initrd.c index c3094b44..fd62b3e6 100644 --- a/fs/initrd.c +++ b/fs/initrd.c @@ -90,6 +90,20 @@ static ssize_t initrd_read(vfs_node_t* node, uint8_t* buffer, size_t size, off_t return size; } + +static ssize_t initrd_write(vfs_node_t* node, uint8_t* buffer, size_t size, off_t offset) +{ + block_list_t* blist = &node->block_list; + char* data = (char*) blist->data[0]; + + //////////ACHTUNG keine Überprüfung der Blcoklängen etc. + memcpy(data, buffer, size); + + return size; +} + + + static dirent_t* initrd_readdir(vfs_node_t* node, uint32_t index) { uint32_t i, j, count; @@ -302,6 +316,7 @@ int initrd_init(void) memset(new_node, 0x00, sizeof(vfs_node_t)); new_node->type = FS_FILE; new_node->read = initrd_read; + new_node->write = initrd_write; new_node->block_size = file_desc->length; new_node->block_list.data[0] = ((char*) header) + file_desc->offset; spinlock_init(&new_node->lock);