Linux GPU Driver Developer's Guide

Total Page:16

File Type:pdf, Size:1020Kb

Linux GPU Driver Developer's Guide Linux GPU Driver Developer’s Guide Release 4.13.0-rc4+ The kernel development community Sep 05, 2017 CONTENTS 1 Introduction 1 1.1 Style Guidelines ............................................... 1 1.2 Getting Started ............................................... 1 1.3 Contribution Process ............................................ 2 2 DRM Internals 3 2.1 Driver Initialization ............................................. 3 2.2 Open/Close, File Operations and IOCTLs ................................ 14 2.3 Misc Utilities ................................................. 21 2.4 Legacy Support Code ........................................... 22 3 DRM Memory Management 23 3.1 The Translation Table Manager (TTM) .................................. 23 3.2 The Graphics Execution Manager (GEM) ................................ 24 3.3 VMA Offset Manager ............................................ 38 3.4 PRIME Buffer Sharing ............................................ 44 3.5 DRM MM Range Allocator ......................................... 47 3.6 DRM Cache Handling ............................................ 56 3.7 DRM Sync Objects ............................................. 56 4 Kernel Mode Setting (KMS) 59 4.1 Overview ................................................... 59 4.2 KMS Core Structures and Functions ................................... 62 4.3 Modeset Base Object Abstraction .................................... 70 4.4 Atomic Mode Setting ............................................ 73 4.5 CRTC Abstraction .............................................. 91 4.6 Frame Buffer Abstraction ......................................... 102 4.7 DRM Format Handling ........................................... 107 4.8 Dumb Buffer Objects ............................................ 109 4.9 Plane Abstraction .............................................. 110 4.10 Display Modes Function Reference ................................... 118 4.11 Connector Abstraction ........................................... 130 4.12 Encoder Abstraction ............................................ 146 4.13 KMS Initialization and Cleanup ...................................... 149 4.14 KMS Locking ................................................. 151 4.15 KMS Properties ............................................... 154 4.16 Vertical Blanking .............................................. 174 5 Mode Setting Helper Functions 183 5.1 Modeset Helper Reference for Common Vtables ........................... 183 5.2 Atomic Modeset Helper Functions Reference ............................. 196 5.3 Legacy CRTC/Modeset Helper Functions Reference .......................... 214 5.4 Simple KMS Helper Reference ...................................... 217 5.5 fbdev Helper Functions Reference .................................... 219 5.6 Framebuffer CMA Helper Functions Reference ............................. 229 i 5.7 Bridges .................................................... 232 5.8 Panel Helper Reference .......................................... 238 5.9 Display Port Helper Functions Reference ................................ 242 5.10 Display Port Dual Mode Adaptor Helper Functions Reference .................... 247 5.11 Display Port MST Helper Functions Reference ............................. 250 5.12 MIPI DSI Helper Functions Reference .................................. 258 5.13 Output Probing Helper Functions Reference .............................. 267 5.14 EDID Helper Functions Reference .................................... 270 5.15 SCDC Helper Functions Reference .................................... 277 5.16 Rectangle Utilities Reference ....................................... 279 5.17 HDMI Infoframes Helper Reference ................................... 284 5.18 Flip-work Helper Reference ........................................ 287 5.19 Plane Helper Reference .......................................... 289 5.20 Auxiliary Modeset Helpers ......................................... 292 6 Userland interfaces 295 6.1 libdrm Device Lookup ........................................... 295 6.2 Primary Nodes, DRM Master and Authentication ........................... 296 6.3 Open-Source Userspace Requirements ................................. 297 6.4 Render nodes ................................................ 298 6.5 IOCTL Support on Device Nodes ..................................... 299 6.6 Testing and validation ........................................... 302 6.7 Sysfs Support ................................................ 305 6.8 VBlank event handling ........................................... 305 7 drm/i915 Intel GFX Driver 307 7.1 Core Driver Infrastructure ......................................... 307 7.2 Display Hardware Handling ........................................ 316 7.3 Memory Management and Command Submission .......................... 343 7.4 GuC ...................................................... 355 7.5 Tracing .................................................... 358 7.6 Perf ...................................................... 359 8 drm/meson AmLogic Meson Video Processing Unit 379 8.1 Video Processing Unit ........................................... 379 8.2 Video Input Unit ............................................... 379 8.3 Video Post Processing ........................................... 380 8.4 Video Encoder ................................................ 380 8.5 Video Canvas Management ........................................ 381 8.6 Video Clocks ................................................. 381 8.7 HDMI Video Output ............................................. 381 9 drm/pl111 ARM PrimeCell PL111 CLCD Driver 383 10drm/tegra NVIDIA Tegra GPU and display driver 385 10.1 Driver Infrastructure ............................................ 385 10.2 KMS driver .................................................. 389 10.3 Userspace Interface ............................................ 391 11drm/tinydrm Driver library 393 11.1 Core functionality .............................................. 393 11.2 Additional helpers ............................................. 396 11.3 MIPI DBI Compatible Controllers ..................................... 399 12drm/vc4 Broadcom VC4 Graphics Driver 405 12.1 Display Hardware Handling ........................................ 405 12.2 Memory Management and 3D Command Submission ........................ 406 13VGA Switcheroo 409 ii 13.1 Modes of Use ................................................ 409 13.2 API ....................................................... 410 13.3 Handlers ................................................... 417 14VGA Arbiter 421 14.1 vgaarb kernel/userspace ABI ....................................... 421 14.2 In-kernel interface ............................................. 422 14.3 libpciaccess ................................................. 424 14.4 xf86VGAArbiter (X server implementation) .............................. 425 14.5 References .................................................. 425 15drm/bridge/dw-hdmi Synopsys DesignWare HDMI Controller 427 15.1 Synopsys DesignWare HDMI Controller ................................. 427 16TODO list 429 16.1 Subsystem-wide refactorings ....................................... 429 16.2 Core refactorings .............................................. 431 16.3 Better Testing ................................................ 433 16.4 Driver Specific ................................................ 434 16.5 Outside DRM ................................................. 434 Index 435 iii iv CHAPTER ONE INTRODUCTION The Linux DRM layer contains code intended to support the needs of complex graphics devices, usually containing programmable pipelines well suited to 3D graphics acceleration. Graphics drivers in the kernel may make use of DRM functions to make tasks like memory management, interrupt handling and DMA easier, and provide a uniform interface to applications. A note on versions: this guide covers features found in the DRM tree, including the TTM memory manager, output configuration and mode setting, and the new vblank internals, in addition to all the regular features found in current kernels. [Insert diagram of typical DRM stack here] 1.1 Style Guidelines For consistency this documentation uses American English. Abbreviations are written as all-uppercase, for example: DRM, KMS, IOCTL, CRTC, and so on. To aid in reading, documentations make full use of the markup characters kerneldoc provides: @parameter for function parameters, @member for structure members (within the same structure), &struct structure to reference structures and function() for func- tions. These all get automatically hyperlinked if kerneldoc for the referenced objects exists. When ref- erencing entries in function vtables (and structure members in general) please use &vtable_name.vfunc. Unfortunately this does not yet yield a direct link to the member, only the structure. Except in special situations (to separate locked from unlocked variants) locking requirements for func- tions aren’t documented in the kerneldoc. Instead locking should be check at runtime using e.g. WARN_ON(!mutex_is_locked(...));. Since it’s much easier to ignore documentation than runtime noise this provides more value. And on top of that runtime checks do need to be updated when the locking rules change, increasing the chances that they’re correct. Within the documentation the locking rules should be explained in the relevant structures: Either in the comment for the lock explaining what it protects,
Recommended publications
  • Is Parallel Programming Hard, And, If So, What Can You Do About It?
    Is Parallel Programming Hard, And, If So, What Can You Do About It? Edited by: Paul E. McKenney Linux Technology Center IBM Beaverton [email protected] December 16, 2011 ii Legal Statement This work represents the views of the authors and does not necessarily represent the view of their employers. IBM, zSeries, and Power PC are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. Linux is a registered trademark of Linus Torvalds. i386 is a trademarks of Intel Corporation or its subsidiaries in the United States, other countries, or both. Other company, product, and service names may be trademarks or service marks of such companies. The non-source-code text and images in this doc- ument are provided under the terms of the Creative Commons Attribution-Share Alike 3.0 United States li- cense (http://creativecommons.org/licenses/ by-sa/3.0/us/). In brief, you may use the contents of this document for any purpose, personal, commercial, or otherwise, so long as attribution to the authors is maintained. Likewise, the document may be modified, and derivative works and translations made available, so long as such modifications and derivations are offered to the public on equal terms as the non-source-code text and images in the original document. Source code is covered by various versions of the GPL (http://www.gnu.org/licenses/gpl-2.0.html). Some of this code is GPLv2-only, as it derives from the Linux kernel, while other code is GPLv2-or-later.
    [Show full text]
  • Streaming Integrated Amplifier User’S Manual U S E’ S M an U a L
    OmniaOmnia A300 Streaming Integrated Amplifier User’s Manual U S E’ S M AN U A L Table of Contents FCC NOTICE - DECLARATION OF CONFORMITY INFORMATION .................................................................... 2 EU DECLARATION OF CONFORMITY ........................................................................................................... 3 SAFETY INSTRUCTIONS ............................................................................................................................. 4 WHAT’S IN THE BOX .................................................................................................................................. 7 QUICK SETUP GUIDE .............................................................................................................................. 8 WIRELESS AUTO SETUP ............................................................................................................................. 9 CONTROLLING MULTIPLE A300 AND RE-STREAMING ........................................................................ 14 WIRELESS MANUAL SETUP ................................................................................................................. 16 INTRODUCTION ................................................................................................................................... 17 TECHNICAL HIGHLIGHTS ......................................................................................................................... 17 LISTENING OPTIMIZATION .....................................................................................................................
    [Show full text]
  • Ati Driver Freebsd
    Ati driver freebsd Hey, I`m new to teh the bsd *BSD world and just installed Freebsd FreeBSD. Only thing missing is my video driver. ATI Radeon X How to Solved - Switch between ATI and VESA drivers? If you want to automatically load a video driver at boot time, we recommend to do it from /etc/:Radeon​: ​ It allows the use of newer xfvideo-ati drivers and AMD GPUs. This project started in January Initial radeon code comes from Linux. EndSection DESCRIPTION radeon is an Xorg driver for ATI/AMD RADEON-based video cards with the following features: o Full support for 8-, , and. This package contains the xfvideo-ati driver. xdrivers/drm-kmod: Port for the DRM kernel drivers for FreeBSD This port. If I boot X11 with no or with ati driver, the system stops responding, although cursor continues to follow mouse movements. (I suppose. To all those concerned, I have read that FreeBSD would be supported by the latest graphic card drivers, which was also confirmed by. I bought an expensive ATI card when they announced they'll go Note that AMD doesn't provide a driver for FreeBSD, so you'll be using the. We now know for sure that FreeBSD will ship with a kernel mode-setting driver for supporting open-source AMD Radeon graphics with its. AMD tech support has allegedly confirmed that Catalyst is being ported to FreeBSD. A Phoronix reader pointed out this thread. I am not sure that FreeBSD will fully support this card. The Xorg version for FreeBSD is and the ATI driver used is version The reason is, AMD/ATI doesn't support FreeBSD, and you have to resort to the sucky open source drivers.
    [Show full text]
  • – Amlogic S905X2 Chipset – Armv8-A Architecture – ARM G31
    NV-720 series IPTV Set-Top Boxes Data Sheet Integrated Networking Solutions – Amlogic S905X2 chipset – ARMv8-A architecture – ARM G31 MP2 graphic accelerator – 2D/3D accelerators, support for OpenGL 3.2 – OS Android 9 – App store – Support for widely used Middleware – Android API, SDK – H.265 – 4Kp60 decoding – Wi-Fi 802.11a/b/g/n/ac – HDMI 2.1 NV-720 IPTV set-top boxes on Android ensure a new Peer-to-Peer TV level of service provision. NV-720 series set-top boxes support real-time NV-720 is an excellent way to promote digital television playback of media files via DC++ protocol without a services and to attract new customers. PC or files preloading to a local disk. There is an opportunity of downloaded files queue creation, Android platform background downloading and organization of an NV-711 Android allows the creation of a single universal illustrated page (catalogue) for media content. platform for access to services including AndroidTV interface. Basic services – HD/UHD IPTV Customized app store creation – OTT The open platform and development tools (SDK, API) – VoD make it possible to create new operator services. – Media Player (files playback from external storage media and a local network) Hardware – Electronic program guide (EPG) Quad-core Amlogic media processor supports a wide – Support for cloud services range of audio and video formats. – Online sources: YouTube, Internet radio, etc. – Provider’s app store Up-to-date Wi-Fi technologies – Support for HLS NV-720-WB set-top boxes support up-to-date Wi-Fi – Peer-to-Peer TV (streaming via DC++) standards: 802.11a/b/g/n/ас.
    [Show full text]
  • A Simplified Graphics System Based on Direct Rendering Manager System
    J. lnf. Commun. Converg. Eng. 16(2): 125-129, Jun. 2018 Regular paper A Simplified Graphics System Based on Direct Rendering Manager System Nakhoon Baek* , Member, KIICE School of Computer Science and Engineering, Kyungpook National University, Daegu 41566, Korea Abstract In the field of computer graphics, rendering speed is one of the most important factors. Contemporary rendering is performed using 3D graphics systems with windowing system support. Since typical graphics systems, including OpenGL and the DirectX library, focus on the variety of graphics rendering features, the rendering process itself consists of many complicated operations. In contrast, early computer systems used direct manipulation of computer graphics hardware, and achieved simple and efficient graphics handling operations. We suggest an alternative method of accelerated 2D and 3D graphics output, based on directly accessing modern GPU hardware using the direct rendering manager (DRM) system. On the basis of this DRM support, we exchange the graphics instructions and graphics data directly, and achieve better performance than full 3D graphics systems. We present a prototype system for providing a set of simple 2D and 3D graphics primitives. Experimental results and their screen shots are included. Index Terms: Direct rendering manager, Efficient handling, Graphics acceleration, Light-weight implementation, Prototype system I. INTRODUCTION Rendering speed is one of the most important factors for 3D graphics application programs. Typical present-day graph- After graphics output devices became publicly available, a ics programs need to be able to handle very large quantities large number of graphics applications were developed for a of graphics data. The larger the data size, and the more sen- broad spectrum of uses including computer animations, com- sitive to the rendering speed, the better the speed-up that can puter games, user experiences, and human-computer inter- be achieved, even for minor aspects of the graphics pipeline.
    [Show full text]
  • Amlogic Application Notes
    Amlogic Openlinux Release Notes Amlogic Buildroot Openlinux Release Note AMLOGIC, Inc. 2518 Mission College Blvd Santa Clara, CA 95054 U.S.A. www.amlogic.com AMLOGIC reserves the right to change any information described herein at any time without notice. AMLOGIC assumes no responsibility or liability from use of such information. Amlogic Confidential 1 Amlogic Openlinux Release Notes Content 1. Basic Information .............................................................................................................................................................. 3 1.1. INTRODUCTION ............................................................................................................................................................ 3 1.1.1. Kernel Version .................................................................................................................................................... 3 1.1.2. List of Supported Drivers .................................................................................................................................... 3 1.2. CHIP INFORMATION ..................................................................................................................................................... 3 1.3. HOW TO GET CODE ...................................................................................................................................................... 4 1.4. REFERENCE PLATFORM ...............................................................................................................................................
    [Show full text]
  • Porting X Windows System to Operating System Compliant with Portable Operating System Interface
    (IJACSA) International Journal of Advanced Computer Science and Applications, Vol. 11, No. 7, 2020 Porting X Windows System to Operating System Compliant with Portable Operating System Interface Andrey V. Zhadchenko1, Kirill A. Mamrosenko2, Alexander M. Giatsintov3 Center of Visualization and Satellite Information Technologies Scientific Research Institute of System Analysis Moscow, Russia Abstract—Now-a-days graphical interface is very important separated process contexts [4]. Current graphical subsystem for any operating system, even the embedded ones. Adopting is server-client X windows system implementation named existing solutions will be much easier than developing your XFree86 with version 4.8.0. Although XFree86 [5] supports up own. Moreover, a lot of software may be reused in this case. to the X11R6.6 protocol version, which is barely enough to run This article is devoted to X Window System adaptation for modern applications, absence of many important extensions, Portable Operating System Interface (POSIX) compliant real- for example, Xrender [6], implies heavy limits upon software. time operating system Baget. Many encountered problems come from the tight connection between X and Linux, therefore it is expected to encounter these issues during usage of X on non- Nowadays existing free software solutions in display Linux systems. Discussed problems include, but not limited to servers for operating systems are limited to two options: X the absence of dlopen, irregular file paths, specific device drivers. Windows System and Wayland [7]. However, there is a big Instructions and recommendations to solve these issues are given. ideological difference between them. X started it’s history a A comparison between XFree86 and Xorg implementations of X long time ago in the ’80s and was developed as an all-around is discussed.
    [Show full text]
  • Global Network Investment Competition Fudan University Supreme Pole ‐ Allwinner Technology
    Global Network Investment Competition Fudan University Supreme Pole ‐ Allwinner Technology Date: 31.10.2017 Fan Jiang Jianbin Gu Qianrong Lu Shijie Dong Zheng Xu Chunhua Xu Allwinner Technology ‐‐ Sail Again We initiate coverage on Allwinner Technology with a strong BUY rating, target price is derived by DCF at CNY ¥ 35.91 , indicating Price CNY ¥ 27.60 30.1% upside potential. Price Target CNY ¥ 35.91 Upside Potential 30.1% Target Period 1 Year We recommend based on: 52 week Low CNY ¥ 23.4 Broad prospects of the AI. 52 week High CNY ¥ 54.02 Supporting of the industry policy. Average Volume CNY ¥ 190.28 M Allwinner has finished its transition. Market Cap CNY ¥ 96.08 B The rise of the various new P/E 64 products will put the margins back Price Performance in the black. 60 The current valuation, 64.x P/E, is 50 lower than its competitor such as 40 Ingenic which is trading at more 30 than 100 and Nationz which is 20 trading at 76.x P/E. 10 0 Overview for Allwinner Allwinner Technology, founded in 2007, is a leading fabless design company dedicated to smart application processor SoCs and smart analog ICs. Its product line includes multi‐core application processors for smart devices and smart power management ICs used worldwide. These two categories of products are applied to various types of intelligent terminals into 3 major business lines: Consumer Electronics: Robot, Smart Hardware Open Platform, Tablets, Video Theater Device, E‐Reader, Video Story Machine, Action Camera, VR Home Entertainment: OTT Box, Karaoke Machine, IPC monitoring Connected Automotive Applications: Dash Cams, Smart Rear‐view Mirror, In Car Entertainment THE PROSPECT OF AI AI(Artificial Intelligence) has a wider range of global concern and is entering its third golden period of development.
    [Show full text]
  • ECS2100 Series CLI Reference Guide
    ECS2100-10T/PE/P ECS2100-28T/P/PP 10/28-Port Web-smart Pro Gigabit Ethernet Switch CLI Reference Guide Software Release v1.2.2.15 www.edge-core.com CLI Reference Guide ECS2100-10T Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 8 10/100/1000BASE-T (RJ-45) Ports and 2 Gigabit SFP Ports ECS2100-10PE Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 8 10/100/1000BASE-T (RJ-45) 802.3 af/at PoE Ports with 2 Gigabit SFP Ports (PoE Power Budget: 65W) ECS2100-10P Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 8 10/100/1000BASE-T (RJ-45) 802.3 af/at PoE Ports and 2 Gigabit SFP Ports (PoE Power Budget: 125 W) ECS2100-28T Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 24 10/100/1000BASE-T (RJ-45) Ports and 4 Gigabit SFP Ports ECS2100-28P Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 24 10/100/1000BASE-T (RJ-45) 802.3 af/at PoE Ports and 4 Gigabit SFP Ports (PoE Power Budget: 200 W) ECS2100-28PP Gigabit Ethernet Switch Web-smart Pro Gigabit Ethernet Switch with 24 10/100/1000BASE-T (RJ-45) 802.3 af/at PoE Ports and 4 Gigabit SFP Ports (PoE Power Budget: 370 W, can extend to 740 W) E012019-CS-R05 How to Use This Guide This guide includes detailed information on the switch software, including how to operate and use the management functions of the switch. To deploy this switch effectively and ensure trouble-free operation, you should first read the relevant sections in this guide so that you are familiar with all of its software features.
    [Show full text]
  • 11. Kernel Design 11
    11. Kernel Design 11. Kernel Design Interrupts and Exceptions Low-Level Synchronization Low-Level Input/Output Devices and Driver Model File Systems and Persistent Storage Memory Management Process Management and Scheduling Operating System Trends Alternative Operating System Designs 269 / 352 11. Kernel Design Bottom-Up Exploration of Kernel Internals Hardware Support and Interface Asynchronous events, switching to kernel mode I/O, synchronization, low-level driver model Operating System Abstractions File systems, memory management Processes and threads Specific Features and Design Choices Linux 2.6 kernel Other UNIXes (Solaris, MacOS), Windows XP and real-time systems 270 / 352 11. Kernel Design – Interrupts and Exceptions 11. Kernel Design Interrupts and Exceptions Low-Level Synchronization Low-Level Input/Output Devices and Driver Model File Systems and Persistent Storage Memory Management Process Management and Scheduling Operating System Trends Alternative Operating System Designs 271 / 352 11. Kernel Design – Interrupts and Exceptions Hardware Support: Interrupts Typical case: electrical signal asserted by external device I Filtered or issued by the chipset I Lowest level hardware synchronization mechanism Multiple priority levels: Interrupt ReQuests (IRQ) I Non-Maskable Interrupts (NMI) Processor switches to kernel mode and calls specific interrupt service routine (or interrupt handler) Multiple drivers may share a single IRQ line IRQ handler must identify the source of the interrupt to call the proper → service routine 272 / 352 11. Kernel Design – Interrupts and Exceptions Hardware Support: Exceptions Typical case: unexpected program behavior I Filtered or issued by the chipset I Lowest level of OS/application interaction Processor switches to kernel mode and calls specific exception service routine (or exception handler) Mechanism to implement system calls 273 / 352 11.
    [Show full text]
  • Elinux Status
    Status of Embedded Linux Status of Embedded Linux April 2015 Tim Bird Architecture Group Chair 1 LF CE Workgroup 1 10/23/2014 PA1 Confidential Outline Kernel Versions Technology Areas CE Workgroup Projects Other Stuff Resources 2 2 10/23/2014 PA1 Confidential Outline Kernel Versions Technology Areas CE Workgroup Projects Other Stuff Resources 3 3 10/23/2014 PA1 Confidential Kernel Versions • Linux v3.14 – 30 Mar 2014 – 70 days • Linux v3.15 – 8 Jun 2014 – 70 days • Linux v3.16 – 3 Aug 2014 – 57 days • Linux v3.17 – 5 Oct 2014 – 63 days • Linux v3.18 – 7 Dec 2014 – 63 days • Linux v3.19 – 8 Feb 2015 – 63 day • Linux v4.0-rc7 – (60 days so far) • Linus said probably this weekend or next 4 4 10/23/2014 PA1 Confidential Linux v3.14 • Last long-term stable (LTS) kernel • LTS is at 3.14.37 (as of March 2015) • Will be supported until August of 2016 • Current LTSI is based on 3.14.28 5 10/23/2014 PA1 Confidential Linux v3.16 • Power-aware scheduling • decode_stacktrace.sh • Converts offsets in a stack trace to filenames and line numbers • F2FS large volume support 6 10/23/2014 PA1 Confidential Linux v3.17 • Lots of ARM hardware support • Newly enabled ARM hardware • Rockchip RK3288 SoC • Allwinner A23 SoC • Allwinner A31 Hummingbird • Tegra30 Apalis board support • Gumstix Pepper AM335x • AM437x TI evaluation board • Other ARM boards with existing support also saw improvements with Linux 3.17 • Rework of "config-bisect" mode in ktest 7 10/23/2014 PA1 Confidential Linux v3.18 • OverlayFS introduced • Size reduction patch: • madvise and fadvise
    [Show full text]
  • Understanding the Linux Kernel, 3Rd Edition by Daniel P
    1 Understanding the Linux Kernel, 3rd Edition By Daniel P. Bovet, Marco Cesati ............................................... Publisher: O'Reilly Pub Date: November 2005 ISBN: 0-596-00565-2 Pages: 942 Table of Contents | Index In order to thoroughly understand what makes Linux tick and why it works so well on a wide variety of systems, you need to delve deep into the heart of the kernel. The kernel handles all interactions between the CPU and the external world, and determines which programs will share processor time, in what order. It manages limited memory so well that hundreds of processes can share the system efficiently, and expertly organizes data transfers so that the CPU isn't kept waiting any longer than necessary for the relatively slow disks. The third edition of Understanding the Linux Kernel takes you on a guided tour of the most significant data structures, algorithms, and programming tricks used in the kernel. Probing beyond superficial features, the authors offer valuable insights to people who want to know how things really work inside their machine. Important Intel-specific features are discussed. Relevant segments of code are dissected line by line. But the book covers more than just the functioning of the code; it explains the theoretical underpinnings of why Linux does things the way it does. This edition of the book covers Version 2.6, which has seen significant changes to nearly every kernel subsystem, particularly in the areas of memory management and block devices. The book focuses on the following topics: • Memory management, including file buffering, process swapping, and Direct memory Access (DMA) • The Virtual Filesystem layer and the Second and Third Extended Filesystems • Process creation and scheduling • Signals, interrupts, and the essential interfaces to device drivers • Timing • Synchronization within the kernel • Interprocess Communication (IPC) • Program execution Understanding the Linux Kernel will acquaint you with all the inner workings of Linux, but it's more than just an academic exercise.
    [Show full text]