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

Side by Side Diff: components/nacl/loader/nonsfi/irt_clock.cc

Issue 1409633002: Non-SFI mode: Remove old Non-SFI code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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
(Empty)
1 // Copyright 2014 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 #include <errno.h>
6 #include <time.h>
7
8 #include "components/nacl/loader/nonsfi/abi_conversion.h"
9 #include "components/nacl/loader/nonsfi/irt_interfaces.h"
10 #include "native_client/src/trusted/service_runtime/include/sys/time.h"
11
12 namespace nacl {
13 namespace nonsfi {
14 namespace {
15
16 bool NaClAbiClockIdToClockId(nacl_irt_clockid_t nacl_clk_id,
17 clockid_t* host_clk_id) {
18 switch (nacl_clk_id) {
19 case NACL_ABI_CLOCK_REALTIME:
20 *host_clk_id = CLOCK_REALTIME;
21 break;
22 case NACL_ABI_CLOCK_MONOTONIC:
23 *host_clk_id = CLOCK_MONOTONIC;
24 break;
25 case NACL_ABI_CLOCK_PROCESS_CPUTIME_ID:
26 *host_clk_id = CLOCK_PROCESS_CPUTIME_ID;
27 break;
28 case NACL_ABI_CLOCK_THREAD_CPUTIME_ID:
29 *host_clk_id = CLOCK_THREAD_CPUTIME_ID;
30 break;
31 default:
32 // Unknown clock id.
33 return false;
34 }
35 return true;
36 }
37
38 int IrtClockGetRes(nacl_irt_clockid_t clk_id, struct nacl_abi_timespec* res) {
39 clockid_t host_clk_id;
40 if (!NaClAbiClockIdToClockId(clk_id, &host_clk_id))
41 return EINVAL;
42
43 struct timespec host_res;
44 if (clock_getres(host_clk_id, &host_res))
45 return errno;
46
47 // clock_getres() requires a NULL check but clock_gettime() doesn't.
48 if (res)
49 TimeSpecToNaClAbiTimeSpec(host_res, res);
50 return 0;
51 }
52
53 int IrtClockGetTime(nacl_irt_clockid_t clk_id, struct nacl_abi_timespec* tp) {
54 clockid_t host_clk_id;
55 if (!NaClAbiClockIdToClockId(clk_id, &host_clk_id))
56 return EINVAL;
57
58 struct timespec host_tp;
59 if (clock_gettime(host_clk_id, &host_tp))
60 return errno;
61
62 TimeSpecToNaClAbiTimeSpec(host_tp, tp);
63 return 0;
64 }
65
66 } // namespace
67
68 // Cast away the distinction between host types and NaCl ABI types.
69 const nacl_irt_clock kIrtClock = {
70 reinterpret_cast<int(*)(nacl_irt_clockid_t, struct timespec*)>(
71 IrtClockGetRes),
72 reinterpret_cast<int(*)(nacl_irt_clockid_t, struct timespec*)>(
73 IrtClockGetTime),
74 };
75
76 } // namespace nonsfi
77 } // namespace nacl
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698