X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fsynch.h;h=ad8423891bad260215a77d0274dddfd75c960962;hb=63b811f31e550794fbbcaa75ea51b41023178f28;hp=e64bc6da2abf4c7591d940f19be4fab14ab591df;hpb=750d21936d284127e265d050ccbce76fca1ece1a;p=pintos-anon diff --git a/src/threads/synch.h b/src/threads/synch.h index e64bc6d..ad84238 100644 --- a/src/threads/synch.h +++ b/src/threads/synch.h @@ -1,14 +1,15 @@ -#ifndef HEADER_SYNCH_H -#define HEADER_SYNCH_H 1 +#ifndef THREADS_SYNCH_H +#define THREADS_SYNCH_H +#include #include -#include "list.h" +/* A counting semaphore. */ struct semaphore { - char name[16]; - unsigned value; - struct list waiters; + char name[16]; /* Name (for debugging purposes only). */ + unsigned value; /* Current value. */ + struct list waiters; /* List of waiting threads. */ }; void sema_init (struct semaphore *, unsigned value, const char *); @@ -17,11 +18,11 @@ void sema_up (struct semaphore *); const char *sema_name (const struct semaphore *); void sema_self_test (void); +/* Lock. */ struct lock { - char name[16]; - struct thread *holder; - struct semaphore semaphore; + struct thread *holder; /* Thread holding lock (for debugging). */ + struct semaphore semaphore; /* Binary semaphore controlling access. */ }; void lock_init (struct lock *, const char *); @@ -30,10 +31,11 @@ void lock_release (struct lock *); bool lock_held_by_current_thread (const struct lock *); const char *lock_name (const struct lock *); +/* Condition variable. */ struct condition { - char name[16]; - struct list waiters; + char name[16]; /* Name (for debugging purposes only). */ + struct list waiters; /* List of waiting threads. */ }; void cond_init (struct condition *, const char *); @@ -42,4 +44,4 @@ void cond_signal (struct condition *, struct lock *); void cond_broadcast (struct condition *, struct lock *); const char *cond_name (const struct condition *); -#endif /* synch.h */ +#endif /* threads/synch.h */