Make the rtl8139 and orinoco drivers handle the system shutdown case

like other drivers. Also, some minor cleanups.
This commit is contained in:
Arun Thomas 2009-04-22 12:42:37 +00:00
parent 2dd02cc560
commit 3b37103fa3
3 changed files with 19 additions and 43 deletions

View File

@ -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;
}
}

View File

@ -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 *
*===========================================================================*/

View 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;