Many contemporary operating systems utilize a system call interface between the operating systems and its clients. Increasing numbers of systems are provided low-level mechanisms for intercepting and handling systems calls in user code. Nonetheless, they typically provide no higher-level tools or abstractions for effectively utilizing these mechanisms. Using them has typically required reimplementation of a substantial portion of the system interface from scratch, making the use of such facilities unwieldy at best.
I assert that an object-oriented toolkit can be constructed which substantially increases the ease of interposing user code between clients and instances of the system interface by allowing such code to be written in terms of the high-level objects provided by this interface, rather than in terms of the intercepted systems calls themselves.
Furthermore, I assert that having such a toolkit will enable new interposition agents to be written which otherwise would not have been attempted. Examples of interesting agents include: system call tracing tools, protected environments for running untrusted binaries, modified filesystem namespaces, transparent network data compression and/or encryption agents, transactional software environments and emulators for other operating system environment.