projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed grammar/typo
[pintos-anon]
/
src
/
threads
/
synch.c
diff --git
a/src/threads/synch.c
b/src/threads/synch.c
index 79dcfb78c4832f6d908add061f8977f4c4110e28..317c68ad501301538f47a697df7a8eaf02d4e077 100644
(file)
--- a/
src/threads/synch.c
+++ b/
src/threads/synch.c
@@
-55,8
+55,8
@@
sema_init (struct semaphore *sema, unsigned value)
This function may sleep, so it must not be called within an
interrupt handler. This function may be called with
This function may sleep, so it must not be called within an
interrupt handler. This function may be called with
- interrupts disabled, but i
nterrupts will be turned back on if
-
we need to sleep
. */
+ interrupts disabled, but i
f it sleeps then the next scheduled
+
thread will probably turn interrupts back on
. */
void
sema_down (struct semaphore *sema)
{
void
sema_down (struct semaphore *sema)
{
@@
-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