void interrupt far PAS_ServiceInterrupt ( void ) { #ifdef USESTACK // save stack GetStack( &oldStackSelector, &oldStackPointer ); // set our stack SetStack( StackSelector, StackPointer ); #endif irqstatus = PAS_Read( InterruptStatus ); if ( ( irqstatus & SampleBufferInterruptFlag ) == 0 ) { #ifdef USESTACK // restore stack SetStack( oldStackSelector, oldStackPointer ); #endif _chain_intr( PAS_OldInt ); } // Clear the interrupt irqstatus &= ~SampleBufferInterruptFlag; PAS_Write( InterruptStatus, irqstatus ); // send EOI to Interrupt Controller if ( PAS_Irq > 7 ) { outp( 0xA0, 0x20 ); } outp( 0x20, 0x20 ); // Keep track of current buffer PAS_CurrentDMABuffer += PAS_TransferLength; if ( PAS_CurrentDMABuffer >= PAS_DMABufferEnd ) { PAS_CurrentDMABuffer = PAS_DMABuffer; } // Call the caller's callback function if ( PAS_CallBack != NULL ) { PAS_CallBack(); } #ifdef USESTACK // restore stack SetStack( oldStackSelector, oldStackPointer ); #endif }
static void __interrupt __far TS_ServiceSchedule ( void ) { task *ptr; task *next; TS_InInterrupt = TRUE; #ifdef USESTACK // save stack GetStack( &oldStackSelector, &oldStackPointer ); // set our stack SetStack( StackSelector, StackPointer ); #endif ptr = TaskList->next; while( ptr != TaskList ) { next = ptr->next; if ( ptr->active ) { ptr->count += TaskServiceRate; //JIM // if ( ptr->count >= ptr->rate ) while( ptr->count >= ptr->rate ) { ptr->count -= ptr->rate; ptr->TaskService( ptr ); } } ptr = next; } #ifdef USESTACK // restore stack SetStack( oldStackSelector, oldStackPointer ); #endif TaskServiceCount += TaskServiceRate; if ( TaskServiceCount > 0xffffL ) { TaskServiceCount &= 0xffff; _chain_intr( OldInt8 ); } outp( 0x20,0x20 ); TS_InInterrupt = FALSE; }
static void __interrupt __far SOUNDSCAPE_ServiceInterrupt ( void ) { // save stack GetStack( &oldStackSelector, &oldStackPointer ); // set our stack SetStack( StackSelector, StackPointer ); if ( !( inp( SOUNDSCAPE_Config.WavePort + AD_STATUS ) & 0x01 ) ) { // restore stack SetStack( oldStackSelector, oldStackPointer ); // Wasn't our interrupt. Call the old one. _chain_intr( SOUNDSCAPE_OldInt ); } // clear the AD-1848 interrupt outp( SOUNDSCAPE_Config.WavePort + AD_STATUS, 0x00 ); // Keep track of current buffer SOUNDSCAPE_CurrentDMABuffer += SOUNDSCAPE_TransferLength; if ( SOUNDSCAPE_CurrentDMABuffer >= SOUNDSCAPE_DMABufferEnd ) { SOUNDSCAPE_CurrentDMABuffer = SOUNDSCAPE_DMABuffer; } // Call the caller's callback function if ( SOUNDSCAPE_CallBack != NULL ) { SOUNDSCAPE_CallBack(); } // restore stack SetStack( oldStackSelector, oldStackPointer ); // send EOI to Interrupt Controller if ( SOUNDSCAPE_Config.WaveIRQ > 7 ) { outp( 0xA0, 0x20 ); } outp( 0x20, 0x20 ); }
ProfilerMarkerTracing::ProfilerMarkerTracing(const char* aCategory, TracingMetadata aMetaData) : mCategory(aCategory) , mMetaData(aMetaData) { if (aMetaData == TRACING_EVENT_BACKTRACE) { SetStack(profiler_get_backtrace()); } }
ProfilerMarkerTracing::ProfilerMarkerTracing(const char* aCategory, TracingMetadata aMetaData, ProfilerBacktrace* aCause) : mCategory(aCategory) , mMetaData(aMetaData) { if (aCause) { SetStack(aCause); } }
void LDemonstrator::EliminateDoubles(void){ list<AttachedClauses*> __stack; for(list<AttachedClauses*>::iterator it=GetStack()->begin(); it != GetStack()->end(); ++it){ bool found=false; for(list<AttachedClauses*>::iterator it2=__stack.begin(); it2 != __stack.end(); ++it2){ if((*it)->Print_str() == (*it2)->Print_str()){ found=true; break; } } if(!found) __stack.push_back(*it); } SetStack(&__stack); }
void nraApplicationModel::MessageDispatcher(nraWeakPointer<CReconItem> ReconItem) { nraSharedPointer<CUIMessage> UIMessage; CUIAddMark* pAddMark; CUIDestroyMark* pDestroyMark; CUIMoveMark* pMoveMark; CUISetLabel* pSetLabel; CUISetSlice* pSetSlice; CUISetSlider* pSetSlider; CUISetStack* pSetStack; CUIDisable* pDisable; //queue< nraSharedPointer<CUIMessage> > MessageQueue; m_boolSemaphore = false; while(!(*ReconItem).MessageQueue.empty()) { UIMessage = (*ReconItem).MessageQueue.front(); (*ReconItem).MessageQueue.pop(); pAddMark = dynamic_cast<CUIAddMark*>(UIMessage.GetPointer()); if(pAddMark) { emit AddMark(pAddMark->GetTag(), pAddMark->GetType(), pAddMark->GetAccLabel(), pAddMark->GetX(), pAddMark->GetY()); continue; } pDestroyMark = dynamic_cast<CUIDestroyMark*>(UIMessage.GetPointer()); if(pDestroyMark) { emit DestroyMark(pDestroyMark->GetTag()); continue; } pMoveMark = dynamic_cast<CUIMoveMark*>(UIMessage.GetPointer()); if(pMoveMark) { emit MoveMark(pMoveMark->GetTag(), pMoveMark->GetX(), pMoveMark->GetY()); continue; } pSetLabel = dynamic_cast<CUISetLabel*>(UIMessage.GetPointer()); if(pSetLabel) { emit SetLabel(pSetLabel->GetTag(), pSetLabel->GetLabel()); continue; } pSetSlice = dynamic_cast<CUISetSlice*>(UIMessage.GetPointer()); if(pSetSlice) { emit SetSlice(pSetSlice->GetSlice()); continue; } pSetSlider = dynamic_cast<CUISetSlider*>(UIMessage.GetPointer()); if(pSetSlider) { emit SetSlider(pSetSlider->GetMin(),pSetSlider->GetMax(),pSetSlider->GetVal()); continue; } pSetStack = dynamic_cast<CUISetStack*>(UIMessage.GetPointer()); if(pSetStack) { emit SetStack(pSetStack->GetStack()); continue; } pDisable = dynamic_cast<CUIDisable*>(UIMessage.GetPointer()); if(pDisable) { emit Disable(); continue; } } m_boolSemaphore = true; }