![]() Figure 1: User space where applications reside, and kernel space where modules or device drivers reside Interfacing functions between user space and kernel space However, they don’t do so directly, but through the kernel supported functions.Īll of this is shown in figure 1. Obviously, these applications need to interact with the system's hardware. End-user programs, like the UNIX shell or other GUI based applications ( kpresenter for example), are part of the user space. Any subroutines or functions forming part of the kernel (modules and device drivers, for example) are considered to be part of kernel space. In the same way, the kernel, and in particular its device drivers, form a bridge or interface between the end-user/programmer and the hardware. Linux (which is a kernel) manages the machine's hardware in a simple and efficient manner, offering the user a simple and uniform programming interface. ![]() When you write device drivers, it’s important to make the distinction between “user space” and “kernel space”. Kernel 2.6.x will be used (in particular, kernel 2.6.8 under Debian Sarge, which is now Debian Stable). For simplicity, this brief tutorial will only cover type char devices loaded as modules. There are several different devices in Linux. All of these concepts should be familiar to an assembler programmer. It is necessary to know how microcomputers work internally: memory addressing, interrupts, etc. Some in-depth knowledge of C programming is needed, like pointer usage, bit manipulating functions, etc. In order to develop Linux device drivers, it is necessary to have an understanding of the following: “Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers?” Linus Torvalds Pre-requisites
0 Comments
Leave a Reply. |