Changeset f00a0522 in rtems


Ignore:
Timestamp:
Feb 1, 1996, 9:54:40 PM (24 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
4f60309b
Parents:
665356af
Message:

synchronization state bugs address

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/score/src/threadq.c

    r665356af rf00a0522  
    367367  _ISR_Disable( level );
    368368
     369  the_thread_queue->sync = FALSE;
     370
    369371  switch ( the_thread_queue->sync_state ) {
    370372    case THREAD_QUEUE_NOTHING_HAPPENED:
    371       the_thread_queue->sync = FALSE;
    372373      _Chain_Append_unprotected(
    373374        &the_thread_queue->Queues.Fifo,
     
    449450
    450451    return the_thread;
    451   } else if ( the_thread_queue->sync ) {
     452  } else if ( the_thread_queue->sync &&
     453              the_thread_queue->sync_state != THREAD_QUEUE_SATISFIED ) {
    452454    the_thread_queue->sync_state = THREAD_QUEUE_SATISFIED;
    453455    _ISR_Enable( level );
     
    603605       (Thread_Control *)search_thread->Object.Node.next;
    604606  }
     607
     608  the_thread_queue->sync = FALSE;
     609
    605610  if ( the_thread_queue->sync_state != THREAD_QUEUE_NOTHING_HAPPENED )
    606611    goto syncronize;
    607 
    608   the_thread_queue->sync = FALSE;
    609612
    610613  if ( priority == search_priority )
     
    647650                         search_thread->Object.Node.previous;
    648651  }
     652
     653  the_thread_queue->sync = FALSE;
     654
    649655  if ( the_thread_queue->sync_state != THREAD_QUEUE_NOTHING_HAPPENED )
    650656    goto syncronize;
    651 
    652   the_thread_queue->sync = FALSE;
    653657
    654658  if ( priority == search_priority )
     
    756760  }
    757761
    758   if ( the_thread_queue->sync ) {
     762  if ( the_thread_queue->sync &&
     763       the_thread_queue->sync_state != THREAD_QUEUE_SATISFIED ) {
    759764    the_thread_queue->sync_state = THREAD_QUEUE_SATISFIED;
    760765    _ISR_Enable( level );
  • cpukit/score/src/threadq.c

    r665356af rf00a0522  
    367367  _ISR_Disable( level );
    368368
     369  the_thread_queue->sync = FALSE;
     370
    369371  switch ( the_thread_queue->sync_state ) {
    370372    case THREAD_QUEUE_NOTHING_HAPPENED:
    371       the_thread_queue->sync = FALSE;
    372373      _Chain_Append_unprotected(
    373374        &the_thread_queue->Queues.Fifo,
     
    449450
    450451    return the_thread;
    451   } else if ( the_thread_queue->sync ) {
     452  } else if ( the_thread_queue->sync &&
     453              the_thread_queue->sync_state != THREAD_QUEUE_SATISFIED ) {
    452454    the_thread_queue->sync_state = THREAD_QUEUE_SATISFIED;
    453455    _ISR_Enable( level );
     
    603605       (Thread_Control *)search_thread->Object.Node.next;
    604606  }
     607
     608  the_thread_queue->sync = FALSE;
     609
    605610  if ( the_thread_queue->sync_state != THREAD_QUEUE_NOTHING_HAPPENED )
    606611    goto syncronize;
    607 
    608   the_thread_queue->sync = FALSE;
    609612
    610613  if ( priority == search_priority )
     
    647650                         search_thread->Object.Node.previous;
    648651  }
     652
     653  the_thread_queue->sync = FALSE;
     654
    649655  if ( the_thread_queue->sync_state != THREAD_QUEUE_NOTHING_HAPPENED )
    650656    goto syncronize;
    651 
    652   the_thread_queue->sync = FALSE;
    653657
    654658  if ( priority == search_priority )
     
    756760  }
    757761
    758   if ( the_thread_queue->sync ) {
     762  if ( the_thread_queue->sync &&
     763       the_thread_queue->sync_state != THREAD_QUEUE_SATISFIED ) {
    759764    the_thread_queue->sync_state = THREAD_QUEUE_SATISFIED;
    760765    _ISR_Enable( level );
Note: See TracChangeset for help on using the changeset viewer.