Messages in this thread |  | | | Subject | Re: light weight user level semaphores | | Date | Mon, 23 Apr 2001 14:19:49 +0100 | | From | David Howells <> |
| |
David Woodhouse <dwmw2@infradead.org> wrote: > alonz@nolaviz.org said: > > [BTW, another solution is to truly support opaque "handles" to kernel > > objects; I believe David Howells is already working on something like > > this for Wine?
Yes. However, it uses a different system call set to use them. They translate to small object structures internally.
> > The poll interface can be trivially extended to support > > waiting on those...]
No, they aren't files. I did not want to use "files" because this would incur a fairly major penalty for each object:
struct file + struct dentry + struct inode
Which would mean that Win32 File objects would require two of each, one set to hold the extra Win32 attributes and one set for the actual Linux file.
The way I've chosen uses somewhat less memory and should be faster.
> ISTR it wasn't quite trivial to do it that way - it would require the > addition of an extra argument to the fops->poll() method.
Yes, the PulseEvent operation demands that all processes currently waiting on the event should be woken, but that no processes attaching immediately afterward get triggered.
This means that the PulseEvent handler has to be able to notify all the processes currently waiting on the queue and only those processes. I got it to do this by marking the waiter records each process links into the queue.
Oh... and WaitForMultipleObjects also has a "wait for all" option.
David - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |