| /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /* |
| * esys wraps all the system calls and generates fatal errors. |
| * Some arguments are hard coded. |
| */ |
| |
| #define _GNU_SOURCE |
| |
| #include <sys/mman.h> |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <fcntl.h> |
| #include <unistd.h> |
| |
| #include <eprintf.h> |
| #include <esys.h> |
| |
| void eclose(int fd) |
| { |
| int rc = close(fd); |
| if (rc == -1) |
| fatal("close:"); |
| } |
| |
| void echdir(const char *pathname) |
| { |
| int rc = chdir(pathname); |
| if (rc == -1) |
| fatal("chdir %s:", pathname); |
| } |
| |
| int ecreat(const char *pathname) |
| { |
| int fd = creat(pathname, 0600); |
| if (fd == -1) |
| fatal("creat %s:", pathname); |
| return fd; |
| } |
| |
| void efsync(int fd) |
| { |
| int rc = fsync(fd); |
| if (rc == -1) |
| fatal("fsync:"); |
| } |
| |
| void efdatasync(int fd) |
| { |
| int rc = fdatasync(fd); |
| if (rc == -1) |
| fatal("fdatasync:"); |
| } |
| |
| void emkdir(const char *pathname) |
| { |
| int rc = mkdir(pathname, 0700); |
| if (rc == -1) |
| fatal("mkdir %s:", pathname); |
| } |
| |
| int eopen(const char *pathname, int flags) |
| { |
| int fd = open(pathname, flags, 0600); |
| if (fd == -1) |
| fatal("open %s:", pathname); |
| return fd; |
| } |
| |
| int eread(int fd, void *buf, size_t nbyte) |
| { |
| ssize_t rc = read(fd, buf, nbyte); |
| if (rc == -1) |
| fatal("read:"); |
| return rc; |
| } |
| |
| int epread(int fd, void *buf, size_t nbyte, off_t offset) |
| { |
| ssize_t rc = pread(fd, buf, nbyte, offset); |
| if (rc == -1) |
| fatal("pread:"); |
| return rc; |
| } |
| |
| void esync(void) |
| { |
| sync(); |
| } |
| |
| void esyncfs(int fd) |
| { |
| syncfs(fd); |
| } |
| |
| void eunlink(const char *pathname) |
| { |
| int rc = unlink(pathname); |
| if (rc == -1) |
| fatal("unlink %s:", pathname); |
| } |
| |
| int ewrite(int fildes, const void *buf, size_t nbyte) |
| { |
| ssize_t rc = write(fildes, buf, nbyte); |
| if (rc == -1) |
| fatal("write:"); |
| return rc; |
| } |
| |
| int epwrite(int fd, void *buf, size_t nbyte, off_t offset) |
| { |
| ssize_t rc; |
| |
| rc = pwrite(fd, buf, nbyte, offset); |
| if (rc == -1) |
| fatal("pwrite:"); |
| return rc; |
| } |
| |
| void *emmap(void *addr, size_t length, int prot, int flags, |
| int fd, off_t offset) |
| { |
| void *map = mmap(addr, length, prot, flags, fd, offset); |
| if (map == MAP_FAILED) |
| fatal("mmap:"); |
| return map; |
| } |
| |
| void emunmap(void *addr, size_t length) |
| { |
| int rc = munmap(addr, length); |
| if (rc == -1) |
| fatal("munmap:"); |
| } |
| |
| void emsync(void *addr, size_t length, int flags) |
| { |
| int rc = msync(addr, length, flags); |
| if (rc == -1) |
| fatal("msync;"); |
| } |
| |