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
   }
Example #2
0
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;
   }
Example #3
0
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 );
   }
Example #4
0
ProfilerMarkerTracing::ProfilerMarkerTracing(const char* aCategory, TracingMetadata aMetaData)
  : mCategory(aCategory)
  , mMetaData(aMetaData)
{
  if (aMetaData == TRACING_EVENT_BACKTRACE) {
    SetStack(profiler_get_backtrace());
  }
}
Example #5
0
ProfilerMarkerTracing::ProfilerMarkerTracing(const char* aCategory, TracingMetadata aMetaData,
                                             ProfilerBacktrace* aCause)
  : mCategory(aCategory)
  , mMetaData(aMetaData)
{
  if (aCause) {
    SetStack(aCause);
  }
}
Example #6
0
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);
}
Example #7
0
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;
}