projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow Bochs users to reboot by clicking the "user" button.
[pintos-anon]
/
src
/
threads
/
synch.c
diff --git
a/src/threads/synch.c
b/src/threads/synch.c
index 5ec14abf8d4dfa11851e02917a1d030540a560f0..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
@@
-213,18
+209,14
@@
lock_acquire (struct lock *lock)
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