add initrd_write
This commit is contained in:
parent
faa41e25e2
commit
e2ae62af2b
2 changed files with 16 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,6 +7,7 @@
|
||||||
*.img
|
*.img
|
||||||
*.a
|
*.a
|
||||||
*.log
|
*.log
|
||||||
|
*.swp
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
tags
|
tags
|
||||||
include/metalsvm/config.h
|
include/metalsvm/config.h
|
||||||
|
|
15
fs/initrd.c
15
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;
|
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)
|
static dirent_t* initrd_readdir(vfs_node_t* node, uint32_t index)
|
||||||
{
|
{
|
||||||
uint32_t i, j, count;
|
uint32_t i, j, count;
|
||||||
|
@ -302,6 +316,7 @@ int initrd_init(void)
|
||||||
memset(new_node, 0x00, sizeof(vfs_node_t));
|
memset(new_node, 0x00, sizeof(vfs_node_t));
|
||||||
new_node->type = FS_FILE;
|
new_node->type = FS_FILE;
|
||||||
new_node->read = initrd_read;
|
new_node->read = initrd_read;
|
||||||
|
new_node->write = initrd_write;
|
||||||
new_node->block_size = file_desc->length;
|
new_node->block_size = file_desc->length;
|
||||||
new_node->block_list.data[0] = ((char*) header) + file_desc->offset;
|
new_node->block_list.data[0] = ((char*) header) + file_desc->offset;
|
||||||
spinlock_init(&new_node->lock);
|
spinlock_init(&new_node->lock);
|
||||||
|
|
Loading…
Add table
Reference in a new issue