Index: kernel/generic/include/mm/asid.h
===================================================================
--- kernel/generic/include/mm/asid.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/mm/asid.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -44,4 +44,5 @@
 
 #include <arch/mm/asid.h>
+#include <synch/spinlock.h>
 #include <typedefs.h>
 
Index: kernel/generic/include/synch/condvar.h
===================================================================
--- kernel/generic/include/synch/condvar.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/condvar.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -38,10 +38,10 @@
 #include <arch/types.h>
 #include <synch/waitq.h>
-#include <typedefs.h>
+#include <synch/mutex.h>
 #include <synch/synch.h>
 
-struct condvar {
+typedef struct {
 	waitq_t wq;
-};
+} condvar_t;
 
 #define condvar_wait(cv,mtx) \
Index: kernel/generic/include/synch/futex.h
===================================================================
--- kernel/generic/include/synch/futex.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/futex.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -43,10 +43,10 @@
 
 /** Kernel-side futex structure. */
-struct futex {
+typedef struct {
 	uintptr_t paddr;	/**< Physical address of the status variable. */
 	waitq_t wq;		/**< Wait queue for threads waiting for futex availability. */
 	link_t ht_link;		/**< Futex hash table link. */
 	count_t refcount;	/**< Number of tasks that reference this futex. */
-};
+} futex_t;
 
 extern void futex_init(void);
Index: kernel/generic/include/synch/mutex.h
===================================================================
--- kernel/generic/include/synch/mutex.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/mutex.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -41,7 +41,7 @@
 #include <synch/synch.h>
 
-struct mutex {
+typedef struct {
 	semaphore_t sem;
-};
+} mutex_t;
 
 #define mutex_lock(mtx) \
Index: kernel/generic/include/synch/rwlock.h
===================================================================
--- kernel/generic/include/synch/rwlock.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/rwlock.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -42,15 +42,15 @@
 #include <synch/spinlock.h>
 
-enum rwlock_type {
+typedef enum {
 	RWLOCK_NONE,
 	RWLOCK_READER,
 	RWLOCK_WRITER
-};
+} rwlock_type_t;
 
-struct rwlock {
+typedef struct {
 	SPINLOCK_DECLARE(lock);
 	mutex_t exclusive;	/**< Mutex for writers, readers can bypass it if readers_in is positive. */
 	count_t readers_in;	/**< Number of readers in critical section. */
-};
+} rwlock_t;
 
 #define rwlock_write_lock(rwl) \
Index: kernel/generic/include/synch/semaphore.h
===================================================================
--- kernel/generic/include/synch/semaphore.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/semaphore.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -41,8 +41,7 @@
 #include <synch/synch.h>
 
-struct semaphore
-{
+typedef struct {
 	waitq_t wq;
-};
+} semaphore_t;
 
 #define semaphore_down(s) \
Index: kernel/generic/include/synch/spinlock.h
===================================================================
--- kernel/generic/include/synch/spinlock.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/spinlock.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -43,10 +43,10 @@
 
 #ifdef CONFIG_SMP
-struct spinlock {
+typedef struct {
 #ifdef CONFIG_DEBUG_SPINLOCK
 	char *name;
 #endif
 	atomic_t val;
-};
+} spinlock_t;
 
 /*
@@ -104,4 +104,6 @@
 #else
 
+typedef void spinlock_t;
+
 /* On UP systems, spinlocks are effectively left out. */
 #define SPINLOCK_DECLARE(name)
Index: kernel/generic/include/synch/waitq.h
===================================================================
--- kernel/generic/include/synch/waitq.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/synch/waitq.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -46,5 +46,5 @@
 
 /** Wait queue structure. */
-struct waitq {
+typedef struct {
 
 	/** Lock protecting wait queue structure.
@@ -56,5 +56,5 @@
 	int missed_wakeups;	/**< Number of waitq_wakeup() calls that didn't find a thread to wake up. */
 	link_t head;		/**< List of sleeping threads for wich there was no missed_wakeup. */
-};
+} waitq_t;
 
 #define waitq_sleep(wq) \
Index: kernel/generic/include/typedefs.h
===================================================================
--- kernel/generic/include/typedefs.h	(revision 0f3fc9b4dfadc676e3337514570c32d8d8c9b162)
+++ kernel/generic/include/typedefs.h	(revision 1ba41c5ae41f66c7fa3ef1caef4b77d414202fb3)
@@ -51,13 +51,4 @@
 typedef struct thread thread_t;
 
-typedef struct spinlock spinlock_t;
-typedef struct mutex mutex_t;
-typedef struct semaphore semaphore_t;
-typedef struct rwlock rwlock_t;
-typedef enum rwlock_type rwlock_type_t;
-typedef struct condvar condvar_t;
-typedef struct waitq waitq_t;
-typedef struct futex futex_t;
-
 typedef struct as_area as_area_t;
 typedef struct as as_t;
