Changeset 13108f24 in mainline for kernel/generic/src/synch/spinlock.c


Ignore:
Timestamp:
2010-04-29T19:23:09Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bcb6f27
Parents:
c050399
Message:

Split spinlock_unlock() into a debug and non-debug version.

The non-debug version, spinlock_unlock_nondebug(), will likely get inlined just
as its counterpart spinlock_lock_arch(). It will not do any sanity checking.

The debug version, spinlock_unlock_debug(), will, on the other hand, not be
inlined, aiding thus the readibility of the generated assembly code. It will be
easier to spot the corresponding spinlock_lock_debug() and
spinlock_unlock_debug() pairs. It is meant to perform thorough sanity checking.

File:
1 edited

Legend:

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

    rc050399 r13108f24  
    120120}
    121121
     122/** Unlock spinlock
     123 *
     124 * Unlock spinlock.
     125 *
     126 * @param sl Pointer to spinlock_t structure.
     127 */
     128void spinlock_unlock_debug(spinlock_t *lock)
     129{
     130        ASSERT(atomic_get(&lock->val) != 0);
     131       
     132        /*
     133         * Prevent critical section code from bleeding out this way down.
     134         */
     135        CS_LEAVE_BARRIER();
     136       
     137        atomic_set(&lock->val, 0);
     138        preemption_enable();
     139}
     140
    122141#endif
    123142
Note: See TracChangeset for help on using the changeset viewer.