Everything's a File Descriptor

Session information has not yet been published for this event.

*
50 Minute Talk
Scheduled: Wednesday, August 19, 2015 from 10:25 – 11:15am in Willow B

One Line Summary

This talk will present clonefd, fd-based API design, and discuss other kernel APIs that would benefit from file descriptors.

Abstract

The classic UNIX philosophy, “everything’s a file”, allows tools and system calls that operate on files to work on devices, /proc, and other objects. This doesn’t mean everything has a filename; /dev, /proc, and /sys expose devices and kernel structures with filenames, but many new system calls offer file descriptors that serve as userspace handles for kernel structures without any corresponding filename, including signalfd, timerfd, and eventfd. The resulting file descriptors can be used with event loops using poll, epoll, or select.

Thiago Macieira and I implemented “clonefd”, which turns processes into file descriptors and turns waitpid() into poll or read. These descriptors serve as race-free, container-safe process identifiers.

This talk will present clonefd, fd-based API design, and discuss other kernel APIs that would benefit from file descriptors.

Speaker

  • Face

    Biography

    Josh Triplett hacks on system software, including Linux, X, Git, systemd, BITS, libffi, and Debian. Josh enjoys using software for unconventional purposes, such as porting Python to GRUB2 to test BIOS. Josh has previously presented at Kernel Summit, linux.conf.au, Linux Plumbers Conference, and the USENIX Annual Technical Conference. Josh Triplett is Intel’s Chrome OS architect. He still finds himself typoing “Haswell” as “Haskell” and vice versa. (Speaking only for myself.)