Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Michael K. Edwards
On 2/14/07, Benjamin LaHaise <[EMAIL PROTECTED]> wrote: My opinion of this whole thread is that it implies that our thread creation and/or context switch is too slow. If that is the case, improve those elements first. At least some of those optimizations have to be done in hardware on x86,

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: > On Wed, Feb 14, 2007 at 03:17:59PM -0800, Davide Libenzi wrote: > > > That's an incorrect assumption. Every task/thread in the system has FPU > > > state associated with it, in part due to the fact that glibc has to > > > change > > > some of the

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 03:17:59PM -0800, Davide Libenzi wrote: > > That's an incorrect assumption. Every task/thread in the system has FPU > > state associated with it, in part due to the fact that glibc has to change > > some of the rounding mode bits, making them different than the default

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: > On Wed, Feb 14, 2007 at 01:06:59PM -0800, Davide Libenzi wrote: > > Bear with me Ben, and let's follow this up :) If you are in the middle of > > an MMX copy operation, inside the syscall, you are: > > > > - Userspace, on task A, calls

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 01:06:59PM -0800, Davide Libenzi wrote: > Bear with me Ben, and let's follow this up :) If you are in the middle of > an MMX copy operation, inside the syscall, you are: > > - Userspace, on task A, calls sys_async_exec > > - Userspace in _not_ doing any MMX stuff before

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: > On Wed, Feb 14, 2007 at 12:14:29PM -0800, Davide Libenzi wrote: > > I think you may have mis-interpreted my words. *When* a schedule would > > block a synco execution try, then you do have a context switch. Noone > > argue that, and the code is

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 12:14:29PM -0800, Davide Libenzi wrote: > I think you may have mis-interpreted my words. *When* a schedule would > block a synco execution try, then you do have a context switch. Noone > argue that, and the code is clear. The sys_async_exec thread will block, > and a

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: > On Wed, Feb 14, 2007 at 11:45:23AM -0800, Davide Libenzi wrote: > > Sort of, except that the whole thing can complete syncronously w/out > > context switches. The real point of the whole fibrils/syslets solution is > > that kind of optimization.

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 11:45:23AM -0800, Davide Libenzi wrote: > Sort of, except that the whole thing can complete syncronously w/out > context switches. The real point of the whole fibrils/syslets solution is > that kind of optimization. The solution is as good as it is now, for Except that

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: > On Wed, Feb 14, 2007 at 09:52:20AM -0800, Davide Libenzi wrote: > > That'd be, instead of passing a chain of atoms, with the kernel > > interpreting conditions, and parameter lists, etc..., we let gcc > > do this stuff for us, and we pass the

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 09:52:20AM -0800, Davide Libenzi wrote: > That'd be, instead of passing a chain of atoms, with the kernel > interpreting conditions, and parameter lists, etc..., we let gcc > do this stuff for us, and we pass the "clet" :) pointer to sys_async_exec, > that exec the above

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Russell King wrote: > Let me spell it out, since you appear to have completely missed my point. > > At the moment, SKIP_TO_NEXT_ON_STOP is specified to jump a "jump a full > syslet_uatom number of bytes". > > If we end up with a system call being added which requires more

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Russell King
On Wed, Feb 14, 2007 at 11:50:39AM +0100, Ingo Molnar wrote: > * Russell King <[EMAIL PROTECTED]> wrote: > > On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: > > > +Arguments to the system call are implemented via pointers to arguments. > > > +This not only increases the flexibility of

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Ingo Molnar
* Russell King <[EMAIL PROTECTED]> wrote: > On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: > > +Arguments to the system call are implemented via pointers to arguments. > > +This not only increases the flexibility of syslet atoms (multiple syslets > > +can share the same variable

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Russell King
On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: > +Arguments to the system call are implemented via pointers to arguments. > +This not only increases the flexibility of syslet atoms (multiple syslets > +can share the same variable for example), but is also an optimization: >

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Russell King
On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: +Arguments to the system call are implemented via pointers to arguments. +This not only increases the flexibility of syslet atoms (multiple syslets +can share the same variable for example), but is also an optimization: +copy_uatom()

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Ingo Molnar
* Russell King [EMAIL PROTECTED] wrote: On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: +Arguments to the system call are implemented via pointers to arguments. +This not only increases the flexibility of syslet atoms (multiple syslets +can share the same variable for

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Russell King
On Wed, Feb 14, 2007 at 11:50:39AM +0100, Ingo Molnar wrote: * Russell King [EMAIL PROTECTED] wrote: On Tue, Feb 13, 2007 at 03:20:42PM +0100, Ingo Molnar wrote: +Arguments to the system call are implemented via pointers to arguments. +This not only increases the flexibility of syslet

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Russell King wrote: Let me spell it out, since you appear to have completely missed my point. At the moment, SKIP_TO_NEXT_ON_STOP is specified to jump a jump a full syslet_uatom number of bytes. If we end up with a system call being added which requires more than the

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 09:52:20AM -0800, Davide Libenzi wrote: That'd be, instead of passing a chain of atoms, with the kernel interpreting conditions, and parameter lists, etc..., we let gcc do this stuff for us, and we pass the clet :) pointer to sys_async_exec, that exec the above under

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: On Wed, Feb 14, 2007 at 09:52:20AM -0800, Davide Libenzi wrote: That'd be, instead of passing a chain of atoms, with the kernel interpreting conditions, and parameter lists, etc..., we let gcc do this stuff for us, and we pass the clet :)

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 11:45:23AM -0800, Davide Libenzi wrote: Sort of, except that the whole thing can complete syncronously w/out context switches. The real point of the whole fibrils/syslets solution is that kind of optimization. The solution is as good as it is now, for Except that You

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: On Wed, Feb 14, 2007 at 11:45:23AM -0800, Davide Libenzi wrote: Sort of, except that the whole thing can complete syncronously w/out context switches. The real point of the whole fibrils/syslets solution is that kind of optimization. The

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 12:14:29PM -0800, Davide Libenzi wrote: I think you may have mis-interpreted my words. *When* a schedule would block a synco execution try, then you do have a context switch. Noone argue that, and the code is clear. The sys_async_exec thread will block, and a newly

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: On Wed, Feb 14, 2007 at 12:14:29PM -0800, Davide Libenzi wrote: I think you may have mis-interpreted my words. *When* a schedule would block a synco execution try, then you do have a context switch. Noone argue that, and the code is clear. The

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 01:06:59PM -0800, Davide Libenzi wrote: Bear with me Ben, and let's follow this up :) If you are in the middle of an MMX copy operation, inside the syscall, you are: - Userspace, on task A, calls sys_async_exec - Userspace in _not_ doing any MMX stuff before the

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Benjamin LaHaise
On Wed, Feb 14, 2007 at 03:17:59PM -0800, Davide Libenzi wrote: That's an incorrect assumption. Every task/thread in the system has FPU state associated with it, in part due to the fact that glibc has to change some of the rounding mode bits, making them different than the default from

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Davide Libenzi
On Wed, 14 Feb 2007, Benjamin LaHaise wrote: On Wed, Feb 14, 2007 at 03:17:59PM -0800, Davide Libenzi wrote: That's an incorrect assumption. Every task/thread in the system has FPU state associated with it, in part due to the fact that glibc has to change some of the rounding

Re: [patch 06/11] syslets: core, documentation

2007-02-14 Thread Michael K. Edwards
On 2/14/07, Benjamin LaHaise [EMAIL PROTECTED] wrote: My opinion of this whole thread is that it implies that our thread creation and/or context switch is too slow. If that is the case, improve those elements first. At least some of those optimizations have to be done in hardware on x86, while

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
On Tue, 13 Feb 2007, Davide Libenzi wrote: > > > I can understand that chaining syscalls requires variable sharing, but > > > the majority of the parameters passed to syscalls are just direct > > > ones. Maybe a smart method that allows you to know if a parameter is a > > > direct one or a

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
On Tue, 13 Feb 2007, Ingo Molnar wrote: > > * Davide Libenzi wrote: > > > > +The Syslet Atom: > > > + > > > + > > > +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of > > > +user-space memory, which is the basic unit of execution within the syslet > > >

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Ingo Molnar
* Davide Libenzi wrote: > > +The Syslet Atom: > > + > > + > > +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of > > +user-space memory, which is the basic unit of execution within the syslet > > +framework. A syslet represents a single system-call and its

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
Wow! You really helped Zach out ;) On Tue, 13 Feb 2007, Ingo Molnar wrote: > +The Syslet Atom: > + > + > +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of > +user-space memory, which is the basic unit of execution within the syslet > +framework. A syslet

[patch 06/11] syslets: core, documentation

2007-02-13 Thread Ingo Molnar
From: Ingo Molnar <[EMAIL PROTECTED]> Add Documentation/syslet-design.txt with a high-level description of the syslet concepts. Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]> Signed-off-by: Arjan van de Ven <[EMAIL PROTECTED]> --- Documentation/syslet-design.txt | 137

