1// Copyright (c) 2013 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 <sys/types.h>
6#include <sys/stat.h>
7#include <stdio.h>
8#include <stdlib.h>
9#include <time.h>
10#include <unistd.h>
11
12int main(int argc, char ** argv) {
13  int i = fork();
14  struct stat ft;
15  time_t ct;
16
17  if (i < 0) {
18    printf("fork error");
19    return 1;
20  }
21  if (i > 0)
22    return 0;
23
24  /* child (daemon) continues */
25  int j;
26  for (j = 0; j < sysconf(_SC_OPEN_MAX); j++)
27    close(j);
28
29  setsid(); /* obtain a new process group */
30
31  while (1) {
32    sleep(120);
33
34    stat("/sdcard/host_heartbeat", &ft);
35    time(&ct);
36    if (ct - ft.st_mtime  > 120) {
37      /* File was not touched for some time. */
38      system("su -c reboot");
39    }
40  }
41
42  return 0;
43}
44