#include "lockcheck.h"
 
+#define PRINT_LOCK_ALLOC  0
+#define PRINT_LOCK_FREE   0
+#define PRINT_LOCK_LOCK   0
+#define PRINT_LOCK_UNLOCK 0
+
 // How far up the stack to track the caller
 // 0 => palacios_...
 // 1 => v3_lock...
   clear_trace(l->lastirqlocker);
   clear_trace(l->lastirqunlocker);
   //INFO("LOCKCHECK: LOCK ALLOCATE 0x%p\n",lock);
+#if PRINT_LOCK_ALLOC
   printlock("NEW LOCK", l);
- //dump_stack();
+#endif
 }
   
 void palacios_lockcheck_free(void *lock)
   if ((l->irqcount)) { 
     printlock("BAD IRQ COUNT AT FREE",l);
   }
+
+#if PRINT_LOCK_FREE
+  printlock("FREE LOCK",l);
+#endif
+
   free_lock_entry(l);
 }
 
 
   lock_stack_lock(lock,0);
 
+#if PRINT_LOCK_LOCK
+  printlock("LOCK",l);
+#endif
+
 }
 void palacios_lockcheck_unlock(void *lock)
 {
   l->lockcount--;
   backtrace(l->lastunlocker);
 
+#if PRINT_LOCK_UNLOCK
+  printlock("UNLOCK",l);
+#endif
+
+
 }
 
 void palacios_lockcheck_lock_irqsave(void *lock,unsigned long flags)
 
   lock_stack_lock(lock,1);
 
+#if PRINT_LOCK_LOCK
+  printlock("LOCK_IRQSAVE",l);
+#endif
+
+
 
 }
 
   lock_stack_unlock(lock,1);
 
   backtrace(l->lastirqunlocker);
+
+#if PRINT_LOCK_UNLOCK
+  printlock("UNLOCK_IRQRESTORE",l);
+#endif
   
 }
 
 void  palacios_yield_cpu_timed(unsigned int us);
 unsigned int palacios_get_cpu(void);
 unsigned int palacios_get_cpu_khz(void);
-void *palacios_mutex_alloc(void);        // allocates and inits a lock
-void  palacios_mutex_init(void *mutex);  // use instead of spin_lock_init
-void  palacios_mutex_free(void *mutex);
+void *palacios_mutex_alloc(void);         // allocates and inits a lock
+void  palacios_mutex_init(void *mutex);   // only inits a lock
+void  palacios_mutex_deinit(void *mutex); // only deinits a lock
+void  palacios_mutex_free(void *mutex);   // deinits and frees a lock
 void  palacios_mutex_lock(void *mutex, int must_spin);
 void  palacios_mutex_unlock(void *mutex);
 void *palacios_mutex_lock_irqsave(void *mutex, int must_spin);
 void  palacios_mutex_unlock_irqrestore(void *mutex, void *flags);
-
 // Macros for spin-locks in the module code
 // By using these macros, the lock checker will be able
 // to see the module code as well as the core VMM
 #define palacios_spinlock_init(l) palacios_mutex_init(l)
+#define palacios_spinlock_deinit(l) palacios_mutex_deinit(l)
 #define palacios_spinlock_lock(l) palacios_mutex_lock(l,0)
 #define palacios_spinlock_unlock(l) palacios_mutex_unlock(l)
 #define palacios_spinlock_lock_irqsave(l,f) do { f=(unsigned long)palacios_mutex_lock_irqsave(l,0); } while (0)