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 18int _real_close(int fd) { 19 return ENOSYS; 20} 21 22int _real_fstat(int fd, struct stat* buf) { 23 return 0; 24} 25 26int _real_getdents(int fd, void* nacl_buf, size_t nacl_count, size_t* nread) { 27 return ENOSYS; 28} 29 30int _real_lseek(int fd, off_t offset, int whence, off_t* new_offset) { 31 return ENOSYS; 32} 33 34int _real_mkdir(const char* pathname, mode_t mode) { 35 return ENOSYS; 36} 37 38int _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 47int _real_munmap(void* addr, size_t length) { 48 return ENOSYS; 49} 50 51int _real_open(const char* pathname, int oflag, mode_t mode, int* newfd) { 52 return ENOSYS; 53} 54 55int _real_open_resource(const char* file, int* fd) { 56 return ENOSYS; 57} 58 59int _real_read(int fd, void* buf, size_t count, size_t* nread) { 60 *nread = count; 61 return 0; 62} 63 64int _real_rmdir(const char* pathname) { 65 return ENOSYS; 66} 67 68int _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 77void _real_exit(int status) { 78 exit(status); 79} 80 81int _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 91void kernel_wrap_init() { 92} 93 94void kernel_wrap_uninit() { 95} 96 97#endif 98