mirror of https://github.com/ipxe/ipxe.git
Kill off poll_interruptions(); it is lethal when we're acting as a PXE
stack or INT 13 emulator etc.pull/1/head
parent
562ab6d65c
commit
97439cb6eb
|
@ -72,20 +72,6 @@ int32_t random(void)
|
||||||
return seed;
|
return seed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
POLL INTERRUPTIONS
|
|
||||||
**************************************************************************/
|
|
||||||
void poll_interruptions(void)
|
|
||||||
{
|
|
||||||
int ch;
|
|
||||||
if ( ! as_main_program ) return;
|
|
||||||
/* If an interruption has occured restart etherboot */
|
|
||||||
if (iskey() && (ch = getchar(), (ch == K_ESC) || (ch == K_EOF) || (ch == K_INTR))) {
|
|
||||||
int state = (ch != K_INTR)? -1 : -3;
|
|
||||||
longjmp(restart_etherboot, state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
SLEEP
|
SLEEP
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
@ -94,7 +80,6 @@ void sleep(int secs)
|
||||||
unsigned long tmo;
|
unsigned long tmo;
|
||||||
|
|
||||||
for (tmo = currticks()+secs*TICKS_PER_SEC; currticks() < tmo; ) {
|
for (tmo = currticks()+secs*TICKS_PER_SEC; currticks() < tmo; ) {
|
||||||
poll_interruptions();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -883,11 +883,6 @@ int await_reply(reply_t reply, int ival, void *ptr, long timeout)
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
/* We don't have anything */
|
/* We don't have anything */
|
||||||
|
|
||||||
/* Check for abort key only if the Rx queue is empty -
|
|
||||||
* as long as we have something to process, don't
|
|
||||||
* assume that something failed. It is unlikely that
|
|
||||||
* we have no processing time left between packets. */
|
|
||||||
poll_interruptions();
|
|
||||||
/* Do the timeout after at least a full queue walk. */
|
/* Do the timeout after at least a full queue walk. */
|
||||||
if ((timeout == 0) || (currticks() > time)) {
|
if ((timeout == 0) || (currticks() > time)) {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -48,7 +48,6 @@ struct driver_interact_t driver[] = {
|
||||||
void sleepticks(int numticks ) {
|
void sleepticks(int numticks ) {
|
||||||
u_int tmo;
|
u_int tmo;
|
||||||
for (tmo = currticks()+numticks; currticks() < tmo; ) {
|
for (tmo = currticks()+numticks; currticks() < tmo; ) {
|
||||||
poll_interruptions();
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ void mdelay(unsigned int msecs)
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for(i = 0; i < msecs; i++) {
|
for(i = 0; i < msecs; i++) {
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
poll_interruptions();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +24,5 @@ void waiton_timer2(unsigned int ticks)
|
||||||
{
|
{
|
||||||
load_timer2(ticks);
|
load_timer2(ticks);
|
||||||
while(timer2_running()) {
|
while(timer2_running()) {
|
||||||
poll_interruptions();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3536,7 +3536,6 @@ e1000_transmit (struct nic *nic, const char *d, /* Destination */
|
||||||
E1000_WRITE_REG (&hw, TDT, tx_tail);
|
E1000_WRITE_REG (&hw, TDT, tx_tail);
|
||||||
while (!(txp->upper.data & E1000_TXD_STAT_DD)) {
|
while (!(txp->upper.data & E1000_TXD_STAT_DD)) {
|
||||||
udelay(10); /* give the nic a chance to write to the register */
|
udelay(10); /* give the nic a chance to write to the register */
|
||||||
poll_interruptions();
|
|
||||||
}
|
}
|
||||||
DEBUGFUNC("send end");
|
DEBUGFUNC("send end");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3153,7 +3153,6 @@ static void tg3_transmit(struct nic *nic, const char *dst_addr,
|
||||||
while((tp->hw_status->idx[0].tx_consumer != entry) &&
|
while((tp->hw_status->idx[0].tx_consumer != entry) &&
|
||||||
(tp->hw_status->idx[0].tx_consumer != PREV_TX(entry))) {
|
(tp->hw_status->idx[0].tx_consumer != PREV_TX(entry))) {
|
||||||
mdelay(10); /* give the nick a chance */
|
mdelay(10); /* give the nick a chance */
|
||||||
poll_interruptions();
|
|
||||||
if (++i > 500) { /* timeout 5s for transmit */
|
if (++i > 500) { /* timeout 5s for transmit */
|
||||||
printf("transmit timed out\n");
|
printf("transmit timed out\n");
|
||||||
tg3_halt(tp);
|
tg3_halt(tp);
|
||||||
|
|
|
@ -222,7 +222,6 @@ extern int load_block P((unsigned char *, unsigned int, unsigned int, int ));
|
||||||
extern void twiddle P((void));
|
extern void twiddle P((void));
|
||||||
extern void sleep P((int secs));
|
extern void sleep P((int secs));
|
||||||
extern void interruptible_sleep P((int secs));
|
extern void interruptible_sleep P((int secs));
|
||||||
extern void poll_interruptions P((void));
|
|
||||||
extern int strcasecmp P((const char *a, const char *b));
|
extern int strcasecmp P((const char *a, const char *b));
|
||||||
extern char *substr P((const char *a, const char *b));
|
extern char *substr P((const char *a, const char *b));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue