1 : /*
2 : * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 : * Use of this source code is governed by a BSD-style license that can be
4 : * found in the LICENSE file.
5 : */
6 :
7 : #include <stdio.h>
8 :
9 : #include "native_client/src/include/nacl_base.h"
10 : #include "native_client/src/include/nacl_macros.h"
11 : #include "native_client/src/shared/platform/nacl_check.h"
12 : #include "native_client/src/shared/platform/nacl_log.h"
13 : #include "native_client/src/trusted/desc/nacl_desc_base.h"
14 : #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h"
15 : #include "native_client/src/trusted/service_runtime/sel_ldr.h"
16 : #include "native_client/src/trusted/service_runtime/nacl_all_modules.h"
17 : #include "native_client/src/trusted/service_runtime/nacl_resource.h"
18 :
19 : #define MEGABYTE (1000000)
20 :
21 : int main(void) {
22 1 : struct NaClApp ap;
23 1 : struct NaClApp *nap = ≈
24 1 : struct NaClDesc *d_null;
25 :
26 1 : NaClAllModulesInit();
27 :
28 1 : if (!NaClAppCtor(nap)) {
29 0 : NaClLog(LOG_FATAL, "NaClAppCtor failed\n");
30 0 : }
31 1 : if (!NaClResourceNaClAppInit(&nap->resources, nap)) {
32 0 : NaClLog(LOG_FATAL, "NaClResourceNaClAppInit failed\n");
33 0 : }
34 1 : d_null = NaClResourceOpen((struct NaClResource *) &nap->resources,
35 : "/dev/null",
36 : NACL_ABI_O_RDWR,
37 : 0777);
38 1 : if (NULL == d_null) {
39 0 : NaClLog(LOG_FATAL, "NaClResourceOpen failed\n");
40 0 : }
41 :
42 1 : if (NACL_VTBL(NaClDesc, d_null)->typeTag != NACL_DESC_NULL) {
43 0 : NaClLog(LOG_FATAL, "NaClResourceOpen did not return a null descriptor\n");
44 0 : }
45 1 : if ((*NACL_VTBL(NaClDesc, d_null)->Write)(d_null, NULL, MEGABYTE)
46 : != MEGABYTE) {
47 0 : NaClLog(LOG_FATAL, "Write failed\n");
48 0 : }
49 1 : if ((*NACL_VTBL(NaClDesc, d_null)->Read)(d_null, NULL, MEGABYTE)
50 : != 0) {
51 0 : NaClLog(LOG_FATAL, "Read failed\n");
52 0 : }
53 :
54 1 : printf("Passed.\n");
55 1 : return 0;
56 : }
|