在IPC系列文章当中,利用信号量集实现的是用户态下生产者-消费者模型的模型。本文以内核模块的方式,通过创建内核线程来为大家演示内核态下的生产者消费者模型。本模型属于np-nc-nb,即多个生产者多个消费着多个缓冲区。
在加载函数中,完成一些初始化的工作,并分别创建了5个生产者线程和消费者线程。kernel_thread函数的第一个参数是所所创建线程要做的动作;通过第二个参数传递i变量。
01 |
static int __init void ) |
02 |
{ |
03 |
int i; |
04 |
05 |
printk( "np_nc ); |
06 |
in=out=0; |
07 |
cflag=0; |
08 |
init_MUTEX(&mutex); |
09 |
sema_init(&s1,BUF_NUM); |
10 |
sema_init(&s2,0); |
11 |
12 |
for (i=0;i< |
13 |
{ |