sem                58 kern/test/malloctest.c 	struct semaphore *sem = sm;
sem                67 kern/test/malloctest.c 			if (sem) {
sem                70 kern/test/malloctest.c 				V(sem);
sem                88 kern/test/malloctest.c 	if (sem) {
sem                89 kern/test/malloctest.c 		V(sem);
sem               109 kern/test/malloctest.c 	struct semaphore *sem;
sem               115 kern/test/malloctest.c 	sem = sem_create("mallocstress", 0);
sem               116 kern/test/malloctest.c 	if (sem == NULL) {
sem               124 kern/test/malloctest.c 				     mallocthread, sem, i);
sem               132 kern/test/malloctest.c 		P(sem);
sem               135 kern/test/malloctest.c 	sem_destroy(sem);
sem                50 kern/thread/synch.c         struct semaphore *sem;
sem                54 kern/thread/synch.c         sem = kmalloc(sizeof(struct semaphore));
sem                55 kern/thread/synch.c         if (sem == NULL) {
sem                59 kern/thread/synch.c         sem->sem_name = kstrdup(name);
sem                60 kern/thread/synch.c         if (sem->sem_name == NULL) {
sem                61 kern/thread/synch.c                 kfree(sem);
sem                65 kern/thread/synch.c 	sem->sem_wchan = wchan_create(sem->sem_name);
sem                66 kern/thread/synch.c 	if (sem->sem_wchan == NULL) {
sem                67 kern/thread/synch.c 		kfree(sem->sem_name);
sem                68 kern/thread/synch.c 		kfree(sem);
sem                72 kern/thread/synch.c 	spinlock_init(&sem->sem_lock);
sem                73 kern/thread/synch.c         sem->sem_count = initial_count;
sem                75 kern/thread/synch.c         return sem;
sem                79 kern/thread/synch.c sem_destroy(struct semaphore *sem)
sem                81 kern/thread/synch.c         KASSERT(sem != NULL);
sem                84 kern/thread/synch.c 	spinlock_cleanup(&sem->sem_lock);
sem                85 kern/thread/synch.c 	wchan_destroy(sem->sem_wchan);
sem                86 kern/thread/synch.c         kfree(sem->sem_name);
sem                87 kern/thread/synch.c         kfree(sem);
sem                91 kern/thread/synch.c P(struct semaphore *sem)
sem                93 kern/thread/synch.c         KASSERT(sem != NULL);
sem               103 kern/thread/synch.c 	spinlock_acquire(&sem->sem_lock);
sem               104 kern/thread/synch.c         while (sem->sem_count == 0) {
sem               121 kern/thread/synch.c 		wchan_lock(sem->sem_wchan);
sem               122 kern/thread/synch.c 		spinlock_release(&sem->sem_lock);
sem               123 kern/thread/synch.c                 wchan_sleep(sem->sem_wchan);
sem               125 kern/thread/synch.c 		spinlock_acquire(&sem->sem_lock);
sem               127 kern/thread/synch.c         KASSERT(sem->sem_count > 0);
sem               128 kern/thread/synch.c         sem->sem_count--;
sem               129 kern/thread/synch.c 	spinlock_release(&sem->sem_lock);
sem               133 kern/thread/synch.c V(struct semaphore *sem)
sem               135 kern/thread/synch.c         KASSERT(sem != NULL);
sem               137 kern/thread/synch.c 	spinlock_acquire(&sem->sem_lock);
sem               139 kern/thread/synch.c         sem->sem_count++;
sem               140 kern/thread/synch.c         KASSERT(sem->sem_count > 0);
sem               141 kern/thread/synch.c 	wchan_wakeone(sem->sem_wchan);
sem               143 kern/thread/synch.c 	spinlock_release(&sem->sem_lock);