* WARNING: mutexes are preferred for single holder semaphores @ 2008-05-05 0:41 Sean MacLennan 2008-05-05 1:06 ` Michael Ellerman ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Sean MacLennan @ 2008-05-05 0:41 UTC (permalink / raw) To: linuxppc-dev This is a bit OT, but I got the warning in the subject from checkpatch.pl for a piece of code. The code *is* using a mutex. Does it actually mean I shouldn't use a mutex? The code declares a global mutex: static DECLARE_MUTEX(list_lock); The odds of two accesses to the list_lock at the same time are zero. But it would be Very Bad(tm) if it did happen. Since the odds of contention are near zero, the cost of the mutex is near zero, so I put it in. I think I can safely ignore the warning, but I want to make sure.... Cheers, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 0:41 WARNING: mutexes are preferred for single holder semaphores Sean MacLennan @ 2008-05-05 1:06 ` Michael Ellerman 2008-05-05 1:31 ` Sean MacLennan 2008-05-05 2:13 ` Paul Mackerras 2008-05-05 3:38 ` Benjamin Herrenschmidt 2 siblings, 1 reply; 12+ messages in thread From: Michael Ellerman @ 2008-05-05 1:06 UTC (permalink / raw) To: Sean MacLennan; +Cc: linuxppc-dev [-- Attachment #1: Type: text/plain, Size: 719 bytes --] On Sun, 2008-05-04 at 20:41 -0400, Sean MacLennan wrote: > This is a bit OT, but I got the warning in the subject from > checkpatch.pl for a piece of code. The code *is* using a mutex. Does it > actually mean I shouldn't use a mutex? > > The code declares a global mutex: > > static DECLARE_MUTEX(list_lock); .. which is a semaphore :( [see include/linux/semaphore.h] I think you want DEFINE_MUTEX(). Yes, this is completely ridiculous. cheers -- Michael Ellerman OzLabs, IBM Australia Development Lab wwweb: http://michael.ellerman.id.au phone: +61 2 6212 1183 (tie line 70 21183) We do not inherit the earth from our ancestors, we borrow it from our children. - S.M.A.R.T Person [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 1:06 ` Michael Ellerman @ 2008-05-05 1:31 ` Sean MacLennan 0 siblings, 0 replies; 12+ messages in thread From: Sean MacLennan @ 2008-05-05 1:31 UTC (permalink / raw) To: michael; +Cc: linuxppc-dev On Mon, 05 May 2008 11:06:55 +1000 "Michael Ellerman" <michael@ellerman.id.au> wrote: > On Sun, 2008-05-04 at 20:41 -0400, Sean MacLennan wrote: > > This is a bit OT, but I got the warning in the subject from > > checkpatch.pl for a piece of code. The code *is* using a mutex. > > Does it actually mean I shouldn't use a mutex? > > > > The code declares a global mutex: > > > > static DECLARE_MUTEX(list_lock); > > .. which is a semaphore :( [see include/linux/semaphore.h] > > I think you want DEFINE_MUTEX(). > > Yes, this is completely ridiculous. > > cheers > Ok, that fixed it, once I changed all the up and down calls :p Thanks. Cheers, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 0:41 WARNING: mutexes are preferred for single holder semaphores Sean MacLennan 2008-05-05 1:06 ` Michael Ellerman @ 2008-05-05 2:13 ` Paul Mackerras 2008-05-05 6:01 ` Christoph Hellwig 2008-05-05 3:38 ` Benjamin Herrenschmidt 2 siblings, 1 reply; 12+ messages in thread From: Paul Mackerras @ 2008-05-05 2:13 UTC (permalink / raw) To: Sean MacLennan; +Cc: linuxppc-dev Sean MacLennan writes: > This is a bit OT, but I got the warning in the subject from > checkpatch.pl for a piece of code. The code *is* using a mutex. Does it > actually mean I shouldn't use a mutex? I don't require zero checkpatch warnings or errors on patches before I accept them. If what checkpatch is saying is rubbish, just ignore it. Paul. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 2:13 ` Paul Mackerras @ 2008-05-05 6:01 ` Christoph Hellwig 0 siblings, 0 replies; 12+ messages in thread From: Christoph Hellwig @ 2008-05-05 6:01 UTC (permalink / raw) To: Paul Mackerras; +Cc: Sean MacLennan, linuxppc-dev On Mon, May 05, 2008 at 12:13:43PM +1000, Paul Mackerras wrote: > Sean MacLennan writes: > > > This is a bit OT, but I got the warning in the subject from > > checkpatch.pl for a piece of code. The code *is* using a mutex. Does it > > actually mean I shouldn't use a mutex? > > I don't require zero checkpatch warnings or errors on patches before I > accept them. If what checkpatch is saying is rubbish, just ignore it. Current versions don't spew much rubbish anymore, and this one certainly isn't. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 0:41 WARNING: mutexes are preferred for single holder semaphores Sean MacLennan 2008-05-05 1:06 ` Michael Ellerman 2008-05-05 2:13 ` Paul Mackerras @ 2008-05-05 3:38 ` Benjamin Herrenschmidt 2008-05-05 4:40 ` Sean MacLennan 2 siblings, 1 reply; 12+ messages in thread From: Benjamin Herrenschmidt @ 2008-05-05 3:38 UTC (permalink / raw) To: Sean MacLennan; +Cc: linuxppc-dev On Sun, 2008-05-04 at 20:41 -0400, Sean MacLennan wrote: > This is a bit OT, but I got the warning in the subject from > checkpatch.pl for a piece of code. The code *is* using a mutex. Does it > actually mean I shouldn't use a mutex? > > The code declares a global mutex: > > static DECLARE_MUTEX(list_lock); > > The odds of two accesses to the list_lock at the same time are zero. > But it would be Very Bad(tm) if it did happen. Since the odds of > contention are near zero, the cost of the mutex is near zero, so I put > it in. > > I think I can safely ignore the warning, but I want to make sure.... Show us the code... It could be a bug in checkpatch or you using the wrong functions somewhere ... Ben. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: WARNING: mutexes are preferred for single holder semaphores 2008-05-05 3:38 ` Benjamin Herrenschmidt @ 2008-05-05 4:40 ` Sean MacLennan 2008-05-07 14:36 ` All your drivers are belong to us [was WARNING: mutexes are preferred for single holder semaphores] Detlev Zundel 0 siblings, 1 reply; 12+ messages in thread From: Sean MacLennan @ 2008-05-05 4:40 UTC (permalink / raw) To: benh; +Cc: linuxppc-dev On Mon, 05 May 2008 13:38:39 +1000 "Benjamin Herrenschmidt" <benh@kernel.crashing.org> wrote: > Show us the code... It could be a bug in checkpatch or you using > the wrong functions somewhere ... The change to DEFINE_MUTEX and changing up/down to mutex_lock/mutex_unlock solved the problem. The code is GPLed but not currently available on the net. It is basically a little driver that registers a character device and then passes out the minor numbers to the PIKA board drivers. It was written to isolate all the character/sysfs code to one place since we have five drivers, and many debug drivers, that use it. If anybody is really interested, I can post it here. I doubt it will ever be submitted to the mainline kernel however. Cheers, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* All your drivers are belong to us [was WARNING: mutexes are preferred for single holder semaphores] 2008-05-05 4:40 ` Sean MacLennan @ 2008-05-07 14:36 ` Detlev Zundel 2008-05-07 21:42 ` All your drivers are belong to us [was WARNING: mutexes are preferredfor " Sean MacLennan 0 siblings, 1 reply; 12+ messages in thread From: Detlev Zundel @ 2008-05-07 14:36 UTC (permalink / raw) To: linuxppc-dev Hi Sean, > The code is GPLed but not currently available on the net. It is > basically a little driver that registers a character device and > then passes out the minor numbers to the PIKA board drivers. > > It was written to isolate all the character/sysfs code to one place > since we have five drivers, and many debug drivers, that use it. > > If anybody is really interested, I can post it here. I doubt it will > ever be submitted to the mainline kernel however. Just for the record and because it may be interesting to others, during the Hannover Messe end of April, in the context of the OSADL Congress[1] I attended a speech of Greg KH about driver development and citing from memory he said: "I am serious, please post all drivers that there are, even if you think they are useless for other people. We have a driver in mainline for a device that I know only exists once in the whole world. Having the drivers in the kernel gives the developers the chance to see how the infrastructure is being used and to isolate good opportunities for modularization benefiting the linux kernel. [...] It also happened that a driver once posted for what the customer thought was a completely specific device of his own today supports lots of different boards from at least four different manufacturers." The wording is of course not exact but I hope I caught the spirit of what Greg wanted to say. So yes, please post the driver - maybe Greg KH will tunnel it into mainline... Cheers Detlev [1] http://www.osadl.org/International-Congress-Open-Source-mee.hannover-2008-congress.0.html PS: The OSADL pages should be updated in a few days to link to slides of the talks. -- Ftpd never switches uid and euid, it uses setfsuid(2) instead. The main reason is that uid switching has been exploited in several breakins, but the sheer ugliness of uid switching counts too. -- pure-ftpd(8) -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu@denx.de ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: All your drivers are belong to us [was WARNING: mutexes are preferredfor single holder semaphores] 2008-05-07 14:36 ` All your drivers are belong to us [was WARNING: mutexes are preferred for single holder semaphores] Detlev Zundel @ 2008-05-07 21:42 ` Sean MacLennan 2008-05-08 0:49 ` Josh Boyer 0 siblings, 1 reply; 12+ messages in thread From: Sean MacLennan @ 2008-05-07 21:42 UTC (permalink / raw) To: linuxppc-dev On Wed, 07 May 2008 16:36:30 +0200 "Detlev Zundel" <dzu@denx.de> wrote: > It also happened that a driver once posted for what the customer > thought was a completely specific device of his own today supports > lots of different boards from at least four different manufacturers." > > The wording is of course not exact but I hope I caught the spirit of > what Greg wanted to say. So yes, please post the driver - maybe Greg > KH will tunnel it into mainline... I agree with the sentiment. However, it is hard enough to get legitimate drivers into the kernel. The drivers I mentioned do not come close to following the Linux kernel coding spec. Just to start, they use 2 character spaces for indentation :( They are full of ifdefs since we need to support the whole gamut of 2.6 kernels plus windows. We also must support multiple board versions in the same files. Cheers, Sean ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: All your drivers are belong to us [was WARNING: mutexes are preferredfor single holder semaphores] 2008-05-07 21:42 ` All your drivers are belong to us [was WARNING: mutexes are preferredfor " Sean MacLennan @ 2008-05-08 0:49 ` Josh Boyer 2008-05-08 4:41 ` Sean MacLennan 2008-05-08 13:28 ` All your drivers are belong to us Detlev Zundel 0 siblings, 2 replies; 12+ messages in thread From: Josh Boyer @ 2008-05-08 0:49 UTC (permalink / raw) To: Sean MacLennan; +Cc: linuxppc-dev On Wed, 7 May 2008 17:42:51 -0400 Sean MacLennan <smaclennan@pikatech.com> wrote: > On Wed, 07 May 2008 16:36:30 +0200 > "Detlev Zundel" <dzu@denx.de> wrote: > > > It also happened that a driver once posted for what the customer > > thought was a completely specific device of his own today supports > > lots of different boards from at least four different manufacturers." > > > > The wording is of course not exact but I hope I caught the spirit of > > what Greg wanted to say. So yes, please post the driver - maybe Greg > > KH will tunnel it into mainline... > > I agree with the sentiment. However, it is hard enough to get > legitimate drivers into the kernel. The drivers I mentioned do not > come close to following the Linux kernel coding spec. Here's the cool part. There's this Linux driver project: http://www.linuxdriverproject.org/twiki/bin/view where they can take drivers like that and clean them up. At least to a reasonable degree. The benefit for you is that once it's cleaned up, it can go into the mainline kernel and it will just be there in future releases. Helpful when you update. Now, I can't say I've personally ever used that project but its mission does seem pretty targeted towards groups that want to do the right thing with respect to drivers. Maybe you could give it a shot and tell others about the experience. josh ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: All your drivers are belong to us [was WARNING: mutexes are preferredfor single holder semaphores] 2008-05-08 0:49 ` Josh Boyer @ 2008-05-08 4:41 ` Sean MacLennan 2008-05-08 13:28 ` All your drivers are belong to us Detlev Zundel 1 sibling, 0 replies; 12+ messages in thread From: Sean MacLennan @ 2008-05-08 4:41 UTC (permalink / raw) To: linuxppc-dev I have attached the driver in question below. This is *not* representative of PIKA board drivers in general. This driver was rewritten from scratch to work in 2.6.26, but still work on the 2.6.9 kernel in RedHatES 4. Since it was rewritten, it matches the kernel coding specs rather than PIKA's. Emacs users will recognize the comment at the bottom ;) This is also a generally useful driver that does one specific thing. It is also very small. The next smallest PIKA driver is close to 9,000 lines of code. Our largest is about 130,000 lines of code and lsmod reports 1.6M in size. The other board drivers are *very* specific to PIKA hardware, and are not "chip" drivers as such. I suspect Greg was mainly talking about chip drivers. I use this driver all the time to write quick drivers. It handles all the dirty work for you so you can quickly prototype character drivers. And while the Linux driver project looks interesting, it doesn't really help me. We still have to support all our customers, which includes windows, and old Linux kernels. This means I would still have to maintain the PIKA version of the driver separate from the driver projects version. Cheers, Sean --- /dev/null 2005-11-20 22:22:37.000000000 -0500 +++ pikacore.h 2008-05-07 23:48:47.000000000 -0400 @@ -0,0 +1,39 @@ +/* + * PIKA Core Driver + * + * Copyright (c) 2008 PIKA Technologies + * Sean MacLennan <smaclennan@pikatech.com> + */ + +#ifndef PIKACORE_H +#define PIKACORE_H + +#include <linux/module.h> +#include <linux/fs.h> +#include <linux/device.h> + + +/* pikacore_register* returns a negative number on error. + * On success, it returns the minor number. + */ +int pikacore_register_board(struct file_operations *fops); +int pikacore_register(int minor, char *name, struct file_operations *fops); +int pikacore_unregister(int minor); +int pikacore_device_attr(int minor, struct device_attribute *attr, void *data); + + +/* Some compatibility changes. */ + +#ifndef DEFINE_MUTEX +#define DEFINE_MUTEX DECLARE_MUTEX +#define mutex_lock down +#define mutex_unlock up +#endif + +#include <linux/interrupt.h> +#ifndef IRQF_SHARED +#define IRQF_SHARED (SA_SHIRQ | SA_INTERRUPT) +#define IRQF_DISABLED 0 +#endif + +#endif --- /dev/null 2005-11-20 22:22:37.000000000 -0500 +++ pikacore.c 2008-05-08 00:18:35.000000000 -0400 @@ -0,0 +1,261 @@ +/* + * PIKA Core Driver + * + * Copyright (c) 2008 PIKA Technologies + * Sean MacLennan <smaclennan@pikatech.com> + * + * This driver handles all the details of creating a character device + * driver. It also allows us to reuse one major number for all the + * character device drivers. + */ + +#include "pikacore.h" + +#include <linux/cdev.h> +#include <linux/version.h> + + +static int major; +module_param(major, int, 0444); + + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 13) +/* This is really for RedHatES4 */ +#define OLD_KERNEL + +#define class_create class_simple_create +#define class_destroy class_simple_destroy + +static inline struct class_device *device_create(struct class_simple *cls, + void *parent, dev_t devt, + const char *fmt, ...) +{ + va_list ap; + char tmpname[20]; + + va_start(ap, fmt); + vsnprintf(tmpname, sizeof(tmpname), fmt, ap); + va_end(ap); + + return class_simple_device_add(cls, devt, parent, tmpname); +} + +#define device_destroy(a, b) class_simple_device_remove(b) + +#define device class_device +static struct class_simple *pikacore_class; +#else +static struct class *pikacore_class; +#endif + + +struct pk_coredevice { + struct list_head list; + int minor; + struct cdev cdev; + struct device *device; +}; + +static LIST_HEAD(pikacore_list); +static DEFINE_MUTEX(pikacore_mtx); + +#define MAX_MINORS 64 +static unsigned long pikacore_minors[MAX_MINORS / 8 / sizeof(unsigned long)]; + + +int pikacore_register(int minor, char *name, struct file_operations *fops) +{ + struct pk_coredevice *pika; + dev_t dev; + int err; + + mutex_lock(&pikacore_mtx); + + if (minor == 0) + minor = find_first_zero_bit(pikacore_minors, MAX_MINORS); + + if (minor >= MAX_MINORS || + test_and_set_bit(minor, pikacore_minors)) { + mutex_unlock(&pikacore_mtx); + return -ENOENT; + } + + mutex_unlock(&pikacore_mtx); + + pika = kzalloc(sizeof(struct pk_coredevice), GFP_KERNEL); + if (!pika) + return -ENOMEM; + + INIT_LIST_HEAD(&pika->list); + pika->minor = minor; + dev = MKDEV(major, minor); + + if (name) + pika->device = device_create(pikacore_class, NULL, dev, + "%s", name); + else + pika->device = device_create(pikacore_class, NULL, dev, + "pika%d", minor); + if (IS_ERR(pika->device)) { + err = PTR_ERR(pika->device); + goto out; + } + + cdev_init(&pika->cdev, fops); + err = cdev_add(&pika->cdev, dev, 1); + if (err) + goto out; + + mutex_lock(&pikacore_mtx); + list_add(&pika->list, &pikacore_list); + mutex_unlock(&pikacore_mtx); + + printk(KERN_INFO "pikacore: registered %d.%d\n", major, minor); + + return minor; + + out: + if (pika->device) + device_destroy(pikacore_class, MKDEV(major, minor)); + + kfree(pika); + return err; +} +EXPORT_SYMBOL(pikacore_register); + +int pikacore_register_board(struct file_operations *fops) +{ + return pikacore_register(0, NULL, fops); +} +EXPORT_SYMBOL(pikacore_register_board); + +/* You must have pikacore_mtx held */ +static inline struct pk_coredevice *find_by_minor(int minor) +{ + struct pk_coredevice *pika; + + list_for_each_entry(pika, &pikacore_list, list) + if (pika->minor == minor) + return pika; + + return NULL; +} + +int pikacore_unregister(int minor) +{ + struct pk_coredevice *pika; + + mutex_lock(&pikacore_mtx); + + pika = find_by_minor(minor); + if (!pika) { + mutex_unlock(&pikacore_mtx); + return -EINVAL; + } + + list_del(&pika->list); + + clear_bit(minor, pikacore_minors); + + mutex_unlock(&pikacore_mtx); + + printk(KERN_INFO "pikacore: remove %d.%d\n", major, minor); + + device_destroy(pikacore_class, MKDEV(major, minor)); + + cdev_del(&pika->cdev); + + kfree(pika); + + return 0; +} +EXPORT_SYMBOL(pikacore_unregister); + +int pikacore_device_attr(int minor, struct device_attribute *attr, void *data) +{ +#ifdef OLD_KERNEL + return -ENOSYS; +#else + struct pk_coredevice *pika; + int rc; + + mutex_lock(&pikacore_mtx); + + pika = find_by_minor(minor); + if (!pika) { + printk(KERN_WARNING "%s: %d is not a pika device\n", + __func__, minor); + rc = -ENOENT; + goto out; + } + + if (data) { + void *cur = dev_get_drvdata(pika->device); + if (cur == NULL) + dev_set_drvdata(pika->device, data); + else if (cur != data) { + printk(KERN_WARNING "%s: data already set!!!\n", + __func__); + rc = -EINVAL; + goto out; + } + } + + rc = device_create_file(pika->device, attr); + +out: + mutex_unlock(&pikacore_mtx); + + return rc; +#endif +} +EXPORT_SYMBOL(pikacore_device_attr); + +static int __init pikacore_init(void) +{ + int rc; + dev_t devt; + + pikacore_class = class_create(THIS_MODULE, "pika"); + if (IS_ERR(pikacore_class)) + return PTR_ERR(pikacore_class); + + if (major) { + /* user specified the major */ + devt = MKDEV(major, 0); + rc = register_chrdev_region(devt, MAX_MINORS, "pikacore"); + } else + /* dynamic */ + rc = alloc_chrdev_region(&devt, 0, MAX_MINORS, "pikacore"); + if (rc) { + printk(KERN_ERR "pikacore: Unable to register (%d).\n", rc); + class_destroy(pikacore_class); + return rc; + } + + major = MAJOR(devt); + + return 0; +} +module_init(pikacore_init); + +void __exit pikacore_exit(void) +{ + unregister_chrdev_region(MKDEV(major, 0), MAX_MINORS); + + class_destroy(pikacore_class); +} +module_exit(pikacore_exit); + +MODULE_DESCRIPTION("pikacore - core class driver"); +MODULE_AUTHOR("Sean MacLennan"); +MODULE_LICENSE("GPL"); + +/* + * Force kernel coding standard on PIKA code + * Local Variables: + * tab-width: 8 + * c-basic-offset: 8 + * indent-tabs-mode: t + * End: + */ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: All your drivers are belong to us 2008-05-08 0:49 ` Josh Boyer 2008-05-08 4:41 ` Sean MacLennan @ 2008-05-08 13:28 ` Detlev Zundel 1 sibling, 0 replies; 12+ messages in thread From: Detlev Zundel @ 2008-05-08 13:28 UTC (permalink / raw) To: linuxppc-dev Hi, > On Wed, 7 May 2008 17:42:51 -0400 > Sean MacLennan <smaclennan@pikatech.com> wrote: > >> On Wed, 07 May 2008 16:36:30 +0200 >> "Detlev Zundel" <dzu@denx.de> wrote: >> >> > It also happened that a driver once posted for what the customer >> > thought was a completely specific device of his own today supports >> > lots of different boards from at least four different manufacturers." >> > >> > The wording is of course not exact but I hope I caught the spirit of >> > what Greg wanted to say. So yes, please post the driver - maybe Greg >> > KH will tunnel it into mainline... >> >> I agree with the sentiment. However, it is hard enough to get >> legitimate drivers into the kernel. The drivers I mentioned do not >> come close to following the Linux kernel coding spec. > > Here's the cool part. There's this Linux driver project: > > http://www.linuxdriverproject.org/twiki/bin/view > > where they can take drivers like that and clean them up. At least to a > reasonable degree. The benefit for you is that once it's cleaned up, > it can go into the mainline kernel and it will just be there in future > releases. Helpful when you update. Yes, I should have mentioned this also in my original mail. If I remember correctly, Greg mentioned that in this project, he has *300* developers waiting to do something. None of the companies previously claiming Linux had a driver problem showed up even when he contacted them directly.... > Now, I can't say I've personally ever used that project but its mission > does seem pretty targeted towards groups that want to do the right > thing with respect to drivers. Maybe you could give it a shot and tell > others about the experience. This would definitely be interesting. Cheers Detlev -- -- Question authority! -- Yeah, says who? -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu@denx.de ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-05-08 13:29 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-05-05 0:41 WARNING: mutexes are preferred for single holder semaphores Sean MacLennan 2008-05-05 1:06 ` Michael Ellerman 2008-05-05 1:31 ` Sean MacLennan 2008-05-05 2:13 ` Paul Mackerras 2008-05-05 6:01 ` Christoph Hellwig 2008-05-05 3:38 ` Benjamin Herrenschmidt 2008-05-05 4:40 ` Sean MacLennan 2008-05-07 14:36 ` All your drivers are belong to us [was WARNING: mutexes are preferred for single holder semaphores] Detlev Zundel 2008-05-07 21:42 ` All your drivers are belong to us [was WARNING: mutexes are preferredfor " Sean MacLennan 2008-05-08 0:49 ` Josh Boyer 2008-05-08 4:41 ` Sean MacLennan 2008-05-08 13:28 ` All your drivers are belong to us Detlev Zundel
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).