[patch 06/11] syslets: core, documentation

2007-02-13 Thread Ingo Molnar
From: Ingo Molnar [EMAIL PROTECTED] Add Documentation/syslet-design.txt with a high-level description of the syslet concepts. Signed-off-by: Ingo Molnar [EMAIL PROTECTED] Signed-off-by: Arjan van de Ven [EMAIL PROTECTED] --- Documentation/syslet-design.txt | 137

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
Wow! You really helped Zach out ;) On Tue, 13 Feb 2007, Ingo Molnar wrote: +The Syslet Atom: + + +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of +user-space memory, which is the basic unit of execution within the syslet +framework. A syslet

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Ingo Molnar
* Davide Libenzi davidel@xmailserver.org wrote: +The Syslet Atom: + + +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of +user-space memory, which is the basic unit of execution within the syslet +framework. A syslet represents a single system-call

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
On Tue, 13 Feb 2007, Ingo Molnar wrote: * Davide Libenzi davidel@xmailserver.org wrote: +The Syslet Atom: + + +The syslet atom is a small, fixed-size (44 bytes on 32-bit) piece of +user-space memory, which is the basic unit of execution within the syslet

Re: [patch 06/11] syslets: core, documentation

2007-02-13 Thread Davide Libenzi
On Tue, 13 Feb 2007, Davide Libenzi wrote: I can understand that chaining syscalls requires variable sharing, but the majority of the parameters passed to syscalls are just direct ones. Maybe a smart method that allows you to know if a parameter is a direct one or a pointer to one?