Changeset 5e04b48d in mainline


Ignore:
Timestamp:
2005-10-02T14:49:39Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ac4177ca
Parents:
922c7ce
Message:

Doxygen-style comments for spinlock.c.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/synch/spinlock.c

    r922c7ce r5e04b48d  
    2727 */
    2828
    29 #include <arch.h>
    30 
     29#include <synch/spinlock.h>
    3130#include <arch/atomic.h>
    3231#include <arch/barrier.h>
    33 #include <synch/spinlock.h>
     32#include <arch.h>
    3433#include <preemption.h>
    3534#include <print.h>
     35#include <debug.h>
    3636
    3737#ifdef __SMP__
    3838
     39/** Initialize spinlock
     40 *
     41 * Initialize spinlock.
     42 *
     43 * @param sl Pointer to spinlock_t structure.
     44 */
    3945void spinlock_initialize(spinlock_t *sl)
    4046{
     
    4349
    4450#ifdef DEBUG_SPINLOCK
     51/** Lock spinlock
     52 *
     53 * Lock spinlock.
     54 * This version has limitted ability to report
     55 * possible occurence of deadlock.
     56 *
     57 * @param sl Pointer to spinlock_t structure.
     58 */
    4559void spinlock_lock(spinlock_t *sl)
    4660{
     
    5569                }
    5670        }
     71
     72        /*
     73         * Prevent critical section code from bleeding out this way up.
     74         */
    5775        CS_ENTER_BARRIER();
    5876
    5977}
     78
    6079#else
     80
     81/** Lock spinlock
     82 *
     83 * Lock spinlock.
     84 *
     85 * @param sl Pointer to spinlock_t structure.
     86 */
    6187void spinlock_lock(spinlock_t *sl)
    6288{
     
    6894         */
    6995        spinlock_arch(&sl->val);
     96
     97        /*
     98         * Prevent critical section code from bleeding out this way up.
     99         */
    70100        CS_ENTER_BARRIER();
    71101}
    72102#endif
    73103
     104/** Lock spinlock conditionally
     105 *
     106 * Lock spinlock conditionally.
     107 * If the spinlock is not available at the moment,
     108 * signal failure.
     109 *
     110 * @param sl Pointer to spinlock_t structure.
     111 *
     112 * @return Zero on failure, non-zero otherwise.
     113 */
    74114int spinlock_trylock(spinlock_t *sl)
    75115{
     
    78118        preemption_disable();
    79119        rc = !test_and_set(&sl->val);
     120
     121        /*
     122         * Prevent critical section code from bleeding out this way up.
     123         */
    80124        CS_ENTER_BARRIER();
    81125
     
    86130}
    87131
     132/** Unlock spinlock
     133 *
     134 * Unlock spinlock.
     135 *
     136 * @param sl Pointer to spinlock_t structure.
     137 */
    88138void spinlock_unlock(spinlock_t *sl)
    89139{
     140        ASSERT(sl->val != 0);
     141
     142        /*
     143         * Prevent critical section code from bleeding out this way down.
     144         */
    90145        CS_LEAVE_BARRIER();
     146       
    91147        sl->val = 0;
    92148        preemption_enable();
Note: See TracChangeset for help on using the changeset viewer.