| 2009年4月21日
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
#include <linux/semaphore.h>
#include <linux/sched.h>
static DEFINE_MUTEX(mut1);
struct semaphore sem1,sem2;
int test1(void *p)
{
down(&sem2);
mutex_lock(&mut1);
printk("get out test1\n");
mutex_unlock(&mut1);
up(&sem1);
return 0;
}
int test2(void *p)
{
down(&sem1);
mutex_lock(&mut1);
printk("get out test2\n");
mutex_unlock(&mut1);
up(&sem2);
return 0;
}
static int __init mutex_init_test()
{
init_MUTEX(&sem1);
init_MUTEX_LOCKED(&sem2);
printk("get out \n");
kernel_thread(test1, test1, CLONE_KERNEL);
kernel_thread(test2, test2, CLONE_KERNEL);
return 0;
}
static void __exit mutex_exit_test()
{
printk("get out \n");
return;
}
module_init(mutex_init_test);
module_exit(mutex_exit_test);
MODULE_AUTHOR("Helight.Xu");
MODULE_LICENSE("Dual BDS/GPL");
关注「黑光技术」,关注大数据+微服务