Rev 1 | Rev 404 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 386 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | */ |
27 | */ |
28 | 28 | ||
29 | #include <synch/synch.h> |
- | |
30 | #include <synch/mutex.h> |
29 | #include <synch/mutex.h> |
31 | #include <synch/semaphore.h> |
30 | #include <synch/semaphore.h> |
- | 31 | #include <synch/synch.h> |
|
32 | 32 | ||
- | 33 | /** Initialize mutex |
|
- | 34 | * |
|
- | 35 | * Initialize mutex. |
|
- | 36 | * |
|
- | 37 | * @param mtx Mutex. |
|
- | 38 | */ |
|
33 | void mutex_initialize(mutex_t *mtx) |
39 | void mutex_initialize(mutex_t *mtx) |
34 | { |
40 | { |
35 | semaphore_initialize(&mtx->sem, 1); |
41 | semaphore_initialize(&mtx->sem, 1); |
36 | } |
42 | } |
37 | 43 | ||
- | 44 | /** Acquire mutex |
|
- | 45 | * |
|
- | 46 | * Acquire mutex. |
|
- | 47 | * Timeout mode and non-blocking mode can be requested. |
|
- | 48 | * |
|
- | 49 | * @param mxt Mutex. |
|
- | 50 | * @param usec Timeout in microseconds. |
|
- | 51 | * @param trylock Switches between blocking and non-blocking mode. |
|
- | 52 | * |
|
- | 53 | * For exact description of possible combinations of |
|
- | 54 | * 'usec' and 'trylock', see comment for waitq_sleep_timeout(). |
|
- | 55 | * |
|
- | 56 | * @return See comment for waitq_sleep_timeout(). |
|
- | 57 | */ |
|
38 | int _mutex_lock_timeout(mutex_t *mtx, __u32 usec, int trylock) |
58 | int _mutex_lock_timeout(mutex_t *mtx, __u32 usec, int trylock) |
39 | { |
59 | { |
40 | return _semaphore_down_timeout(&mtx->sem, usec, trylock); |
60 | return _semaphore_down_timeout(&mtx->sem, usec, trylock); |
41 | } |
61 | } |
42 | 62 | ||
- | 63 | /** Release mutex |
|
- | 64 | * |
|
- | 65 | * Release mutex. |
|
- | 66 | * |
|
- | 67 | * @param mtx Mutex. |
|
- | 68 | */ |
|
43 | void mutex_unlock(mutex_t *mtx) |
69 | void mutex_unlock(mutex_t *mtx) |
44 | { |
70 | { |
45 | semaphore_up(&mtx->sem); |
71 | semaphore_up(&mtx->sem); |
46 | } |
72 | } |