Linux-Treiber entwickeln

Ähnliche Dokumente
Die drei Engel der Weihnacht

Agile Softwareentwicklung

Webseiten entwickeln mit ASP.NET

Bewegungssimulation mit CATIA V5

JVEG. Kommentar. Bearbeitet von Von Hagen Schneider, Dipl.-Rechtspfleger

C++ Einführung und professionelle Programmierung. von Ulrich Breymann. 8., erweiterte Auflage. Hanser München 2005

Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung. von Eduard Glatz. 1. Auflage

Grundkurs Programmieren in Visual C#

Rechnergrundlagen. Vom Rechenwerk zum Universalrechner

Web-Technologien. Architekturen, Konzepte, Trends. Bearbeitet von Matthias Schmauch, Anatol Badach, Sebastian Rieger

DIN EN ISO 9000:2000 ff. umsetzen

Software-Entwicklung mit Delphi

Richtig einsteigen: Access 2010 VBA-Programmierung

Grundlagen des Marketingmanagements

ipad Air und ipad mini Retina

BDSG. Bundesdatenschutzgesetz

Lexikon der Betriebswirtschaft

VBA mit Microsoft Excel für Kids

Moderne Workflow-Programmierung mit ABAP Objects

HTML5, JavaScript und jquery

mitp Professional Python 3 Lernen und professionell anwenden von Michael Weigend 5., überarbeitete Auflage 2013

Wo ist das Problem? Mit Design Thinking Innovationen entwickeln und umsetzen. Bearbeitet von Markus Blatt, Emmanuel Sauvonnet

Jahresabschlusserstellung

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

Das neue Insolvenzrecht nach dem ESUG

Ehevertrag und Scheidungsvereinbarung in Frage und Antwort

Vom Entwurf zur Schachtel

Microsoft Office 2013 auf einen Blick

Ruby on Rails. Einstieg in die effiziente Webentwicklung -Grundlagen und fortgeschrittene Konzepte -Ajax / Web 2.0 -Einführung in Ruby

JavaScript objektorientiert

Das Prinzip Achtsamkeit

Abenteuer Softwarequalität

Geschichten vom Scrum

Beck kompakt. Mein Testament. Die letzten Dinge klug und richtig regeln. Bearbeitet von Bernhard F. Klinger, Thomas Maulbetsch

Gewerblicher Rechtsschutz und Urheberrecht

R für Einsteiger. Einführung in die Statistiksoftware für die Sozialwissenschaften. Mit Online-Materialien. von Maike Luhmann.

Microsoft Office Excel 2010

Das Canon EOS 70D Handbuch

Mathematik für Wirtschaftswissenschaftler

Beck kompakt. Elternunterhalt. Wenn Eltern teuer werden. von Jürgen Wabbel. 2. Auflage

Strafgesetzbuch: StGB

Beck-Wirtschaftsberater im dtv Teamentwicklung. Der effektive Weg zum 'Wir' von Susanne Bender. 3. Auflage. Verlag C.H.

Krankenhausentgeltgesetz

Gradle. Ein kompakter Einstieg in modernes Build-Management. Joachim Baumann. Joachim Baumann, Gradle, dpunkt.verlag, ISBN

Aktuelles Recht für die Praxis. Jugendschutz. Ein Leitfaden für die Praxis. von Kirsten Trittermann. 1. Auflage

Der Täter-Opfer-Ausgleich

Publikum und Museen in der Schweiz

Geschäftsmodell-Innovation

Beck kompakt. Executive Summary. Überzeugende Entscheidungsvorlagen für das Management. Bearbeitet von Von Claudia Meindel

Das Recht der Arbeitnehmererfindung

Office 2010 Programmierung mit VSTO und.net 4.0

Homöopathische Konstitutionsmittel für Pferde

Agile Softwareentwicklung in großen Projekten

bhv bei Redline von Helmut Neumann bhv Foto-Praxis: SONY Cyber-shot Neumann schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Microsoft Office Outlook Die offizielle Schulungsunterlage

Google SketchUp 7. von Dr. Detlef Ridder. 1. Auflage. Google SketchUp 7 Ridder schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Handbuch zur Umsatzsteuer 2016: USt 2016

Soziale Kompetenzen als strategischer Erfolgsfaktor für Führungskräfte

Pressearbeit in der IT-Branche

