Esempio n. 1
0
	inline void losetime_in(void) {
		reset_worktime_percentage_real();
#if MC_DPI_TICKS_WAIT == 1
		ticks_wait(ff_node::TICKS2WAIT);
#else
		sleepns(NS2WAIT);
#endif
	}
Esempio n. 2
0
 /** 
  * offfload the given task to the pipeline 
  */
 inline bool offload(void * task,
                     unsigned int retry=((unsigned int)-1),
                     unsigned int ticks=ff_node::TICKS2WAIT) { 
     FFBUFFER * inbuffer = get_in_buffer();
     if (inbuffer) {
         for(unsigned int i=0;i<retry;++i) {
             if (inbuffer->push(task)) return true;
             ticks_wait(ticks);
         }     
         return false;
     }
     
     if (!has_input_channel) 
         error("PIPE: accelerator is not set, offload not available\n");
     else
         error("PIPE: input buffer creation failed\n");
     return false;
 }    
Esempio n. 3
0
 /**
  *  It loads results. If \p false, EOS arrived or too many retries. If \p
  *  true, there is a new value
  */
 inline bool load_result(void ** task, 
                         unsigned int retry=((unsigned int)-1),
                         unsigned int ticks=ff_node::TICKS2WAIT) {
     FFBUFFER * outbuffer = get_out_buffer();
     if (outbuffer) {
         for(unsigned int i=0;i<retry;++i) {
             if (outbuffer->pop(task)) {
                 if ((*task != (void *)FF_EOS)) return true;
                 else return false;
             }
             ticks_wait(ticks);
         }     
         return false;
     }
     
     if (!has_input_channel) 
         error("PIPE: accelerator is not set, offload not available");
     else
         error("PIPE: output buffer not created");
     return false;
 }