| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <sys/types.h> // Include something that will define __GLIBC__. | 5 #include <sys/types.h> // Include something that will define __GLIBC__. |
| 6 | 6 |
| 7 // The entire file is wrapped in this #if. We do this so this .cc file can be | 7 // The entire file is wrapped in this #if. We do this so this .cc file can be |
| 8 // compiled, even on a non-newlib build. | 8 // compiled, even on a non-newlib build. |
| 9 #if defined(__native_client__) && !defined(__GLIBC__) | 9 #if defined(__native_client__) && !defined(__GLIBC__) |
| 10 | 10 |
| 11 #include "nacl_io/kernel_wrap.h" | 11 #include "nacl_io/kernel_wrap.h" |
| 12 #include <dirent.h> | 12 #include <dirent.h> |
| 13 #include <errno.h> | 13 #include <errno.h> |
| 14 #include <irt.h> | 14 #include <irt.h> |
| 15 #include <sys/mman.h> | 15 #include <sys/mman.h> |
| 16 #include <sys/stat.h> | 16 #include <sys/stat.h> |
| 17 #include <sys/time.h> |
| 17 #include "nacl_io/kernel_intercept.h" | 18 #include "nacl_io/kernel_intercept.h" |
| 18 | 19 |
| 19 EXTERN_C_BEGIN | 20 EXTERN_C_BEGIN |
| 20 | 21 |
| 21 #define REAL(name) __nacl_irt_##name##_real | 22 #define REAL(name) __nacl_irt_##name##_real |
| 22 #define WRAP(name) __nacl_irt_##name##_wrap | 23 #define WRAP(name) __nacl_irt_##name##_wrap |
| 23 #define STRUCT_NAME(group) __libnacl_irt_##group | 24 #define STRUCT_NAME(group) __libnacl_irt_##group |
| 24 #define DECLARE_STRUCT(group) \ | 25 #define DECLARE_STRUCT(group) \ |
| 25 extern struct nacl_irt_##group STRUCT_NAME(group); | 26 extern struct nacl_irt_##group STRUCT_NAME(group); |
| 26 #define DECLARE_STRUCT_VERSION(group, version) \ | 27 #define DECLARE_STRUCT_VERSION(group, version) \ |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 } | 255 } |
| 255 | 256 |
| 256 int _real_rmdir(const char* pathname) { | 257 int _real_rmdir(const char* pathname) { |
| 257 return ENOSYS; | 258 return ENOSYS; |
| 258 } | 259 } |
| 259 | 260 |
| 260 int _real_write(int fd, const void *buf, size_t count, size_t *nwrote) { | 261 int _real_write(int fd, const void *buf, size_t count, size_t *nwrote) { |
| 261 return REAL(write)(fd, buf, count, nwrote); | 262 return REAL(write)(fd, buf, count, nwrote); |
| 262 } | 263 } |
| 263 | 264 |
| 265 uint64_t usec_since_epoch() { |
| 266 struct timeval tv; |
| 267 gettimeofday(&tv, NULL); |
| 268 return tv.tv_usec + (tv.tv_sec * 1000000); |
| 269 } |
| 264 | 270 |
| 265 void kernel_wrap_init() { | 271 void kernel_wrap_init() { |
| 266 static bool wrapped = false; | 272 static bool wrapped = false; |
| 267 | 273 |
| 268 if (!wrapped) { | 274 if (!wrapped) { |
| 269 wrapped = true; | 275 wrapped = true; |
| 270 DO_WRAP(fdio, close); | 276 DO_WRAP(fdio, close); |
| 271 DO_WRAP(fdio, dup); | 277 DO_WRAP(fdio, dup); |
| 272 DO_WRAP(fdio, dup2); | 278 DO_WRAP(fdio, dup2); |
| 273 DO_WRAP(fdio, fstat); | 279 DO_WRAP(fdio, fstat); |
| 274 DO_WRAP(fdio, getdents); | 280 DO_WRAP(fdio, getdents); |
| 275 DO_WRAP(fdio, read); | 281 DO_WRAP(fdio, read); |
| 276 DO_WRAP(fdio, seek); | 282 DO_WRAP(fdio, seek); |
| 277 DO_WRAP(fdio, write); | 283 DO_WRAP(fdio, write); |
| 278 DO_WRAP(filename, open); | 284 DO_WRAP(filename, open); |
| 279 DO_WRAP(filename, stat); | 285 DO_WRAP(filename, stat); |
| 280 DO_WRAP(memory, mmap); | 286 DO_WRAP(memory, mmap); |
| 281 DO_WRAP(memory, munmap); | 287 DO_WRAP(memory, munmap); |
| 282 } | 288 } |
| 283 } | 289 } |
| 284 | 290 |
| 285 | 291 |
| 286 EXTERN_C_END | 292 EXTERN_C_END |
| 287 | 293 |
| 288 | 294 |
| 289 #endif // defined(__native_client__) && !defined(__GLIBC__) | 295 #endif // defined(__native_client__) && !defined(__GLIBC__) |
| 290 | 296 |
| OLD | NEW |