Getting Started with QNX Neutrino 2: A Guide for Realtime Programmers, by Rob Krten, will help you design and develop robust realtime systems -- from tiny embedded control applications to large network-distributed systems -- using the QNX Neutrino RTOS. This book describes the fundamental concepts of QNX Neutrino, including:
We've included the table of contents and some sample chapters below. For more information, or to purchase a copy, please contact your QNX sales representative, or visit our website, www.qnx.com.
Click here to go to the Roadmap to the QNX Momentics Development Suite.
|Forward||A forward by Peter van der Veen, senior systems architect for Neutrino at QNX Software Systems.|
|Frontmatter||Preface||10 pages of introduction, what's in the book, historical notes about QNX, acknowledgements, etc.|
|Chapter 1||Processes & Threads||91 pages of information about how threads and processes are viewed and managed under QNX Neutrino, includes information on scheduling, prioritization, thread functions (e.g., pthread_create()), thread synchronization (e.g., mutexes, barriers, sleepons), process creation (e.g., system(), exec(), spawn(), fork()), and the interaction of scheduling and hardware interrupts.|
|Chapter 2||Message Passing||79 pages all about the most fundamental (and unique) aspect of QNX Neutrino: message passing. In this chapter, the concepts of client/server are explained, along with some interesting twists (e.g., server/subserver, impact of threads and thread pools, the dispatch interface), the kernel calls used for message passing are illustrated, and then a general discussion of some of the ways that you'd use message passing in typical designs. Included is a section on network distributed operations (the qnet native network manager), as well as design tips.|
|Chapter 3||Clocks, Timers and Getting a Kick Every So Often||37 pages detailing the implementation of QNX Neutrino's timing system, and how to use it. The kernel and POSIX calls are explained, along with interesting notes about timing jitter, accuracy, and the interaction of timers with message passing and scheduling. Also, contains a generalized discussion of the extended struct sigevent structure which is fundamental to "notification" events. Kernel timeouts are also discussed.|
|Chapter 4||Interrupts||29 pages describing hardware interrupts, from the operating system's interaction to a thread-level view. This chapter discusses how to attach an interrupt handler to a hardware interrupt source, (and the tradeoffs of using InterruptAttach() versus InterruptAttachEvent()) as well as the responsibilities of the interrupt service routine. Also discussed is the relationship between an interrupt service routine and the struct sigevent notification structure, as it relates to causing a thread to run as a result of an interrupt.|
|Chapter 5||Resource Managers||A deluxe 131-page section on a key QNX Neutrino concept: the resource manager or device driver. This section covers the basics of the kinds of messages that are received from client programs, how the resource manager is expected to handle those messages, as well as details of the message contents. Under Neutrino, there's an extensive library provided by QNX Software Systems to help you write a resource manager. This chapter explains the ins and outs of the library, and has a wealth of test code samples. Also discussed is the dispatch interface.|
|Appendix A||QNX 4 to Neutrino||25 pages of explanations of how to port code from QNX 4 (the previous generation operating system) to QNX Neutrino. Contains tips, techniques, and the holy grail of computer science: "Abstraction" :-)|
|Appendix B||Calling 911||10 pages of "how to get help" including additional references.|
|Glossary||10 pages of "quick reference" to the terms used in the book.|
© 2006-2007, QNX Software Systems GmbH & Co. KG. All rights reserved.
Published under license by:QNX Software Systems Co.
QNX, Neutrino, Photon, Photon microGUI, Momentics, and Aviage are trademarks, registered in certain jurisdictions, of QNX Software Systems GmbH & Co. KG. and are used under license by QNX Software Systems International Corporation. All other trademarks belong to their respective owners.