#include <linux/module.h>
#include <linux/printk.h>
#include <linux/spinlock.h>
#include <linux/jiffies.h>
#include <linux/timer.h>

#define MODULE_NAME "jail"

DEFINE_SPINLOCK(jae_L);

void timed_jail(struct timer_list *in)
{
	spin_lock(&jae_L);
	pr_info("I'm the interrupt I have the lock\n");
	spin_unlock(&jae_L);
}

DEFINE_TIMER(timer, timed_jail);

int jail_init(void)
{
	/* Make a timer that is set to expire immediately */
	mod_timer(&timer, jiffies);

	spin_lock(&jae_L);
	pr_info("wow we have the lock\n");
	spin_unlock(&jae_L);

	return 0;
}

void jail_exit(void)
{
	pr_info("we survived somehow\n");
}

module_init(jail_init);
module_exit(jail_exit);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION(MODULE_NAME);
MODULE_AUTHOR("cs4118-dev-guides");
