]> Zhao Yanbai Git Server - minix.git/commitdiff
mmc:Ignore SIGTERM if open count > 0 28/328/2
authorKees Jongenburger <keesj@minix3.org>
Wed, 13 Feb 2013 16:54:40 +0000 (17:54 +0100)
committerKees Jongenburger <keesj@minix3.org>
Thu, 14 Feb 2013 09:20:21 +0000 (10:20 +0100)
Change-Id: I996497335b4209ff7ef95dfa977d97e5557456e9

drivers/mmc/mmcblk.c

index d2da50a3fc8ad5d275725c96979b8db2d1214e07..e2ed76b9cb3650f0ea3289cd2223d5d82ade5a43 100644 (file)
@@ -8,7 +8,6 @@
 #include <minix/drvlib.h>
 #include <minix/minlib.h>
 
-
 /* system headers */
 #include <sys/ioc_disk.h>      /* disk IOCTL's */
 
@@ -595,12 +594,25 @@ block_system_event_cb(int type, sef_init_info_t * info)
 static void
 block_signal_handler_cb(int signo)
 {
+       struct sd_slot *slot;
+
        mmc_log_debug(&log, "System event framework signal handler sig(%d)\n",
            signo);
        /* Only check for termination signal, ignore anything else. */
        if (signo != SIGTERM)
                return;
-       // FIXME shutdown
+
+       /* we only have a single slot and need an open count idealy we should
+        * iterate over the card to determine the open count */
+       slot = get_slot(0);
+       assert(slot);
+       if (slot->card.open_ct > 0) {
+               mmc_log_debug(&log, "Not responding to SIGTERM (open count=%d)\n",
+                   slot->card.open_ct);
+               return;
+       }
+
+       mmc_log_info(&log, "MMC driver exit");
        exit(0);
 }