Utilizing Linux Kernel Components in K42 Jonathan Appavoo Marc Auslander Dilma DaSilva David Edelsohn Orran Krieger Michal Ostrowski Bryan Rosenburg Robert W. Wisniewski Jimi Xenidis This paper discusses how K42 uses Linux-kernel components to support a wide range of hardware, a full-featured TCP/IP stack and Linux file-systems. An examination of the run-time environment within the Linux-kernel is the starting point for a presentation of the strategy taken to incorporate Linux-kernel code in K42. There are four basic aspects of this strategy; presenting K42 as an architecture target for Linux-kernel code, developing interfaces allowing K42 code to call Linux-kernel code, implementing some Linux-kernel internal interfaces using K42 facilities and selectively building Linux-kernel code to include only the desired components. Of these four aspects the first is the most technically interesting and is the focus of most of this paper. 1. Introduction One of the goals of K42 is to develop a platform that can become a basis of operating systems research for a broad community. To attain this goal K42 must acquire a critical mass of avail- able applications and support a broad range of hardware devices to allow it to be used with commonly available, inexpensive hardware. This paper addresses K42’s approach to the second problem of how the existing Linux-kernel code base is used to provide the desired range of hard- ware drivers available for use in K42 (the first problem is addressed in another white-paper). In addition to using Linux for hardware driver support, Linux networking and file system code is used to provide a stable, inter-operable environment and provide a basis for comparative evaluation of K42 and Linux implementations of core system services. 2. Constraints There are a number of high-level issues to be considered that determine our approach to using Linux-kernel components in K42. This section outlines the constraints from which the chosen approach arises. The goal of effort described in this paper is to allow for a broad range of Linux-kernel compo- nents to be used in K42. Modifying each component to work with K42 would be an enormous task, made even more daunting by the constant development activity being performed on this code (which makes maintenance of changes as serious problem). Therefore, it is highly desirable to develop a means by which Linux-kernel components can be used without modification. In- 1