Changeset 08a19ba in mainline for kernel/generic/include/synch/mutex.h


Ignore:
Timestamp:
2008-06-23T18:44:48Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1a1744e
Parents:
deaf8d5
Message:

Support for active mutexes. Active mutexes implement busy waiting, pretty much
in the same way as spinlocks, but can be passed to condition variables, which is
the motivation for this enhancement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/synch/mutex.h

    rdeaf8d5 r08a19ba  
    4040#include <synch/synch.h>
    4141
     42typedef enum {
     43        MUTEX_PASSIVE,
     44        MUTEX_ACTIVE
     45} mutex_type_t;
     46
    4247typedef struct {
     48        mutex_type_t type;
    4349        semaphore_t sem;
    4450} mutex_t;
    4551
    46 #define mutex_lock(mtx) \
     52#define mutex_lock(mtx)                 \
    4753        _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE)
    48 #define mutex_trylock(mtx) \
     54#define mutex_trylock(mtx)              \
    4955        _mutex_lock_timeout((mtx), SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NON_BLOCKING)
    50 #define mutex_lock_timeout(mtx, usec) \
     56#define mutex_lock_timeout(mtx, usec)   \
    5157        _mutex_lock_timeout((mtx), (usec), SYNCH_FLAGS_NON_BLOCKING)
    5258
    53 extern void mutex_initialize(mutex_t *mtx);
    54 extern int _mutex_lock_timeout(mutex_t *mtx, uint32_t usec, int flags);
    55 extern void mutex_unlock(mutex_t *mtx);
     59extern void mutex_initialize(mutex_t *, mutex_type_t);
     60extern int _mutex_lock_timeout(mutex_t *, uint32_t, int);
     61extern void mutex_unlock(mutex_t *);
    5662
    5763#endif
Note: See TracChangeset for help on using the changeset viewer.