Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc

Issue 565343002: [NaCl SDK] nacl_io: Plumb through {,f}utime{,s} (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "nacl_io/kernel_intercept.h" 5 #include "nacl_io/kernel_intercept.h"
6 6
7 #include <assert.h> 7 #include <assert.h>
8 #include <errno.h> 8 #include <errno.h>
9 #include <string.h> 9 #include <string.h>
10 10
11 #include "nacl_io/kernel_proxy.h" 11 #include "nacl_io/kernel_proxy.h"
12 #include "nacl_io/kernel_wrap.h" 12 #include "nacl_io/kernel_wrap.h"
13 #include "nacl_io/kernel_wrap_real.h" 13 #include "nacl_io/kernel_wrap_real.h"
14 #include "nacl_io/log.h" 14 #include "nacl_io/log.h"
15 #include "nacl_io/osmman.h" 15 #include "nacl_io/osmman.h"
16 #include "nacl_io/ossocket.h" 16 #include "nacl_io/ossocket.h"
17 #include "nacl_io/ostime.h"
17 #include "nacl_io/pepper_interface.h" 18 #include "nacl_io/pepper_interface.h"
18 #include "nacl_io/real_pepper_interface.h" 19 #include "nacl_io/real_pepper_interface.h"
19 20
20 using namespace nacl_io; 21 using namespace nacl_io;
21 22
22 #define ON_NOSYS_RETURN(x) \ 23 #define ON_NOSYS_RETURN(x) \
23 if (!ki_is_initialized()) { \ 24 if (!ki_is_initialized()) { \
24 errno = ENOSYS; \ 25 errno = ENOSYS; \
25 return x; \ 26 return x; \
26 } 27 }
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 return s_state.kp->access(path, amode); 322 return s_state.kp->access(path, amode);
322 } 323 }
323 324
324 int ki_readlink(const char* path, char* buf, size_t count) { 325 int ki_readlink(const char* path, char* buf, size_t count) {
325 ON_NOSYS_RETURN(-1); 326 ON_NOSYS_RETURN(-1);
326 return s_state.kp->readlink(path, buf, count); 327 return s_state.kp->readlink(path, buf, count);
327 } 328 }
328 329
329 int ki_utimes(const char* path, const struct timeval times[2]) { 330 int ki_utimes(const char* path, const struct timeval times[2]) {
330 ON_NOSYS_RETURN(-1); 331 ON_NOSYS_RETURN(-1);
331 return s_state.kp->utimes(path, times); 332 // Implement in terms of utimens.
333 struct timespec ts[2];
334 ts[0].tv_sec = times[0].tv_sec;
335 ts[0].tv_nsec = times[0].tv_usec * 1000;
336 ts[1].tv_sec = times[1].tv_sec;
337 ts[1].tv_nsec = times[1].tv_usec * 1000;
338 return s_state.kp->utimens(path, ts);
339 }
340
341 int ki_futimes(int fd, const struct timeval times[2]) {
342 ON_NOSYS_RETURN(-1);
343 // Implement in terms of futimens.
344 struct timespec ts[2];
345 ts[0].tv_sec = times[0].tv_sec;
346 ts[0].tv_nsec = times[0].tv_usec * 1000;
347 ts[1].tv_sec = times[1].tv_sec;
348 ts[1].tv_nsec = times[1].tv_usec * 1000;
349 return s_state.kp->futimens(fd, ts);
332 } 350 }
333 351
334 void* ki_mmap(void* addr, 352 void* ki_mmap(void* addr,
335 size_t length, 353 size_t length,
336 int prot, 354 int prot,
337 int flags, 355 int flags,
338 int fd, 356 int fd,
339 off_t offset) { 357 off_t offset) {
340 ON_NOSYS_RETURN(MAP_FAILED); 358 ON_NOSYS_RETURN(MAP_FAILED);
341 return s_state.kp->mmap(addr, length, prot, flags, fd, offset); 359 return s_state.kp->mmap(addr, length, prot, flags, fd, offset);
(...skipping 29 matching lines...) Expand all
371 return s_state.kp->fchown(fd, owner, group); 389 return s_state.kp->fchown(fd, owner, group);
372 } 390 }
373 391
374 int ki_lchown(const char* path, uid_t owner, gid_t group) { 392 int ki_lchown(const char* path, uid_t owner, gid_t group) {
375 ON_NOSYS_RETURN(-1); 393 ON_NOSYS_RETURN(-1);
376 return s_state.kp->lchown(path, owner, group); 394 return s_state.kp->lchown(path, owner, group);
377 } 395 }
378 396
379 int ki_utime(const char* filename, const struct utimbuf* times) { 397 int ki_utime(const char* filename, const struct utimbuf* times) {
380 ON_NOSYS_RETURN(-1); 398 ON_NOSYS_RETURN(-1);
381 return s_state.kp->utime(filename, times); 399 // Implement in terms of utimens.
400 struct timespec ts[2];
401 ts[0].tv_sec = times->actime;
402 ts[0].tv_nsec = 0;
403 ts[1].tv_sec = times->modtime;
404 ts[1].tv_nsec = 0;
405 return s_state.kp->utimens(filename, ts);
406 }
407
408 int ki_futimens(int fd, const struct timespec times[2]) {
409 ON_NOSYS_RETURN(-1);
410 return s_state.kp->futimens(fd, times);
382 } 411 }
383 412
384 int ki_poll(struct pollfd* fds, nfds_t nfds, int timeout) { 413 int ki_poll(struct pollfd* fds, nfds_t nfds, int timeout) {
385 return s_state.kp->poll(fds, nfds, timeout); 414 return s_state.kp->poll(fds, nfds, timeout);
386 } 415 }
387 416
388 int ki_select(int nfds, 417 int ki_select(int nfds,
389 fd_set* readfds, 418 fd_set* readfds,
390 fd_set* writefds, 419 fd_set* writefds,
391 fd_set* exceptfds, 420 fd_set* exceptfds,
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 int ki_socket(int domain, int type, int protocol) { 612 int ki_socket(int domain, int type, int protocol) {
584 ON_NOSYS_RETURN(-1); 613 ON_NOSYS_RETURN(-1);
585 return s_state.kp->socket(domain, type, protocol); 614 return s_state.kp->socket(domain, type, protocol);
586 } 615 }
587 616
588 int ki_socketpair(int domain, int type, int protocol, int* sv) { 617 int ki_socketpair(int domain, int type, int protocol, int* sv) {
589 ON_NOSYS_RETURN(-1); 618 ON_NOSYS_RETURN(-1);
590 return s_state.kp->socketpair(domain, type, protocol, sv); 619 return s_state.kp->socketpair(domain, type, protocol, sv);
591 } 620 }
592 #endif // PROVIDES_SOCKET_API 621 #endif // PROVIDES_SOCKET_API
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698