⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 C
字号:
/* $Id: misc.c,v 1.18 2000/08/26 02:38:03 anton Exp $ * misc.c:  Miscellaneous prom functions that don't belong *          anywhere else. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */#include <linux/config.h>#include <linux/types.h>#include <linux/kernel.h>#include <linux/sched.h>#include <asm/openprom.h>#include <asm/oplib.h>#include <asm/auxio.h>extern void restore_current(void);spinlock_t prom_lock = SPIN_LOCK_UNLOCKED;/* Reset and reboot the machine with the command 'bcommand'. */voidprom_reboot(char *bcommand){	unsigned long flags;	spin_lock_irqsave(&prom_lock, flags);	(*(romvec->pv_reboot))(bcommand);	/* Never get here. */	restore_current();	spin_unlock_irqrestore(&prom_lock, flags);}/* Forth evaluate the expression contained in 'fstring'. */voidprom_feval(char *fstring){	unsigned long flags;	if(!fstring || fstring[0] == 0)		return;	spin_lock_irqsave(&prom_lock, flags);	if(prom_vers == PROM_V0)		(*(romvec->pv_fortheval.v0_eval))(strlen(fstring), fstring);	else		(*(romvec->pv_fortheval.v2_eval))(fstring);	restore_current();	spin_unlock_irqrestore(&prom_lock, flags);}/* We want to do this more nicely some day. */#ifdef CONFIG_SUN_CONSOLEextern void (*prom_palette)(int);extern int serial_console;#endif/* Drop into the prom, with the chance to continue with the 'go' * prom command. */voidprom_cmdline(void){	extern void kernel_enter_debugger(void);	extern void install_obp_ticker(void);	extern void install_linux_ticker(void);	unsigned long flags;    	kernel_enter_debugger();#ifdef CONFIG_SUN_CONSOLE	if(!serial_console && prom_palette)		prom_palette (1);#endif	install_obp_ticker();	spin_lock_irqsave(&prom_lock, flags);	(*(romvec->pv_abort))();	restore_current();	spin_unlock_irqrestore(&prom_lock, flags);	install_linux_ticker();#ifdef CONFIG_SUN_AUXIO	TURN_ON_LED;#endif#ifdef CONFIG_SUN_CONSOLE	if(!serial_console && prom_palette)		prom_palette (0);#endif}/* Drop into the prom, but completely terminate the program. * No chance of continuing. */voidprom_halt(void){	unsigned long flags;again:	spin_lock_irqsave(&prom_lock, flags);	(*(romvec->pv_halt))();	/* Never get here. */	restore_current();	spin_unlock_irqrestore(&prom_lock, flags);	goto again; /* PROM is out to get me -DaveM */}typedef void (*sfunc_t)(void);/* Set prom sync handler to call function 'funcp'. */voidprom_setsync(sfunc_t funcp){	if(!funcp) return;	*romvec->pv_synchook = funcp;}/* Get the idprom and stuff it into buffer 'idbuf'.  Returns the * format type.  'num_bytes' is the number of bytes that your idbuf * has space for.  Returns 0xff on error. */unsigned charprom_get_idprom(char *idbuf, int num_bytes){	int len;	len = prom_getproplen(prom_root_node, "idprom");	if((len>num_bytes) || (len==-1)) return 0xff;	if(!prom_getproperty(prom_root_node, "idprom", idbuf, num_bytes))		return idbuf[0];	return 0xff;}/* Get the major prom version number. */intprom_version(void){	return romvec->pv_romvers;}/* Get the prom plugin-revision. */intprom_getrev(void){	return prom_rev;}/* Get the prom firmware print revision. */intprom_getprev(void){	return prom_prev;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -