1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // The Chromium build system defines __linux__ even for native client builds, 6 // so guard against __native_client__ being defined as well. 7 #if defined(WIN32) || (defined(__linux__) && !defined(__native_client__)) 8 9 #include <errno.h> 10 11 #include "nacl_io/kernel_wrap.h" 12 #include "nacl_io/kernel_wrap_real.h" 13 14 // "real" functions, i.e. the unwrapped original functions. For Windows/Linux 15 // host builds we don't wrap, so the real functions aren't accessible. In most 16 // cases, we just fail. 17 18 int _real_close(int fd) { 19 return ENOSYS; 20 } 21 22 int _real_fstat(int fd, struct stat* buf) { 23 return 0; 24 } 25 26 int _real_getdents(int fd, void* nacl_buf, size_t nacl_count, size_t* nread) { 27 return ENOSYS; 28 } 29 30 int _real_lseek(int fd, off_t offset, int whence, off_t* new_offset) { 31 return ENOSYS; 32 } 33 34 int _real_mkdir(const char* pathname, mode_t mode) { 35 return ENOSYS; 36 } 37 38 int _real_mmap(void** addr, 39 size_t length, 40 int prot, 41 int flags, 42 int fd, 43 off_t offset) { 44 return ENOSYS; 45 } 46 47 int _real_munmap(void* addr, size_t length) { 48 return ENOSYS; 49 } 50 51 int _real_open(const char* pathname, int oflag, mode_t mode, int* newfd) { 52 return ENOSYS; 53 } 54 55 int _real_open_resource(const char* file, int* fd) { 56 return ENOSYS; 57 } 58 59 int _real_read(int fd, void* buf, size_t count, size_t* nread) { 60 *nread = count; 61 return 0; 62 } 63 64 int _real_rmdir(const char* pathname) { 65 return ENOSYS; 66 } 67 68 int _real_write(int fd, const void* buf, size_t count, size_t* nwrote) { 69 int rtn = write(fd, buf, count); 70 if (rtn < 0) 71 return -1; 72 73 *nwrote = rtn; 74 return 0; 75 } 76 77 void _real_exit(int status) { 78 exit(status); 79 } 80 81 int _real_getcwd(char* pathname, size_t len) { 82 return ENOSYS; 83 } 84 85 #endif 86 87 // The Chromium build system defines __linux__ even for native client builds, 88 // so guard against __native_client__ being defined as well. 89 #if defined(__linux__) && !defined(__native_client__) 90 91 void kernel_wrap_init() { 92 } 93 94 void kernel_wrap_uninit() { 95 } 96 97 #endif 98