light weight user level semaphores
On Tue, 17 Apr 2001 12:48:48 -0700 (PDT) Linus Torvalds wrote:
[deletia]
Quoted 7 lines
/*
* a fast semaphore is a 128-byte opaque thing,
* aligned on a 128-byte boundary. This is partly
* to minimize false sharing in the L1 (we assume
* that 128-byte cache-lines are going to be fairly
* common), but also to allow the kernel to hide
* data thereQuoted 8 lines
*/
struct fast_semaphore {
unsigned int opaque[32];
} __attribute__((aligned, 64));
struct fast_semaphore *FS_create(char *ID);
int FS_down(struct fast_semaphore *, unsigned long timeout);
void FS_up(struct fast_semaphore *);[deletia]
These are counting semaphores, right? If so, would this make sense?
struct fast_semaphore *FS_create(char *ID, int initial_count);
[FS_down/FS_up the same]
int FS_get_count(struct fast_semaphore *);The FS_get_count() is less useful, but being able to pass the initial count to the semaphore is pretty important.
--George
begin:vcard
n:Talbot;George
tel;fax:732-615-4526
tel;work:732-615-5099
x-mozilla-html:FALSE
org:Lucent, Inc.;Inter-Networking Systems adr:;;480 Red Hill Road, Building 1;Middletown;NJ;07748;USA version:2.1
email;internet:[email protected]
title:Senior Software Engineer
x-mozilla-cpt:;0
fn:George Talbot
end:vcard