]> Zhao Yanbai Git Server - minix.git/commitdiff
Make the rtl8139 and orinoco drivers handle the system shutdown case
authorArun Thomas <arun@minix3.org>
Wed, 22 Apr 2009 12:42:37 +0000 (12:42 +0000)
committerArun Thomas <arun@minix3.org>
Wed, 22 Apr 2009 12:42:37 +0000 (12:42 +0000)
like other drivers. Also, some minor cleanups.

drivers/orinoco/orinoco.c
drivers/rtl8139/rtl8139.c
servers/pm/misc.c

index 338adecc6e1579a3f4fa5cb8f04cdfafa20277cb..48183db423f735ab8abbd3e9c7a44f42fa74eca1 100755 (executable)
@@ -190,7 +190,6 @@ struct {
 #define BITRATE_TABLE_SIZE (sizeof(bitrate_table) / sizeof(bitrate_table[0]))
 
 
-_PROTOTYPE (static void sig_handler, (void));
 _PROTOTYPE (static void or_writev, (message * mp, int from_int, int vectored));
 _PROTOTYPE (static void or_readv, (message * mp, int from_int, int vectored));
 _PROTOTYPE (static void or_writev_s, (message * mp, int from_int));
@@ -268,7 +267,7 @@ int main(int argc, char *argv[]) {
        else if (r != ESRCH)
                printf("orinoco: ds_retrieve_u32 failed for 'inet': %d\n", r);
 
-       while (42) {
+       while (TRUE) {
                if ((r = receive (ANY, &m)) != OK)
                        panic(__FILE__, "orinoco: receive failed", NO_NUM);
 
@@ -309,6 +308,13 @@ int main(int argc, char *argv[]) {
                case SYN_ALARM:
                        or_watchdog_f(NULL);     
                        break;           
+               case SYS_SIG:
+               {
+                       sigset_t sigset = m.NOTIFY_ARG;
+                       if ( sigismember( &sigset, SIGKSTOP ) )
+                               orinoco_stop();
+               }
+                       break;
                case HARD_INT:
                        do_hard_int();
                        if (int_event_check)
@@ -318,7 +324,6 @@ int main(int argc, char *argv[]) {
                        or_dump(&m);    
                        break;
                case PROC_EVENT:
-                       sig_handler();
                        break;
                default:
                        panic(__FILE__,"orinoco: illegal message:", m.m_type);
@@ -326,23 +331,6 @@ int main(int argc, char *argv[]) {
        }
 }
 
-/*****************************************************************************
- *                    sig_handler                                            *
- *                                                                           *
- * Handles signals to the driver.                                            *
- *****************************************************************************/
-PRIVATE void sig_handler() {
-       sigset_t sigset;
-       int sig;
-       
-       if(getsigset(&sigset) != 0) return;
-       
-       if(sigismember(&sigset, SIGTERM)) {
-               orinoco_stop();
-       }
-}
-
-
 /*****************************************************************************
  *                    check_int_events                                       *
  *                                                                           *
@@ -675,7 +663,7 @@ static int or_probe (t_or * orp) {
                just_one = FALSE;
        }
 
-       while (42) {
+       while (TRUE) {
                /* loop through the pcitab to find a maching entry. The match
                 * being between one of the values in pcitab and the 
                 * information provided by the pci bus */
@@ -712,7 +700,7 @@ static int or_probe (t_or * orp) {
        /* Get the name as advertised by pci */
        dname = pci_dev_name (vid, did);
        if (!dname)
-               dname = "unknow device";
+               dname = "unknown device";
        printf ("%s: %s (%04x/%04x) at %s\n",
                orp->or_name, dname, vid, did, pci_slot_name (devind));
 
@@ -1032,7 +1020,7 @@ static void or_writerids (hermes_t * hw, t_or * orp) {
                        setup_wepkey(orp, wepkey0);
                break;
                default:
-                       printf("unvalid key provided. Has to be 13 chars\n");
+                       printf("Invalid key provided. Has to be 13 chars\n");
                break;
        }
 }
index 836984bec5f0169fec7fd2cf40cc804958695cf0..6c223232c620feea6bf3c41a1073e80e73501661 100755 (executable)
@@ -253,7 +253,6 @@ static void my_outl(U16_t port, U32_t value) {
 #define rl_outw(port, offset, value)   (my_outw((port) + (offset), (value)))
 #define rl_outl(port, offset, value)   (my_outl((port) + (offset), (value)))
 
-_PROTOTYPE( static void sig_handler, (void)                            );
 _PROTOTYPE( static void rl_init, (message *mp)                         );
 _PROTOTYPE( static void rl_pci_conf, (void)                            );
 _PROTOTYPE( static int rl_probe, (re_t *rep)                           );
@@ -376,6 +375,13 @@ int main(int argc, char *argv[])
                         */
                        rl_watchdog_f(NULL);     
                        break;           
+               case SYS_SIG:
+               {
+                       sigset_t sigset = m.NOTIFY_ARG;
+                       if ( sigismember( &sigset, SIGKSTOP ) )
+                               rtl8139_stop();
+               }
+                       break;
                case HARD_INT:
                        do_hard_int();
                        if (int_event_check)
@@ -383,7 +389,6 @@ int main(int argc, char *argv[])
                        break ;
                case FKEY_PRESSED: rtl8139_dump(&m);            break;
                case PROC_EVENT:
-                       sig_handler();
                        break;
                default:
                        panic("rtl8139","illegal message", m.m_type);
@@ -391,23 +396,6 @@ int main(int argc, char *argv[])
        }
 }
 
-/*===========================================================================*
- *                             sig_handler                                  *
- *===========================================================================*/
-PRIVATE void sig_handler()
-{
-  sigset_t sigset;
-  int sig;
-
-  /* Try to obtain signal set from PM. */
-  if (getsigset(&sigset) != 0) return;
-
-  /* Check for known signals. */
-  if (sigismember(&sigset, SIGTERM)) {
-      rtl8139_stop();
-  }
-}
-
 /*===========================================================================*
  *                             check_int_events                             *
  *===========================================================================*/
index 681e3cbe9f780dacdace6852f09c8d67ae921837..551cac882a8dd3cc984dd142f2be231100b70db5 100644 (file)
@@ -314,7 +314,7 @@ PUBLIC int do_getprocnr()
   /* This call should be moved to DS. */
   if (mp->mp_effuid != 0)
   {
-       printf("PM: unauthorized call of do_procstat by proc %d\n",
+       printf("PM: unauthorized call of do_getprocnr by proc %d\n",
                mp->mp_endpoint);
        sys_sysctl_stacktrace(mp->mp_endpoint);
        return EPERM;