Changeset 1709 in Sophya
- Timestamp:
- Oct 19, 2001, 12:21:18 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ArchTOIPipe/Kernel/toisegment.cc
r1700 r1709 219 219 LOG(cout << "BufferView " << hex << this << dec << ": read fault for " << sn << endl) 220 220 sync(); 221 pthread_mutex_lock(&(master->read_wait_mutex)); 221 222 while (sn0<0 || sn >= sn0 + segmentSize*segments.size()) { 222 wait(); 223 wait(); // must be atomic with loop test 224 pthread_mutex_unlock(&(master->read_wait_mutex)); 223 225 LOG(cout << "BufferView " << hex << this << dec << ": waiting for " << sn << endl) 224 226 sync(); 225 } 227 pthread_mutex_lock(&(master->read_wait_mutex)); 228 } 229 pthread_mutex_unlock(&(master->read_wait_mutex)); 230 226 231 LOG(cout << "BufferView " << hex << this << dec << ": resuming for " << sn 227 232 << " now data for " << sn0 << " - " << sn0 + segmentSize*segments.size() … … 234 239 } 235 240 236 void TOISegmented::BufferView::wait() { /* reader thread */237 pthread_mutex_lock(&(master->read_wait_mutex));241 void TOISegmented::BufferView::wait() { /* reader thread, master read wait lock taken */ 242 //pthread_mutex_lock(&(master->read_wait_mutex)); 238 243 waiting = true; 239 244 pthread_cond_wait(&(master->read_wait_condv), &(master->read_wait_mutex)); 240 245 waiting = false; 241 pthread_mutex_unlock(&(master->read_wait_mutex));246 //pthread_mutex_unlock(&(master->read_wait_mutex)); 242 247 } 243 248
Note:
See TracChangeset
for help on using the changeset viewer.