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

📄 generic_poll.c

📁 MIPS处理器的bootloader,龙芯就是用的修改过的PMON2
💻 C
字号:
/*	$Id: generic_poll.c,v 1.5 2003/06/11 14:49:10 pefo Exp $ *//* * Copyright (c) 2001 Opsycon AB  (www.opsycon.se) *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by Opsycon AB, Sweden. * 4. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */#include <sys/types.h>#include <stdio.h>#include <sys/device.h>#include <stdlib.h>#include <sys/time.h>#include <machine/cpu.h>#include <machine/pio.h>#include <pmon.h>extern volatile struct timeval time;volatile int spl;int toggle;struct poll_handle {	struct poll_handle *next;	int	level;	int	(*func) __P((void *));	void	*arg;};struct poll_handle *poll_list;void *tgt_poll_register(level, func, arg)	 int level;	 int(*func) __P((void *));	 void *arg;{	struct poll_handle *newpoll;	newpoll = malloc(sizeof(struct poll_handle));	if(newpoll == NULL) {		printf("tgt_poll_register failed!");		return(NULL);	}	newpoll->level = level;	newpoll->func = func;	newpoll->arg = arg;	newpoll->next = poll_list;	poll_list = newpoll;	return(newpoll);}voidtgt_poll(){	struct poll_handle *nextpoll;	if(spl != 0) {		return;	}	spl = 7;	nextpoll = poll_list;	while(nextpoll) {		(*nextpoll->func)(nextpoll->arg);		nextpoll = nextpoll->next;	}#if defined(TGT_TOGGLE)	if (toggle) {		if (time.tv_usec < 500000) {			tgt_toggle(1);			toggle = 0;		}	}	else {		if (time.tv_usec >= 500000) {			tgt_toggle(0);			toggle = 1;		}	}#endif	spl = 0;}

⌨️ 快捷键说明

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