/*
 * Copyright (c) 2015 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 <stdlib.h>
#include <unistd.h>

#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(void) {
  char *buf;
  int fd, ret;
  unsigned int i;

  fd = open("/dev/zero", O_RDONLY);
  if (fd < 0)
    return 1;

  buf = mmap(NULL, 4096, PROT_READ, MAP_PRIVATE, fd, 0);
  if (buf == (char *)-1)
    return 2;

  for (i = 0; i < 4096; i++) {
    if (buf[i] != 0)
      return 3;
  }

  ret = munmap(buf, 4096);
  if (ret < 0)
    return 4;

  ret = close(fd);
  if (ret < 0)
    return 5;

  return 0;
}