manchen Situationen bei der Fehlersuche und bei der Erzeugung von Anwendungen mit C# und.net helfen wird.

Insolvenzrechtliche Vergütung (InsVV)

Sicherheit für Maschinen und Anlagen

Musteranträge Mietrecht

Arbeitszeitgesetz: ArbZG

Die Arbeit mit Models

Technische Richtlinie XML-Datenaustauschformat für hoheitliche Dokumente (TR XhD) 1 Rahmenwerk

Qualitätstechniken. Werkzeuge zur Problemlösung und ständigen Verbesserung. von Dr. Philipp Theden, Hubertus Colsman. 1. Auflage

Deskriptive Statistik

Netzwerkprogrammierung unter Linux und UNIX

Sozialgerichtsgesetz: SGG

Bundeszentralregistergesetz: BZRG

ARCHICAD 10. Praktisches Handbuch für Entwurf, Planung und Realisierung. von Martin Schnitzer, Markus Denzlinger. 1. Auflage. Hanser München 2006

Web Analytics & Web Controlling

Qualitätsmanagement in der Arztpraxis

mitp/die kleinen Schwarzen Scrivener Texte professionell konzipieren, schreiben und veröffentlichen Bearbeitet von Stephan Lamprecht

Mein Einbürgerungstest

BDSG Bundesdatenschutzgesetz

Mikrocomputertechnik mit der 8051-Controller-Familie

Architekturfotografie

Systematisches Requirements Engineering

Schnellkurs Buchführung

Statistik für Wirtschaftswissenschaftler

Strafrecht Allgemeiner Teil

Haufe Sachbuch Wirtschaft. Wie Werbung wirkt. Erkenntnisse des Neuromarketing

Lehrstuhl Informatik 4

Mathematik im Betrieb

Biografie - Partizipation - Behinderung

Controlling Basiswissen

Transkulturelle Pflege am Lebensende

Transkript:

Linux-Treiber entwickeln Eine systematische Einführung in Gerätetreiber für den Kernel 2.6 von Jürgen Quade, Eva K Kunst überarbeitet Linux-Treiber entwickeln Quade / Kunst schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG dpunkt.verlag 2006 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 89864 392 4 Inhaltsverzeichnis: Linux-Treiber entwickeln Quade / Kunst

Linux-Treiber entwickeln Eine systematische Einführung in Gerätetreiber für den Kernel 2.6 von Jürgen Quade, Eva K Kunst überarbeitet Linux-Treiber entwickeln Quade / Kunst schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG dpunkt.verlag 2006 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 89864 392 4 Inhaltsverzeichnis: Linux-Treiber entwickeln Quade / Kunst

v Vorwort zur zweiten Auflage Mit Kernel 2.6.11 hat Linus Torvalds sein Entwicklungsmodell und auch die Versionierung des Linux-Kernels modifiziert. Statt einen separaten Entwickler-Kernel zu pflegen, lässt Torvalds neue Technologien direkt in den Standard-Kernel einfließen respektive entfernter Komponenten, wenn diese als nicht zeitgemäß oder ausgereift genug erscheinen. Für den Fall, dass ein nach diesem Modell bereits als stabil veröffentlichter Kernel noch ein Update einen Patch benötigt, hat der Chefentwickler die Versionsnummer um eine vierte Stelle erweitert. Der Kernel mit der Basisversion 2.6.14 hat beispielsweise zur Zeit sechs Update-Runden erfahren. Aktuell ist demnach die Version 2.6.14.6. Die Folge dieser Versionspolitik ist, dass sich auch die Interfaces der neueren 2.6er-Kernel durchaus von denen der älteren 2.6er-Kernel unterscheiden. Das allein macht es bereits notwendig, eine Überarbeitung der ersten Auflage unseres Buches vorzunehmen und an die aktuelle Entwicklung anzupassen. Für die zweite Auflage haben wir Kernel 2.6.15 als Basis genommen. Wir haben darüber hinaus die Gelegenheit genutzt, das Buch um weiter reichende, sinnvolle Aspekte der Treiberentwicklung zu vervollständigen. So hilft Ihnen das neue Kapitel über dynamische Speicherverwaltung, im Treiber effizient mit Speicher umzugehen; der Abschnitt über Per- CPU-Variablen erläutert das Prinzip der Konfliktvermeidung. Außerdem beschreiben wir die Implementierung des asynchronen Treiberzugriffs und wie Sie Code erstellen, der auch auf modernen 64-Bit-Systemen fehlerfrei abläuft. Die Liste mit Prototypen und Beschreibungen der wichtigsten Kernel-Funktionen ist in dieser Auflage um knapp 80 Funktionen auf über 450 gewachsen. Bei den Lesern möchten wir uns dafür bedanken, dass sie das Buch überaus freundlich aufgenommen haben. Ein besonderes Dankeschön gilt zudem den Lesern, die uns für die zweite Auflage mit vielen Anregungen versorgt haben. Kempen, im Januar 2006 Eva-Katharina Kunst und Jürgen Quade

