On Mon, 2007-03-19 at 18:04 +0530, Daniel Rodrick wrote: > On 3/19/07, Momchil Velikov <chill@xxxxxxxxx> wrote: > > Daniel Rodrick wrote: > > > I may be wrong, but from what I understand, the count passed in the > > > semaphore initialization > > > > > > sema_init(sem, count); > > > > > > is the number of threads that are allowed to hold the semaphore > > > simultaneously (no of threads that are allowed to enter their critical > > > sections simultaneously). So can't a semaphore be actually held > > > recursively? > > > > Semaphores are not "held". See below. > > > > > Also, the only difference I could find between a semaphore and mutes > > > is that a mutex is a specail and most common form of semaphore where > > > only one thread can get it at a time. Are there any other differences? > > > > The difference is that a semaphore has no owner. Neither semaphores nor > > mutexes are a "special form" of the other - they are fundamentally > > distinct mechanisms. > > > > But I see mutexes implemented using semaphores only: > > #define __DECLARE_SEMAPHORE_GENERIC(name,count) \ > struct semaphore name = __SEMAPHORE_INITIALIZER(name,count) > > #define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1) > #define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0) that's a legacy name. Check DEFINE_MUTEX -- if you want to mail me at work (you don't), use arjan (at) linux.intel.com Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