diff options
| author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 | 
|---|---|---|
| committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 | 
| commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
| tree | 65ca85f13617aee1dce474596800950f266a456c /roms/u-boot/fs/sandbox | |
| download | qemu-master.tar.gz qemu-master.tar.bz2 qemu-master.zip  | |
Diffstat (limited to 'roms/u-boot/fs/sandbox')
| -rw-r--r-- | roms/u-boot/fs/sandbox/Makefile | 13 | ||||
| -rw-r--r-- | roms/u-boot/fs/sandbox/sandboxfs.c | 111 | 
2 files changed, 124 insertions, 0 deletions
diff --git a/roms/u-boot/fs/sandbox/Makefile b/roms/u-boot/fs/sandbox/Makefile new file mode 100644 index 00000000..ca238f6d --- /dev/null +++ b/roms/u-boot/fs/sandbox/Makefile @@ -0,0 +1,13 @@ +# +# Copyright (c) 2012, Google Inc. +# +# (C) Copyright 2006 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# (C) Copyright 2003 +# Pavel Bartusek, Sysgo Real-Time Solutions AG, pba@sysgo.de +# +# SPDX-License-Identifier:	GPL-2.0+ +# + +obj-y := sandboxfs.o diff --git a/roms/u-boot/fs/sandbox/sandboxfs.c b/roms/u-boot/fs/sandbox/sandboxfs.c new file mode 100644 index 00000000..85079788 --- /dev/null +++ b/roms/u-boot/fs/sandbox/sandboxfs.c @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2012, Google Inc. + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#include <common.h> +#include <fs.h> +#include <os.h> + +int sandbox_fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info) +{ +	return 0; +} + +long sandbox_fs_read_at(const char *filename, unsigned long pos, +			     void *buffer, unsigned long maxsize) +{ +	ssize_t size; +	int fd, ret; + +	fd = os_open(filename, OS_O_RDONLY); +	if (fd < 0) +		return fd; +	ret = os_lseek(fd, pos, OS_SEEK_SET); +	if (ret == -1) { +		os_close(fd); +		return ret; +	} +	if (!maxsize) +		maxsize = os_get_filesize(filename); +	size = os_read(fd, buffer, maxsize); +	os_close(fd); + +	return size; +} + +long sandbox_fs_write_at(const char *filename, unsigned long pos, +			 void *buffer, unsigned long towrite) +{ +	ssize_t size; +	int fd, ret; + +	fd = os_open(filename, OS_O_RDWR | OS_O_CREAT); +	if (fd < 0) +		return fd; +	ret = os_lseek(fd, pos, OS_SEEK_SET); +	if (ret == -1) { +		os_close(fd); +		return ret; +	} +	size = os_write(fd, buffer, towrite); +	os_close(fd); + +	return size; +} + +int sandbox_fs_ls(const char *dirname) +{ +	struct os_dirent_node *head, *node; +	int ret; + +	ret = os_dirent_ls(dirname, &head); +	if (ret) +		return ret; + +	for (node = head; node; node = node->next) { +		printf("%s %10lu %s\n", os_dirent_get_typename(node->type), +		       node->size, node->name); +	} + +	return 0; +} + +int sandbox_fs_exists(const char *filename) +{ +	ssize_t sz; + +	sz = os_get_filesize(filename); +	return sz >= 0; +} + +void sandbox_fs_close(void) +{ +} + +int fs_read_sandbox(const char *filename, void *buf, int offset, int len) +{ +	int len_read; + +	len_read = sandbox_fs_read_at(filename, offset, buf, len); +	if (len_read == -1) { +		printf("** Unable to read file %s **\n", filename); +		return -1; +	} + +	return len_read; +} + +int fs_write_sandbox(const char *filename, void *buf, int offset, int len) +{ +	int len_written; + +	len_written = sandbox_fs_write_at(filename, offset, buf, len); +	if (len_written == -1) { +		printf("** Unable to write file %s **\n", filename); +		return -1; +	} + +	return len_written; +}  | 
