Index: kernel/generic/src/synch/semaphore.c
===================================================================
--- kernel/generic/src/synch/semaphore.c	(revision da1bafb8cf9a3b3be8ef21bc114daaa476a85190)
+++ kernel/generic/src/synch/semaphore.c	(revision c621f4aa64c16cb4d9c2b20dbf5be59c66c25ed3)
@@ -54,8 +54,5 @@
 {
 	waitq_initialize(&sem->wq);
-	
-	irq_spinlock_lock(&sem->wq.lock, true);
-	sem->wq.missed_wakeups = val;
-	irq_spinlock_unlock(&sem->wq.lock, true);
+	waitq_count_set(&sem->wq, val);
 }
 
@@ -92,4 +89,15 @@
 }
 
+/** Get the semaphore counter value.
+ *
+ * @param sem		Semaphore.
+ * @return		The number of threads that can down the semaphore
+ * 			without blocking.
+ */
+int semaphore_count_get(semaphore_t *sem)
+{
+	return waitq_count_get(&sem->wq);
+}
+
 /** @}
  */
