projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
The lock functions don't really need to disable interrupts themselves,
[pintos-anon]
/
src
/
threads
/
synch.c
diff --git
a/src/threads/synch.c
b/src/threads/synch.c
index 79dcfb78c4832f6d908add061f8977f4c4110e28..c2764bc38d1cdb3b47efb0f0a43f8d694d493947 100644
(file)
--- a/
src/threads/synch.c
+++ b/
src/threads/synch.c
@@
-192,16
+192,12
@@
lock_init (struct lock *lock)
void
lock_acquire (struct lock *lock)
{
void
lock_acquire (struct lock *lock)
{
- enum intr_level old_level;
-
ASSERT (lock != NULL);
ASSERT (!intr_context ());
ASSERT (!lock_held_by_current_thread (lock));
ASSERT (lock != NULL);
ASSERT (!intr_context ());
ASSERT (!lock_held_by_current_thread (lock));
- old_level = intr_disable ();
sema_down (&lock->semaphore);
lock->holder = thread_current ();
sema_down (&lock->semaphore);
lock->holder = thread_current ();
- intr_set_level (old_level);
}
/* Tries to acquires LOCK and returns true if successful or false
}
/* Tries to acquires LOCK and returns true if successful or false
@@
-209,22
+205,18
@@
lock_acquire (struct lock *lock)
thread.
This function will not sleep, so it may be called within an
thread.
This function will not sleep, so it may be called within an
- interupt handler. */
+ inter
r
upt handler. */
bool
lock_try_acquire (struct lock *lock)
{
bool
lock_try_acquire (struct lock *lock)
{
- enum intr_level old_level;
bool success;
ASSERT (lock != NULL);
ASSERT (!lock_held_by_current_thread (lock));
bool success;
ASSERT (lock != NULL);
ASSERT (!lock_held_by_current_thread (lock));
- old_level = intr_disable ();
success = sema_try_down (&lock->semaphore);
if (success)
lock->holder = thread_current ();
success = sema_try_down (&lock->semaphore);
if (success)
lock->holder = thread_current ();
- intr_set_level (old_level);
-
return success;
}
return success;
}
@@
-236,15
+228,11
@@
lock_try_acquire (struct lock *lock)
void
lock_release (struct lock *lock)
{
void
lock_release (struct lock *lock)
{
- enum intr_level old_level;
-
ASSERT (lock != NULL);
ASSERT (lock_held_by_current_thread (lock));
ASSERT (lock != NULL);
ASSERT (lock_held_by_current_thread (lock));
- old_level = intr_disable ();
lock->holder = NULL;
sema_up (&lock->semaphore);
lock->holder = NULL;
sema_up (&lock->semaphore);
- intr_set_level (old_level);
}
/* Returns true if the current thread holds LOCK, false
}
/* Returns true if the current thread holds LOCK, false