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
	 Arun Thomas
						Arun Thomas