|| ||Zach Brown <email@example.com>|
|| ||syslets v7: back to basics|
|| ||Thu, 6 Dec 2007 15:20:13 -0800|
|| ||Linus Torvalds <firstname.lastname@example.org>,
Ingo Molnar <email@example.com>,
Ulrich Drepper <firstname.lastname@example.org>,
Arjan van de Ven <email@example.com>,
Andrew Morton <firstname.lastname@example.org>,
Alan Cox <email@example.com>,
Evgeniy Polyakov <firstname.lastname@example.org>,
"David S. Miller" <email@example.com>,
Suparna Bhattacharya <firstname.lastname@example.org>,
Davide Libenzi <email@example.com>,
Jens Axboe <firstname.lastname@example.org>,
Thomas Gleixner <email@example.com>,
Dan Williams <firstname.lastname@example.org>,
Jeff Moyer <email@example.com>,
Simon Holm Thogersen <firstname.lastname@example.org>,
The following patches are a substantial refactoring of the syslet code. I'm
branding them as the v7 release of the syslet infrastructure, though they
represent a signifiant change in focus.
My current focus is to see the most fundamental functionality brought to
maturity. To me, this means getting a ABI that is used by applications through
glibc on x86 and PPC64. Only once that is ready should we distract ourselves
with advanced complexity.
To that end, this patch series differs from v6 in significant ways:
* syslets are initiated by providing syslet arguments to sys_indirect().
* uatoms, threadlets, and the kaio changes are postponed until they can be
justified and rebuilt on more complete infrastructure. (I'm not saying
these shouldn't or won't be persued. I'm saying that we should get the
simplest piece working first.)
* the code is clarified and commented, the patches are bisectable and pass
The use of sys_indirect() and the move from 'atom's simplified the ABI
considerably. I've put a trivial example in a syslet-userspace git tree:
This git repository will grow more tests and documentation over time.
The patches sent with this mail are based on the v6 indirect patches but they
aren't included. The full syslets patch series, including the indirect
patches, are available in a few forms:
broken out patch series:
in a 'syslets' git branch off of current linux-2.6.git:
git tree of the guilt .git/patches directory:
The patches were barely tested on i386 and x86_64.
There are both implementation details and design problems left. My hope is
that we can address these in the coming weeks.
- Do we stop the user from initiating more syslets than fit in the ring?
- Do we worry now about the hashed ring mutexes scaling poorly? (They will.)
- What are the semantics of ptrace()ing a syslet submission which blocks?
- How should applications deal with waiting syslet tasks with stale data
in their task_struct? (syslet, setuid, syslet..)
- Issuing a syslet is an implicit sys_clone(), will apps pass in clone flags?
- Are the u32 ring index reads and writes atomic for supported architectures?
Any feedback on these questions would be greatly appreciated.
I'm particularly interested in hearing from people who are trying to use
syslets in their applications. This will involve awkward wrappers instead of
glibc calls for now, and your machine may explode, but hopefully the chance to
influence the design of syslets would make it worth the effort.
Finally, I carried the enormous cc: list for this mail over from previous
syslet releases. If you want to be removed or added to the list for future
syslet releases, please do let me know.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to email@example.com
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/