From mboxrd@z Thu Jan 1 00:00:00 1970 From: AKASHI, Takahiro Date: Fri, 1 Jun 2018 16:13:11 +0900 Subject: [U-Boot] [RFC 3/3] efi_selftest: test writing to file In-Reply-To: <20180526083447.2917-4-xypron.glpk@gmx.de> References: <20180526083447.2917-1-xypron.glpk@gmx.de> <20180526083447.2917-4-xypron.glpk@gmx.de> Message-ID: <20180601071310.GN30789@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Heinrich, On Sat, May 26, 2018 at 10:34:47AM +0200, Heinrich Schuchardt wrote: > Signed-off-by: Heinrich Schuchardt > --- > lib/efi_selftest/efi_selftest_block_device.c | 56 ++++++++++++++++++++ > 1 file changed, 56 insertions(+) > > diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c > index 4af8bd8cb28..9209ce678ee 100644 > --- a/lib/efi_selftest/efi_selftest_block_device.c > +++ b/lib/efi_selftest/efi_selftest_block_device.c > @@ -377,6 +377,7 @@ static int execute(void) > "Wrong volume label '%ps', expected 'U-BOOT TEST'\n", > system_info.info.volume_label); > } > + /* Read file */ > ret = root->open(root, &file, (s16 *)L"hello.txt", EFI_FILE_MODE_READ, > 0); > if (ret != EFI_SUCCESS) { > @@ -389,6 +390,11 @@ static int execute(void) > efi_st_error("Failed to read file\n"); > return EFI_ST_FAILURE; > } > + if (buf_size != 13) { > + efi_st_error("Wrong number of bytes read: %u\n", > + (unsigned int)buf_size); > + return EFI_ST_FAILURE; > + } > if (efi_st_memcmp(buf, "Hello world!", 12)) { > efi_st_error("Unexpected file content\n"); > return EFI_ST_FAILURE; > @@ -399,6 +405,56 @@ static int execute(void) > return EFI_ST_FAILURE; > } > ret = root->close(root); We should not close 'root' here as > + /* Write file */ > + ret = root->open(root, &file, (s16 *)L"u-boot.txt", > + EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE, 0); we will use it here. > + if (ret != EFI_SUCCESS) { > + efi_st_error("Failed to open file\n"); > + return EFI_ST_FAILURE; > + } > + buf_size = 7; > + boottime->set_mem(buf, sizeof(buf), 0); > + boottime->copy_mem(buf, "U-Boot", buf_size); > + ret = file->write(file, &buf_size, buf); > + if (ret != EFI_SUCCESS || buf_size != 7) { > + efi_st_error("Failed to write file\n"); > + return EFI_ST_FAILURE; > + } > + ret = file->close(file); > + if (ret != EFI_SUCCESS) { > + efi_st_error("Failed to close file\n"); > + return EFI_ST_FAILURE; > + } > + ret = root->close(root); ditto Thanks, -Takahiro AKASHI > + /* Verify file */ > + boottime->set_mem(buf, sizeof(buf), 0); > + ret = root->open(root, &file, (s16 *)L"u-boot.txt", EFI_FILE_MODE_READ, > + 0); > + if (ret != EFI_SUCCESS) { > + efi_st_error("Failed to open file\n"); > + return EFI_ST_FAILURE; > + } > + buf_size = sizeof(buf) - 1; > + ret = file->read(file, &buf_size, buf); > + if (ret != EFI_SUCCESS) { > + efi_st_error("Failed to read file\n"); > + return EFI_ST_FAILURE; > + } > + if (buf_size != 7) { > + efi_st_error("Wrong number of bytes read: %u\n", > + (unsigned int) buf_size); > + return EFI_ST_FAILURE; > + } > + if (efi_st_memcmp(buf, "U-Boot", 7)) { > + efi_st_error("Unexpected file content %s\n", buf); > + return EFI_ST_FAILURE; > + } > + ret = file->close(file); > + if (ret != EFI_SUCCESS) { > + efi_st_error("Failed to close file\n"); > + return EFI_ST_FAILURE; > + } > + ret = root->close(root); > if (ret != EFI_SUCCESS) { > efi_st_error("Failed to close volume\n"); > return EFI_ST_FAILURE; > -- > 2.17.0 >