blob: 5a7c755ffba3c990363b757b8031a132f69a1232 [file] [log] [blame]
Eric Andersenc4996011999-10-20 22:08:37 +00001/*
2 * Mini update implementation for busybox
3 *
4 *
5 * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
Eric Andersencc8ed391999-10-05 16:24:54 +000023#include "internal.h"
24#include <linux/unistd.h>
25
Eric Andersencc8ed391999-10-05 16:24:54 +000026#if defined(__GLIBC__)
27#include <sys/kdaemon.h>
28#else
29_syscall2(int, bdflush, int, func, int, data);
30#endif /* __GLIBC__ */
31
32extern int
Eric Andersen703c62d1999-10-18 21:31:00 +000033update_main(int argc, char** argv)
Eric Andersencc8ed391999-10-05 16:24:54 +000034{
35 /*
36 * Update is actually two daemons, bdflush and update.
37 */
38 int pid;
39
40 pid = fork();
41 if ( pid < 0 )
42 return pid;
43 else if ( pid == 0 ) {
44 /*
45 * This is no longer necessary since 1.3.5x, but it will harmlessly
46 * exit if that is the case.
47 */
48 strcpy(argv[0], "bdflush (update)");
49 argv[1] = 0;
50 argv[2] = 0;
51 bdflush(1, 0);
52 _exit(0);
53 }
54 pid = fork();
55 if ( pid < 0 )
56 return pid;
57 else if ( pid == 0 ) {
58 argv[0] = "update";
59 for ( ; ; ) {
60 sync();
61 sleep(30);
62 }
63 }
64
65 return 0;
66}