lkml.org 
[lkml]   [2000]   [Dec]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectlock_kernel() / unlock_kernel inconsistency
In an effort to stay consistent with the community, I migrated some code 
to a driver to use the daemonize() routine in the function specified by
the kernel_thread() call.

However, in looking at a few drivers in the system (drivers/usb/hub.c ,
drivers/md/md.c, drivers/media/video/msp3400.c), I noticed some
inconsistencies. Specifically with the use of lock_kernel() /
unlock_kernel().

drivers/md/md.c looks like:
int md_thread(void * arg)
{
md_lock_kernel();

daemonize();
.
.
.
//md_unlock_kernel();
}

this is similiar to drivers/usb/hub.c (which doesn't call unlock_kernel
following lock_kernel)

however drivers/media/video/msp3400.c looks like:
static int msp3400c_thread(void *data)
{
.
.
.
#ifdef CONFIG_SMP
lock_kernel();
#endif
daemonize();
.
.
.
#ifdef CONFIG_SMP
unlock_kernel();
#endif
}

The latter example seems logically correct to me. Does this imply that
after the CPU that is responsible for starting the thread in md.c or
hub.c claims the global lock it will never be released to any other CPU?

If I am incorrect here please just point out my error, however, I
figured I would bring this to the mailing list's attention if in fact
this is truely in error.

Thanks,
Jason

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.089 / U:0.144 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site