Skip to contentSkip to conversation

light weight user level semaphores

DISCUSSION George Talbot 1 participant 1 message Apr 19, 2001

lore
Share & tools
lore
#0 lore raw

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 there
Quoted 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