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
|
||||
*.a
|
||||
*.log
|
||||
*.swp
|
||||
*.DS_Store
|
||||
tags
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
|
|
Loading…
Add table
Reference in a new issue