Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2012 The Chromium OS 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 <fcntl.h>
      6 #include <stdio.h>
      7 #include <stdlib.h>
      8 #include <unistd.h>
      9 #include <asm/unistd.h>
     10 
     11 void usage(const char *comm) {
     12   fprintf(stderr, "Usage: %s <access mode>\n", comm);
     13   fprintf(stderr, "\tAccess mode: 0-O_RDONLY, 1-O_WRONLY, 2-O_RDWR\n");
     14   return;
     15 }
     16 
     17 int main(int argc, char **argv) {
     18   if (argc < 2) {
     19     usage(argv[0]);
     20     return 1;
     21   }
     22 
     23   unsigned int access_mode = strtoul(argv[1], NULL, 0);
     24   if (access_mode < 0 || access_mode > 2) {
     25     usage(argv[0]);
     26     return 1;
     27   }
     28 
     29   char *path;
     30   int flags;
     31 
     32   switch (access_mode) {
     33     case 0:
     34       path = "/dev/zero";
     35       flags = O_RDONLY;
     36       break;
     37     case 1:
     38       path = "/dev/null";
     39       flags = O_WRONLY;
     40       break;
     41     case 2:
     42       path = "/dev/null";
     43       flags = O_RDWR;
     44       break;
     45     default:
     46       usage(argv[0]);
     47       return 1;
     48   }
     49 
     50   int fd = syscall(__NR_open, path, flags);
     51   syscall(__NR_close, fd);
     52   syscall(__NR_exit, 0);
     53 }
     54