From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Zach Brown <zach.brown@oracle.com>
Cc: linux-kernel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>, Ulrich Drepper <drepper@redhat.com>,
Arjan van de Ven <arjan@infradead.org>,
Andrew Morton <akpm@zip.com.au>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
"David S. Miller" <davem@davemloft.net>,
Suparna Bhattacharya <suparna@in.ibm.com>,
Davide Libenzi <davidel@xmailserver.org>,
Jens Axboe <jens.axboe@oracle.com>,
Thomas Gleixner <tglx@linutronix.de>,
Dan Williams <dan.j.williams@gmail.com>,
Jeff Moyer <jmoyer@redhat.com>,
Simon Holm Thogersen <odie@cs.aau.dk>,
suresh.b.siddha@intel.com
Subject: Re: [PATCH 5/6] syslets: add generic syslets infrastructure
Date: Fri, 7 Dec 2007 14:55:05 +0300 [thread overview]
Message-ID: <20071207115505.GA18013@2ka.mipt.ru> (raw)
In-Reply-To: <11969832192130-git-send-email-zach.brown@oracle.com>
Hi Zach.
On Thu, Dec 06, 2007 at 03:20:18PM -0800, Zach Brown (zach.brown@oracle.com) wrote:
> +/*
> + * XXX todo:
> + * - do we need all this '*cur = current' nonsense?
> + * - try to prevent userspace from submitting too much.. lazy user ptr read?
> + * - explain how to deal with waiting threads with stale data in current
> + * - how does userspace tell that a syslet completion was lost?
> + * provide an -errno argument to the userspace return function?
> + */
> +
> +/*
> + * These structs are stored on the kernel stack of tasks which are waiting to
> + * return to userspace. They are linked into their parent's list of syslet
> + * children stored in 'syslet_tasks' in the parent's task_struct.
> + */
> +struct syslet_task_entry {
> + struct task_struct *task;
> + struct list_head item;
> +};
> +
> +/*
> + * syslet_ring doesn't have any kernel-side storage. Userspace allocates them
> + * in their address space and initializes their fields and then passes them to
> + * the kernel.
> + *
> + * These hashes provide the kernel-side storage for the wait queues which
> + * sys_syslet_ring_wait() uses and the mutex which completion uses to serialize
> + * the (possible blocking) ordered writes of the completion and kernel head
> + * index into the ring.
> + *
> + * We chose the bucket that supports a given ring by hashing a u32 that
> + * userspace sets in the ring.
> + */
> +#define SYSLET_HASH_BITS (CONFIG_BASE_SMALL ? 4 : 8)
> +#define SYSLET_HASH_NR (1 << SYSLET_HASH_BITS)
> +#define SYSLET_HASH_MASK (SYSLET_HASH_NR - 1)
> +static wait_queue_head_t syslet_waitqs[SYSLET_HASH_NR];
> +static struct mutex syslet_muts[SYSLET_HASH_NR];
Why do you care about hashed tables scalability and not using trees?
--
Evgeniy Polyakov
next prev parent reply other threads:[~2007-12-07 12:06 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-06 23:20 syslets v7: back to basics Zach Brown
2007-12-06 23:20 ` [PATCH 1/6] indirect: use asmlinkage in i386 syscall table prototype Zach Brown
2007-12-06 23:20 ` [PATCH 2/6] syslet: asm-generic support to disable syslets Zach Brown
2007-12-06 23:20 ` [PATCH 3/6] syslet: introduce abi structs Zach Brown
2007-12-06 23:20 ` [PATCH 4/6] syslets: add indirect args Zach Brown
2007-12-06 23:20 ` [PATCH 5/6] syslets: add generic syslets infrastructure Zach Brown
2007-12-06 23:20 ` [PATCH 6/6] syslets: add both 32bit and 64bit x86 syslet support Zach Brown
2007-12-07 11:55 ` Evgeniy Polyakov [this message]
2007-12-07 18:24 ` [PATCH 5/6] syslets: add generic syslets infrastructure Zach Brown
2008-01-09 2:03 ` Rusty Russell
2008-01-09 3:00 ` Zach Brown
2008-01-09 3:48 ` Rusty Russell
2008-01-09 18:16 ` Zach Brown
2008-01-09 22:04 ` Rusty Russell
2008-01-09 22:58 ` Linus Torvalds
2008-01-09 23:05 ` Linus Torvalds
2008-01-09 23:47 ` Zach Brown
2008-01-10 1:18 ` Rusty Russell
2008-01-09 23:15 ` Davide Libenzi
2008-01-10 5:41 ` Jeff Garzik
2007-12-08 12:40 ` [PATCH 1/6] indirect: use asmlinkage in i386 syscall table prototype Simon Holm Thøgersen
2007-12-08 21:22 ` Zach Brown
2007-12-08 12:52 ` [PATCH] Fix casting on architectures with 32-bit pointers/longs Simon Holm Thøgersen
2007-12-10 19:46 ` syslets v7: back to basics Jens Axboe
2007-12-10 21:30 ` Phillip Susi
2007-12-10 22:15 ` Zach Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071207115505.GA18013@2ka.mipt.ru \
--to=johnpol@2ka.mipt.ru \
--cc=akpm@zip.com.au \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=arjan@infradead.org \
--cc=dan.j.williams@gmail.com \
--cc=davem@davemloft.net \
--cc=davidel@xmailserver.org \
--cc=drepper@redhat.com \
--cc=jens.axboe@oracle.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=odie@cs.aau.dk \
--cc=suparna@in.ibm.com \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=zach.brown@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.