Browse Source

Better handle empty_detected flag

Suren A. Chilingaryan 9 years ago
parent
commit
c2331dd0ca
1 changed files with 4 additions and 1 deletions
  1. 4 1
      dma/ipe.c

+ 4 - 1
dma/ipe.c

@@ -405,6 +405,9 @@ int dma_ipe_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin
 	memcpy(&cur, &start, sizeof(struct timeval));
 	while (((*last_written_addr_ptr == 0)||(ctx->last_read_addr == (*last_written_addr_ptr)))&&((wait == PCILIB_TIMEOUT_INFINITE)||(((cur.tv_sec - start.tv_sec)*1000000 + (cur.tv_usec - start.tv_usec)) < wait))) {
 	    usleep(10);
+#ifdef IPEDMA_SUPPORT_EMPTY_DETECTED
+	    if (*empty_detected_ptr) break;
+#endif /* IPEDMA_SUPPORT_EMPTY_DETECTED */
 	    gettimeofday(&cur, NULL);
 	}
 	
@@ -412,7 +415,7 @@ int dma_ipe_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin
 	if ((ctx->last_read_addr == (*last_written_addr_ptr))||(*last_written_addr_ptr == 0)) {
 #ifdef IPEDMA_SUPPORT_EMPTY_DETECTED
 //# ifdef IPEDMA_DEBUG
-	    if ((wait)&&(*last_written_addr_ptr))
+	    if ((wait)&&(*last_written_addr_ptr)&&(!*empty_detected_ptr))
 		pcilib_warning("The empty_detected flag is not set, but no data arrived within %lu us\n", wait);
 //# endif /* IPEDMA_DEBUG */
 #endif /* IPEDMA_SUPPORT_EMPTY_DETECTED */