Changeset 06e1e95 in mainline for kernel/generic/src/synch/rwlock.c


Ignore:
Timestamp:
2006-09-14T17:09:21Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f1d1f5d3
Parents:
e5ecc02
Message:

C99 compliant header guards (hopefully) everywhere in the kernel.
Formatting and indentation changes.
Small improvements in sparc64.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/synch/rwlock.c

    re5ecc02 r06e1e95  
    207207                rc = _mutex_lock_timeout(&rwl->exclusive, usec, flags);
    208208                switch (rc) {
    209                         case ESYNCH_WOULD_BLOCK:
    210                                 /*
    211                                 * release_spinlock() wasn't called
    212                                 */
    213                                 thread_register_call_me(NULL, NULL);
    214                                 spinlock_unlock(&rwl->lock);
    215                         case ESYNCH_TIMEOUT:
    216                         case ESYNCH_INTERRUPTED:
    217                                 /*
    218                                 * The sleep timed out.
    219                                 * We just restore interrupt priority level.
    220                                 */
    221                         case ESYNCH_OK_BLOCKED:         
    222                                 /*
    223                                 * We were woken with rwl->readers_in already incremented.
    224                                 * Note that this arrangement avoids race condition between
    225                                 * two concurrent readers. (Race is avoided if 'exclusive' is
    226                                 * locked at the same time as 'readers_in' is incremented.
    227                                 * Same time means both events happen atomically when
    228                                 * rwl->lock is held.)
    229                                 */
    230                                 interrupts_restore(ipl);
    231                                 break;
    232                         case ESYNCH_OK_ATOMIC:
    233                                 panic("_mutex_lock_timeout()==ESYNCH_OK_ATOMIC\n");
    234                                 break;
    235                         default:
    236                                 panic("invalid ESYNCH\n");
    237                                 break;
     209                case ESYNCH_WOULD_BLOCK:
     210                        /*
     211                        * release_spinlock() wasn't called
     212                        */
     213                        thread_register_call_me(NULL, NULL);
     214                        spinlock_unlock(&rwl->lock);
     215                case ESYNCH_TIMEOUT:
     216                case ESYNCH_INTERRUPTED:
     217                        /*
     218                        * The sleep timed out.
     219                        * We just restore interrupt priority level.
     220                        */
     221                case ESYNCH_OK_BLOCKED:         
     222                        /*
     223                        * We were woken with rwl->readers_in already incremented.
     224                        * Note that this arrangement avoids race condition between
     225                        * two concurrent readers. (Race is avoided if 'exclusive' is
     226                        * locked at the same time as 'readers_in' is incremented.
     227                        * Same time means both events happen atomically when
     228                        * rwl->lock is held.)
     229                        */
     230                        interrupts_restore(ipl);
     231                        break;
     232                case ESYNCH_OK_ATOMIC:
     233                        panic("_mutex_lock_timeout()==ESYNCH_OK_ATOMIC\n");
     234                        break;
     235                default:
     236                        panic("invalid ESYNCH\n");
     237                        break;
    238238                }
    239239                return rc;
Note: See TracChangeset for help on using the changeset viewer.