bootchartd: mounting tmpfs is Linux-specific
authorJeremie Koenig <jk@jk.fr.eu.org>
Thu, 29 Jul 2010 02:29:53 +0000 (04:29 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 29 Jul 2010 23:16:00 +0000 (01:16 +0200)
Signed-off-by: Jeremie Koenig <jk@jk.fr.eu.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
init/bootchartd.c

index a1c01641b35fd96d9bb745c1ce9c2de2632b6954..465a34979d6caf91ef82e4fc45cf551cc59fbefe 100644 (file)
@@ -6,7 +6,6 @@
 //config:config BOOTCHARTD
 //config:      bool "bootchartd"
 //config:      default y
-//config:      depends on PLATFORM_LINUX
 //config:      help
 //config:        bootchartd is commonly used to profile the boot process
 //config:        for the purpose of speeding it up. In this case, it is started
 #include "libbb.h"
 /* After libbb.h, since it needs sys/types.h on some systems */
 #include <sys/utsname.h>
-#include <sys/mount.h>
-#ifndef MS_SILENT
-# define MS_SILENT      (1 << 15)
-#endif
-#ifndef MNT_DETACH
-# define MNT_DETACH 0x00000002
+
+#ifdef __linux__
+# include <sys/mount.h>
+# ifndef MS_SILENT
+#  define MS_SILENT      (1 << 15)
+# endif
+# ifndef MNT_DETACH
+#  define MNT_DETACH 0x00000002
+# endif
 #endif
 
 #define BC_VERSION_STR "0.8"
@@ -175,6 +177,7 @@ static char *make_tempdir(void)
        char template[] = "/tmp/bootchart.XXXXXX";
        char *tempdir = xstrdup(mkdtemp(template));
        if (!tempdir) {
+#ifdef __linux__
                /* /tmp is not writable (happens when we are used as init).
                 * Try to mount a tmpfs, them cd and lazily unmount it.
                 * Since we unmount it at once, we can mount it anywhere.
@@ -192,6 +195,9 @@ static char *make_tempdir(void)
                if (umount2(try_dir, MNT_DETACH) != 0) {
                        bb_perror_msg_and_die("can't %smount tmpfs", "un");
                }
+#else
+               bb_perror_msg_and_die("can't create temporary directory");
+#endif
        } else {
                xchdir(tempdir);
        }