vii Vorwort zur ersten Auflage Gut zwei Jahre hat die Torvalds'sche Entwicklergemeinde an der Version 2.6 des Linux-Kernels gearbeitet. Seit Dezember 2003 steht er in einer stabilen Version zur Verfügung. Wie seine Vorgänger lässt sich der neue Kernel auf ganz unterschiedlicher Hardware betreiben: auf PDAs, auf Mainframes oder gar im Toaster. Dafür gibt es auch gute Gründe: Linux ist außergewöhnlich skalierbar. Es basiert auf den durchdachten Konzepten eines Unix-Systems. Sein quelloffener Code reizt Tausende Entwickler aus aller Welt, das System technisch zu perfektionieren. Einfache Systemstrukturen ermöglichen die Portierung von Linux und die Anbindung zusätzlicher Hardware in kürzester Zeit. Die umfangreichste Komponente des Kernels stellen Gerätetreiber dar. Es überrascht daher nicht, dass sich Entwickler intensiv mit diesem Bereich der Linux-Kernel-Programmierung auseinander setzen. Auch das nun vorliegende Buch richtet sich in erster Linie an den Entwickler, und zwar unabhängig davon, ob er erstmalig in die Kernel-Programmierung einsteigen möchte oder bereits Erfahrungen mit einem vorherigen Linux- Kern gemacht hat. Auch ist irrelevant, ob er beispielsweise als Entwickler eines eingebetteten Systems ein spezifisches Projekt vor Augen hat, oder als Student einfach nur»reinschnuppern«möchte. Gute Programmierkenntnisse in der Sprache C vorausgesetzt, wird kompakt und vor allem systematisch in die Treiberentwicklung eingeführt. Die innerhalb des Kernels zur Treibererstellung nutzbaren Technologien werden vorgestellt und mit abgeschlossenen, funktionstüchtigen Code-Beispielen belebt. Erläuterungen zum Programmierstil und zu den Programmiertricks erfahrener Kernel-Hacker runden das Thema ebenso ab, wie ein auf Erfahrungswissen basierender Abschnitt über den Entwurf guter und performanter Treiber. Im Anhang befindet sich darüber hinaus eine Beschreibung der für die Treiberentwicklung wichtigsten Kernel-Funktionen. Damit eignet sich das Buch sowohl zum Studium als auch als praktisches Handbuch bei der täglichen Arbeit. Natürlich ist jeder Versuch, die Treiberentwicklung umfassend darstellen zu wollen, zum Scheitern verurteilt. Wir haben uns auf eine geeignete Auswahl konzentriert. Geeignet heißt in diesem Fall, dass die vorgestellten Techniken für einen möglichst breiten Leserkreis nützlich

viii Vorwort zur ersten Auflage sind. Um zu einer kompakten und übersichtlichen Darstellung zu gelangen, lässt das Buch Altlasten hinter sich und behandelt im Wesentlichen Kernel 2.6. Für Umsteiger von 2.4 auf 2.6 gibt es im Anhang einen Abschnitt, der die Portierung vorhandener Treiber auf den neuen Kernel beschreibt. Der Linux-Kernel entwickelt sich ständig weiter. Zum Zeitpunkt der Erstellung ist die Kernel-Version 2.6.5 aktuell. Da mit neuen Kernel-Versionen oftmals Änderungen der Schnittstellen einhergehen, sollte sich der Leser nicht wundern, wenn es an einzelnen Interfaces zwischenzeitlich zu Abweichungen gekommen ist. In Zweifelsfällen hilft ein kurzer Blick in den Quellcode. Kempen, im April 2004 Eva-Katharina Kunst und Jürgen Quade