blob: 0d902bafda90f012253a5c9b7b70ce03ff06286b [file] [log] [blame] [edit]
// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <asm/unistd.h>
void usage(const char *comm) {
fprintf(stderr, "Usage: %s <access mode>\n", comm);
fprintf(stderr, "\tAccess mode: 0-O_RDONLY, 1-O_WRONLY, 2-O_RDWR\n");
return;
}
int main(int argc, char **argv) {
if (argc < 2) {
usage(argv[0]);
return 1;
}
unsigned int access_mode = strtoul(argv[1], NULL, 0);
if (access_mode < 0 || access_mode > 2) {
usage(argv[0]);
return 1;
}
char *path;
int flags;
switch (access_mode) {
case 0:
path = "/dev/zero";
flags = O_RDONLY;
break;
case 1:
path = "/dev/null";
flags = O_WRONLY;
break;
case 2:
path = "/dev/null";
flags = O_RDWR;
break;
default:
usage(argv[0]);
return 1;
}
int fd = syscall(__NR_openat, AT_FDCWD, path, flags);
syscall(__NR_close, fd);
syscall(__NR_exit, 0);
}