|
@@ -148,24 +148,25 @@ V(struct semaphore *sem)
|
|
|
// Lock.
|
|
|
|
|
|
struct lock *
|
|
|
-lock_create(const char *name)
|
|
|
+lock_create(const char * name)
|
|
|
{
|
|
|
- struct lock *lock;
|
|
|
-
|
|
|
- lock = kmalloc(sizeof(struct lock));
|
|
|
- if (lock == NULL) {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- lock->lk_name = kstrdup(name);
|
|
|
- if (lock->lk_name == NULL) {
|
|
|
- kfree(lock);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- // add stuff here as needed
|
|
|
-
|
|
|
- return lock;
|
|
|
+ struct lock * lock = kmalloc(sizeof(struct lock));
|
|
|
+
|
|
|
+ if (lock == NULL)
|
|
|
+ {
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
+ lock->lk_name = kstrdup(name);
|
|
|
+
|
|
|
+ struct wchan * wc = wc_create(name);
|
|
|
+
|
|
|
+ if (lock->lk_name == NULL || wc == NULL)
|
|
|
+ {
|
|
|
+ kfree(lock);
|
|
|
+ kfree(wc);
|
|
|
+
|
|
|
+ return lock;
|
|
|
}
|
|
|
|
|
|
void
|