Annotation of wikisrc/projects/project/putter_pud_puffs.mdwn, revision 1.3

1.1       jmmv        1: [[!template id=project
                      3: title="Userspace file system and device driver code sharing"
                      5: contact="""
                      6: [tech-userlevel](
                      7: """
                      9: mentors="""
                     10: [Antti Kantee](
                     11: """
1.2       jmmv       13: category="userland"
                     14: difficulty="easy"
1.1       jmmv       15: duration="3 months"
1.3     ! wiki       16: done_by="Vyacheslav Matyushin"
1.1       jmmv       17: 
                     18: description="""
                     19: 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.
                     21: Currently, puffs includes a userspace support library: libpuffs. It provides two facets:
                     23: * file system routines and callback interface
                     24: * generic parts, including kernel request handling
                     26: On the other hand, pud is without a userspace support library and servers talk with kernel directly with `read()` and `write()`.
                     28: 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.
                     30: 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.
                     31: """
                     32: ]]
                     34: [[!tag gsoc]]

CVSweb for NetBSD wikisrc <> software: FreeBSD-CVSweb