File:  [NetBSD Developer Wiki] / wikisrc / projects / project / putter_pud_puffs.mdwn
Revision 1.1: download - view: text, annotated - select for diffs
Sun Nov 6 01:59:12 2011 UTC (4 years ago) by jmmv
Branches: MAIN
CVS tags: HEAD
Move existing project definitions from projects/gsoc_2011/ to
projects/project/ .

The goal for this reorganization is to remove any knowledge of the projects
classification from the file hierarchy: the classification goes into tags,
and projects indexes automatically list projects based on such tags.

Also, the current gsoc_2011 name was wrong anyway, because GSoC 2011 has
already concluded and projects would have had to move to a gsoc_2012 directory

Lastly, yes, "projects/project/*" is slightly redundant.  But I want to keep
the project lists from the projects "database" clearly separated.

This is as proposed in www@.

[[!template id=project

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


[Antti Kantee](

duration="3 months"

As is well-known, [puffs(3)]( 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)]( framework, which provides support for implementing character and block device servers in userspace. Both use [putter(9)]( 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]( 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]]
[[!tag easy]]
[[!tag userland]]

CVSweb for NetBSD wikisrc <> software: FreeBSD-CVSweb