]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/sandbox/cpu/os.c
unit-test: make "test -e" test independent of $CWD
[karo-tx-uboot.git] / arch / sandbox / cpu / os.c
index ef6a651a60327906fd4c9d29cfd419464cf23bce..98f565eaaf8cfd2d19fb0c011983bb2198d6dce6 100644 (file)
@@ -92,6 +92,11 @@ int os_close(int fd)
        return close(fd);
 }
 
+int os_unlink(const char *pathname)
+{
+       return unlink(pathname);
+}
+
 void os_exit(int exit_code)
 {
        exit(exit_code);
@@ -143,7 +148,7 @@ void *os_malloc(size_t length)
        return hdr + 1;
 }
 
-void *os_free(void *ptr)
+void os_free(void *ptr)
 {
        struct os_mem_hdr *hdr = ptr;
 
@@ -399,3 +404,42 @@ void os_puts(const char *str)
        while (*str)
                os_putc(*str++);
 }
+
+int os_write_ram_buf(const char *fname)
+{
+       struct sandbox_state *state = state_get_current();
+       int fd, ret;
+
+       fd = open(fname, O_CREAT | O_WRONLY, 0777);
+       if (fd < 0)
+               return -ENOENT;
+       ret = write(fd, state->ram_buf, state->ram_size);
+       close(fd);
+       if (ret != state->ram_size)
+               return -EIO;
+
+       return 0;
+}
+
+int os_read_ram_buf(const char *fname)
+{
+       struct sandbox_state *state = state_get_current();
+       int fd, ret;
+       int size;
+
+       size = os_get_filesize(fname);
+       if (size < 0)
+               return -ENOENT;
+       if (size != state->ram_size)
+               return -ENOSPC;
+       fd = open(fname, O_RDONLY);
+       if (fd < 0)
+               return -ENOENT;
+
+       ret = read(fd, state->ram_buf, state->ram_size);
+       close(fd);
+       if (ret != state->ram_size)
+               return -EIO;
+
+       return 0;
+}