Make the rtl8139 and orinoco drivers handle the system shutdown case
like other drivers. Also, some minor cleanups.
This commit is contained in:
parent
2dd02cc560
commit
3b37103fa3
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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 *
|
||||
*===========================================================================*/
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user