Changeset 1262
- Timestamp:
- 06/21/08 04:24:17 (13 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/libffado-2.0/src/libieee1394/IsoHandlerManager.cpp
r1247 r1262 320 320 struct timespec ts; 321 321 int result; 322 long long int timeout_nsec = ISOHANDLERMANAGER_ISO_TASK_WAIT_TIMEOUT_USECS * 1000LL; 322 323 323 324 if (clock_gettime(CLOCK_REALTIME, &ts) == -1) { … … 325 326 return eAR_Error; 326 327 } 327 long long int timeout_nsec=0; 328 int timeout_sec = 0; 329 330 timeout_nsec = ISOHANDLERMANAGER_ISO_TASK_WAIT_TIMEOUT_USECS * 1000LL; 331 timeout_sec = 0; 332 while(timeout_nsec >= 1000000000LL) { 333 timeout_sec += 1; 334 timeout_nsec -= 1000000000LL; 335 } 328 336 329 ts.tv_nsec += timeout_nsec; 337 ts.tv_sec += timeout_sec; 330 while(ts.tv_nsec >= 1000000000LL) { 331 ts.tv_sec += 1; 332 ts.tv_nsec -= 1000000000LL; 333 } 338 334 339 335 result = sem_timedwait(&m_activity_semaphore, &ts); … … 350 346 this, result); 351 347 return eAR_Interrupted; 348 } else if (errno == EINVAL) { 349 debugError("(%p) sem_timedwait error (result=%d errno=EINVAL)\n", 350 this, result); 351 debugError("(%p) timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n", 352 this, timeout_nsec, ts.tv_sec, ts.tv_nsec); 353 return eAR_Error; 352 354 } else { 353 355 debugError("(%p) sem_timedwait error (result=%d errno=%d)\n", 354 356 this, result, errno); 355 debugError("(%p) timeout_ sec=%d timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n",356 this, timeout_ sec, timeout_nsec, ts.tv_sec, ts.tv_nsec);357 debugError("(%p) timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n", 358 this, timeout_nsec, ts.tv_sec, ts.tv_nsec); 357 359 return eAR_Error; 358 360 } branches/libffado-2.0/src/libstreaming/StreamProcessorManager.cpp
r1165 r1262 123 123 int result; 124 124 125 if (clock_gettime(CLOCK_REALTIME, &ts) == -1) {126 debugError("clock_gettime failed\n");127 return eAR_Error;128 }129 125 long long int timeout_nsec=0; 130 int timeout_sec = 0;131 126 if (m_activity_wait_timeout_usec >= 0) { 132 127 timeout_nsec = m_activity_wait_timeout_usec * 1000LL; 133 timeout_sec = 0; 134 while(timeout_nsec >= 1000000000LL) {135 timeout_sec += 1;136 timeout_nsec -= 1000000000LL;128 129 if (clock_gettime(CLOCK_REALTIME, &ts) == -1) { 130 debugError("clock_gettime failed\n"); 131 return eAR_Error; 137 132 } 138 133 ts.tv_nsec += timeout_nsec; 139 ts.tv_sec += timeout_sec; 134 while(ts.tv_nsec >= 1000000000LL) { 135 ts.tv_sec += 1; 136 ts.tv_nsec -= 1000000000LL; 137 } 140 138 } 141 139 … … 157 155 this, result); 158 156 return eAR_Interrupted; 157 } else if (errno == EINVAL) { 158 debugError("(%p) sem_[timed]wait error (result=%d errno=EINVAL)\n", 159 this, result); 160 debugError("(%p) timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n", 161 this, timeout_nsec, ts.tv_sec, ts.tv_nsec); 162 return eAR_Error; 159 163 } else { 160 164 debugError("(%p) sem_[timed]wait error (result=%d errno=%d)\n", 161 165 this, result, errno); 162 debugError("(%p) timeout_ sec=%d timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n",163 this, timeout_ sec, timeout_nsec, ts.tv_sec, ts.tv_nsec);166 debugError("(%p) timeout_nsec=%lld ts.sec=%d ts.nsec=%lld\n", 167 this, timeout_nsec, ts.tv_sec, ts.tv_nsec); 164 168 return eAR_Error; 165 169 } … … 318 322 return false; 319 323 } 324 325 // set the activity timeout value to two periods worth of usecs. 326 // since we can expect activity once every period, but we might have some 327 // offset, the safe value is two periods. 328 int timeout_usec = 2*1000LL * 1000LL * m_period / m_nominal_framerate; 329 debugOutput(DEBUG_LEVEL_VERBOSE, "setting activity timeout to %d\n", timeout_usec); 330 setActivityWaitTimeoutUsec(timeout_usec); 331 320 332 return true; 321 333 } branches/libffado-2.0/src/libstreaming/StreamProcessorManager.h
r1045 r1262 95 95 void setNbBuffers(unsigned int nb_buffers) 96 96 {m_nb_buffers = nb_buffers;}; 97 int getNbBuffers()97 unsigned int getNbBuffers() 98 98 {return m_nb_buffers;}; 99 100 // this is the amount of usecs we wait before an activity 101 // timeout occurs. 102 void setActivityWaitTimeoutUsec(int usec) 103 {m_activity_wait_timeout_usec = usec;}; 104 int getActivityWaitTimeoutUsec() 105 {return m_activity_wait_timeout_usec;}; 99 106 100 107 int getPortCount(enum Port::E_PortType, enum Port::E_Direction);