File:  [NetBSD Developer Wiki] / wikisrc / projects / project / putter_pud_puffs.mdwn
Revision 1.2: download - view: text, annotated - select for diffs
Sun Nov 6 14:48:47 2011 UTC (2 years, 5 months ago) by jmmv
Branches: MAIN
CVS tags: HEAD
Define the per-project category and difficulty at the template level,
instead of manually tagging the project pages.  While doing this, prefix
the tags with "category:" and "difficulty:" to make them easier to
understand.

[[!template id=project

title="Userspace file system and device driver code sharing"

contact="""
[tech-userlevel](mailto:tech-userlevel@NetBSD.org)
"""

mentors="""
[Antti Kantee](mailto:pooka@NetBSD.org)
"""

category="userland"
difficulty="easy"
duration="3 months"

description="""
As is well-known, [puffs(3)](http://netbsd.gw.com/cgi-bin/man-cgi?puffs+3+NetBSD-5.1+i386) is the NetBSD userspace file system framework. It provides support for implementing file servers in userspace. A lesser known "cousin" of puffs is the Pass-to-Userspace Device, or [pud(4)](http://netbsd.gw.com/cgi-bin/man-cgi?pud+4+NetBSD-5.1+i386) framework, which provides support for implementing character and block device servers in userspace. Both use [putter(9)](http://netbsd.gw.com/cgi-bin/man-cgi?putter+9+NetBSD-5.1+i386) for transmitting requests to and from the kernel.

Currently, puffs includes a userspace support library: libpuffs. It provides two facets:

* file system routines and callback interface
* generic parts, including kernel request handling

On the other hand, pud is without a userspace support library and servers talk with kernel directly with `read()` and `write()`.

The goal of the project is to modify libpuffs into a generic library which pud and puffs can share, and provide libpuffs and libpud built on this base. The submission should include a rough analysis of the source modules of libpuffs and what is going to happen to them during the project.

This project is fairly straightforward, but involves a reasonable amount of work. Plenty of [documentation](http://www.netbsd.org/docs/puffs/#moreinfo) exists to make the learning curve manageable. This project is an excellent opportunity to practise getting your hands dirty with real world systems.
"""
]]

[[!tag gsoc]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb