I/O Kit Device Driver Design Guidelines

Total Page:16

File Type:pdf, Size:1020Kb

I/O Kit Device Driver Design Guidelines I/O Kit Device Driver Design Guidelines 2006-10-04 CDB is a trademark of Third Eye Software, Apple Computer, Inc. Inc. © 2002, 2006 Apple Computer, Inc. Intel and Intel Core are registered All rights reserved. trademarks of Intel Corportation or its subsidiaries in the United States and other No part of this publication may be countries. reproduced, stored in a retrieval system, or transmitted, in any form or by any means, PowerPC and and the PowerPC logo are mechanical, electronic, photocopying, trademarks of International Business recording, or otherwise, without prior Machines Corporation, used under license written permission of Apple Computer, Inc., therefrom. with the following exceptions: Any person Simultaneously published in the United is hereby authorized to store documentation States and Canada. on a single computer for personal use only Even though Apple has reviewed this document, and to print copies of documentation for APPLE MAKES NO WARRANTY OR personal use provided that the REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS documentation contains Apple’s copyright DOCUMENT, ITS QUALITY, ACCURACY, notice. MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS The Apple logo is a trademark of Apple DOCUMENT IS PROVIDED “AS IS,” AND YOU, THE READER, ARE ASSUMING THE Computer, Inc. ENTIRE RISK AS TO ITS QUALITY AND ACCURACY. Use of the “keyboard” Apple logo IN NO EVENT WILL APPLE BE LIABLE FOR (Option-Shift-K) for commercial purposes DIRECT, INDIRECT, SPECIAL, INCIDENTAL, without the prior written consent of Apple OR CONSEQUENTIAL DAMAGES may constitute trademark infringement and RESULTING FROM ANY DEFECT OR INACCURACY IN THIS DOCUMENT, even if unfair competition in violation of federal advised of the possibility of such damages. and state laws. THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN No licenses, express or implied, are granted LIEU OF ALL OTHERS, ORAL OR WRITTEN, with respect to any of the technology EXPRESS OR IMPLIED. No Apple dealer, agent, or employee is authorized to make any described in this document. Apple retains modification, extension, or addition to this all intellectual property rights associated warranty. with the technology described in this Some states do not allow the exclusion or document. This document is intended to limitation of implied warranties or liability for incidental or consequential damages, so the assist application developers to develop above limitation or exclusion may not apply to applications only for Apple-labeled or you. This warranty gives you specific legal rights, and you may also have other rights which Apple-licensed computers. vary from state to state. Every effort has been made to ensure that the information in this document is accurate. Apple is not responsible for typographical errors. Apple Computer, Inc. 1 Infinite Loop Cupertino, CA 95014 408-996-1010 Apple, the Apple logo, Carbon, Cocoa, ColorSync, FireWire, iMac, Mac, Mac OS, Macintosh, Pages, PowerBook, and Xcode are trademarks of Apple Computer, Inc., registered in the United States and other countries. Finder is a trademark of Apple Computer, Inc. NeXT and Objective-C are trademarks of NeXT Software, Inc., registered in the United States and other countries. Contents Introduction Introduction to I/O Kit Device Driver Design Guidelines 11 Who Should Read This Document? 11 Organization of This Document 11 See Also 13 Chapter 1 The libkern C++ Runtime 15 Creation of the Runtime System 15 Object Creation and Destruction 17 Using the OSMetaClass Constructor Macros 17 Allocating Objects Dynamically 18 Global Initializers 19 Object Introspection and Dynamic Casting 22 Binary Compatibility 24 The Fragile Base Class Problem 24 Reserving Future Data Members 26 Padding the Virtual Table 26 Chapter 2 libkern Collection and Container Classes 29 The libkern Classes and Your Driver 29 libkern Collection and Container Class Overview 30 libkern Container Classes 31 libkern Collection Classes 32 Using the libkern Collection and Container Classes 32 Container Object Creation and Initialization 33 Container Object Introspection and Access 34 Collection Object Creation and Initialization 34 Collection Object Introspection and Access 35 Reference Counting for Collection and Container Classes 35 Thread Safety and the Container and Collection Classes 36 libkern Objects and XML 36 Configuring Your Driver Using the libkern Classes 36 Configuring a Subclass of IOAudioDevice 37 Configuring a Subclass of IOUSBMassStorageClass 38 3 2006-10-04 | © 2002, 2006 Apple Computer, Inc. All Rights Reserved. CONTENTS Chapter 3 The IOService API 41 Driver Life-Cycle and Matching Functionality 41 Driver Matching 42 Passive-Matching Keys 43 Driver State 45 Resources 46 User Clients 46 Probing 47 Notifications and Driver Messaging 47 Notification Methods 47 Messaging Methods 49 Access Methods 49 Getting Work Loops 50 Getting Clients and Providers 50 Getting Other I/O Kit Objects 51 Power Management 52 Power-Management Entities 52 Using the Power Management Methods 53 Memory Mapping and Interrupt Handling 56 Accessing Device Memory 56 Handling Interrupts 59 Miscellaneous IOService Methods 60 Chapter 4 Making Hardware Accessible to Applications 63 Transferring Data Into and Out of the Kernel 63 Issues With Cross-Boundary I/O 64 Programming Alternatives 65 Writing a Custom User Client 69 The Architecture of User Clients 69 Factors in User Client Design 73 Implementing the User Side of the Connection 77 Creating a User Client Subclass 82 A Guided Tour Through a User Client 95 Common Type Definitions 95 The Device Interface Library 98 The User Client 100 Chapter 5 Kernel-User Notification 105 Presenting Notification Dialogs 106 Launching User-Space Executables 109 Presenting Bundled Dialogs 110 4 2006-10-04 | © 2002, 2006 Apple Computer, Inc. All Rights Reserved. CONTENTS Chapter 6 Displaying Localized Information About Drivers 117 Internationalizing Kernel Extensions 118 Creating and Populating the Localization Directories 118 Internationalizing Strings 119 Getting the Path to a KEXT From User Space 120 Chapter 7 Debugging Drivers 123 Some Debugging Basics 123 General Tips 123 Issues With 64-Bit Architectures 124 Driver-Debugging Tools 125 Debugging Matching and Loading Problems 126 Driver Dependencies 127 Using kextload, kextunload, and kextstat 127 Debugging Matching Problems 132 Two-Machine Debugging 133 Setting Up for Two-Machine Debugging 134 Using the Kernel Debugging Macros 136 Tips on Using gdb 141 Debugging Kernel Panics 144 Debugging System Hangs 148 Debugging Boot Drivers 149 Logging 150 Using IOLog 150 Custom Event Logging 151 Chapter 8 Testing and Deploying Drivers 155 Testing Strategies 155 Basic Quality Control 155 Configuration Testing 156 Power-Management Testing 157 Other Testing Strategies and Goals 157 Packaging Drivers for Installation 158 Package Contents 158 Package Validation and Installation 160 Chapter 9 Developing a Device Driver to Run on an Intel-Based Macintosh 163 Byte Swapping 163 Handling Architectural Differences 164 Viewing Values in the Device Tree Plane 164 Interrupt Sharing in an Intel-Based Macintosh 164 Using the OSSynchronizeIO Function 165 5 2006-10-04 | © 2002, 2006 Apple Computer, Inc. All Rights Reserved. CONTENTS Accessing I/O Space 165 Debugging on an Intel-Based Macintosh 165 Glossary 167 Document Revision History 173 Index 175 6 2006-10-04 | © 2002, 2006 Apple Computer, Inc. All Rights Reserved. Figures, Tables, and Listings Chapter 1 The libkern C++ Runtime 15 Figure 1-1 Registering metaclass information from a KEXT binary 16 Figure 1-2 The aggregate data and vtable structures of a compiled class 25 Table 1-1 OSMetaClass and OSMetaClassBase introspection macros and member functions 23 Listing 1-1 Definition of a class to be declared global 21 Listing 1-2 Implementation of a global constructor 21 Listing 1-3 Implementation of a global destructor 22 Listing 1-4 Code showing dynamic casting and introspection 24 Listing 1-5 Initial declarations of the ExpansionData structure and reserved pointer 26 Listing 1-6 Adding a new field to the ExpansionData structure 26 Listing 1-7 The initial padding of a class virtual table (header file) 27 Listing 1-8 The initial padding of a class virtual table (implementation file) 27 Listing 1-9 Adjusting the pad slots when adding new virtual functions—header file 27 Listing 1-10 Adjusting the pad slots when adding new virtual functions—implementation file 28 Chapter 2 libkern Collection and Container Classes 29 Table 2-1 XML tags and libkern class names 30 Table 2-2 The libkern container classes 31 Table 2-3 The libkern collection classes 32 Table 2-4 libkern methods and reference-counting behavior 35 Listing 2-1 Using libkern objects and methods in audio-engine creation 37 Listing 2-2 Partial listing of IOUSBMassStorageClass start method 38 Chapter 3 The IOService API 41 Table 3-1 IOService matching methods 42 Table 3-2 Notification types and events 47 Table 3-3 Memory-mapping options for mapDeviceMemoryWithIndex 58 Listing 3-1 A matchPropertyTable implementation 43 Listing 3-2 A personality of the GossamerPE 44 Listing 3-3 Partial I/O Registry entry for GossamerPE 45 Listing 3-4 Using the addNotification method 47 Listing 3-5 Implementing a notification-handling method 48 Listing 3-6 Implementing the message method 49 7 2006-10-04 | © 2002, 2006 Apple Computer, Inc. All Rights Reserved. FIGURES, TABLES, AND LISTINGS Listing 3-7 getClientIterator example 51 Listing 3-8 The IODisplayWrangler setAggressiveness method 55
Recommended publications
  • Getting Started on a Mac with Macgamut Download
    Getting started on a Macintosh computer with MacGAMUT 6 (Download) These step-by-step instructions will get you started on any Macintosh OS X computer, when you make a Download purchase of MacGAMUT 6 from the MacGAMUT website. Getting started with MacGAMUT 6 is EASY, but it's still a good idea to follow these printed instructions as you proceed step by step, marking off each step as you complete it. Follow these steps to install MacGAMUT 6 as a download: 1. First, download and install the MacGAMUT 6 software. Yes, you can complete the download and installation even before you make your online purchase. You just won’t be able to use the installed program until you’ve paid for it! a. From the Home page at www.macgamut.com, follow the links from the Installers link on the left-hand side of the screen to go to the MacGAMUT Web Installers page. b. Read the “How-to” Videos paragraph before scrolling down to click the appropriate installer for your computer and system. c. You’ll find the downloaded Installer in your Macintosh’s Downloads folder. (If you are not working on your own computer, you can copy the Installer to a flash drive so you can install it later on your computer.) d. The Installer will start automatically when you open the Installer package. Just follow the instructions to complete your installation. e. If you are installing MacGAMUT 6 for the first time, you will need to restart your computer after the installation process is finished. f. The program installs in a folder labeled MacGAMUT 6 in your computer’s Applications folder.
    [Show full text]
  • Doxydoxygen User Guide Release 0.79.4
    DoxyDoxygen User Guide Release 0.79.4 20Tauri Aug 16, 2021 MANUAL 1 Welcome to DoxyDoxygen 1 2 Installation 3 2.1 Software installation with Package Control...............................3 2.2 Manual software installation.......................................3 2.3 License installation............................................4 2.4 EULA (End User License Agreement)..................................4 2.4.1 Licenses.............................................4 2.4.2 Description of other rights and limitations...........................4 2.4.3 No warranties..........................................5 3 Usage 7 3.1 Create a documentation block......................................7 3.2 Update / wrap an existing documentation block.............................8 3.3 Switch between comment styles.....................................9 3.4 Extend a documentation block......................................9 3.4.1 Auto-completion........................................9 3.4.2 Comment continuation..................................... 10 3.5 Navigate in documentation........................................ 10 3.5.1 Move to the right column.................................... 10 3.5.2 Follow references........................................ 10 3.6 Fold / Unfold comments......................................... 11 3.7 Translate................................................. 11 3.8 Generate documentation......................................... 12 4 Customization 13 4.1 Settings.................................................. 13 4.1.1 Understand
    [Show full text]
  • Use of the Protocol Generator
    Manual for the protocol generator Table of contents Manual for the protocol generator.....................................................................................................................1 Introduction..................................................................................................................................................3 Acknowledgements.......................................................................................................................................................3 Preparation and installation..........................................................................................................................4 Preparation for Presentation *.log file before acquiring data........................................................................................4 Installation......................................................................................................................................................................5 Using the protocol generator........................................................................................................................6 Activating the plugin......................................................................................................................................................6 Main menu.....................................................................................................................................................................7 Option 1: generating a protocol file..............................................................................................................8
    [Show full text]
  • Mac Keyboard Shortcuts Cut, Copy, Paste, and Other Common Shortcuts
    Mac keyboard shortcuts By pressing a combination of keys, you can do things that normally need a mouse, trackpad, or other input device. To use a keyboard shortcut, hold down one or more modifier keys while pressing the last key of the shortcut. For example, to use the shortcut Command-C (copy), hold down Command, press C, then release both keys. Mac menus and keyboards often use symbols for certain keys, including the modifier keys: Command ⌘ Option ⌥ Caps Lock ⇪ Shift ⇧ Control ⌃ Fn If you're using a keyboard made for Windows PCs, use the Alt key instead of Option, and the Windows logo key instead of Command. Some Mac keyboards and shortcuts use special keys in the top row, which include icons for volume, display brightness, and other functions. Press the icon key to perform that function, or combine it with the Fn key to use it as an F1, F2, F3, or other standard function key. To learn more shortcuts, check the menus of the app you're using. Every app can have its own shortcuts, and shortcuts that work in one app may not work in another. Cut, copy, paste, and other common shortcuts Shortcut Description Command-X Cut: Remove the selected item and copy it to the Clipboard. Command-C Copy the selected item to the Clipboard. This also works for files in the Finder. Command-V Paste the contents of the Clipboard into the current document or app. This also works for files in the Finder. Command-Z Undo the previous command. You can then press Command-Shift-Z to Redo, reversing the undo command.
    [Show full text]
  • Headerdoc Unfettered
    HeaderDoc Unfettered May 27, 2004 CDB is a trademark of Third Eye Software, Apple Computer, Inc. Inc. © 1999, 2004 Apple Computer, Inc. Helvetica is a trademark of Heidelberger All rights reserved. Druckmaschinen AG, available from Linotype Library GmbH. No part of this publication may be reproduced, stored in a retrieval system, or Java and all Java-based trademarks are transmitted, in any form or by any means, trademarks or registered trademarks of Sun mechanical, electronic, photocopying, Microsystems, Inc. in the U.S. and other recording, or otherwise, without prior countries. written permission of Apple Computer, Inc., Simultaneously published in the United with the following exceptions: Any person States and Canada. is hereby authorized to store documentation Even though Apple has reviewed this manual, on a single computer for personal use only APPLE MAKES NO WARRANTY OR and to print copies of documentation for REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS MANUAL, personal use provided that the ITS QUALITY, ACCURACY, documentation contains Apple's copyright MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS notice. MANUAL IS SOLD ªAS IS,º AND YOU, THE PURCHASER, ARE ASSUMING THE ENTIRE The Apple logo is a trademark of Apple RISK AS TO ITS QUALITY AND ACCURACY. Computer, Inc. IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, Use of the ªkeyboardº Apple logo OR CONSEQUENTIAL DAMAGES (Option-Shift-K) for commercial purposes RESULTING FROM ANY DEFECT OR without the prior written consent of Apple INACCURACY IN THIS MANUAL, even if advised of the possibility of such damages.
    [Show full text]
  • Chapter 1. Origins of Mac OS X
    1 Chapter 1. Origins of Mac OS X "Most ideas come from previous ideas." Alan Curtis Kay The Mac OS X operating system represents a rather successful coming together of paradigms, ideologies, and technologies that have often resisted each other in the past. A good example is the cordial relationship that exists between the command-line and graphical interfaces in Mac OS X. The system is a result of the trials and tribulations of Apple and NeXT, as well as their user and developer communities. Mac OS X exemplifies how a capable system can result from the direct or indirect efforts of corporations, academic and research communities, the Open Source and Free Software movements, and, of course, individuals. Apple has been around since 1976, and many accounts of its history have been told. If the story of Apple as a company is fascinating, so is the technical history of Apple's operating systems. In this chapter,[1] we will trace the history of Mac OS X, discussing several technologies whose confluence eventually led to the modern-day Apple operating system. [1] This book's accompanying web site (www.osxbook.com) provides a more detailed technical history of all of Apple's operating systems. 1 2 2 1 1.1. Apple's Quest for the[2] Operating System [2] Whereas the word "the" is used here to designate prominence and desirability, it is an interesting coincidence that "THE" was the name of a multiprogramming system described by Edsger W. Dijkstra in a 1968 paper. It was March 1988. The Macintosh had been around for four years.
    [Show full text]
  • NCSA Telnet for the Macintosh User's Guide
    NCSA Telnet for the Macintosh User’s Guide Version 2.6 • October 1994 National Center for Supercomputing Applications University of Illinois at Urbana-Champaign Contents Introduction Features of NCSA Telnet v Differences between Version 2.5 and Version 2.6 v New Features in Version 2.6 v Discontinued Features vi Bugs Fixed from Version 2.5 vi System Requirements vi Notational Conventions vi 1 Getting Started Installation Note 1-1 Beginning an NCSA Telnet Session 1-1 Opening and Closing a Connection 1-2 Opening a Connection 1-2 Logging on to Your Host 1-3 Setting the BACKSPACE/DELETE Key 1-3 Setting a VT Terminal Type 1-3 Emulating the VT Terminal Keyboard 1-4 Closing a Connection 1-4 Copying, Pasting, and Printing 1-5 Copy and Paste from the Edit Menu 1-5 Print from the File Menu 1-5 Ending an NCSA Telnet Session 1-6 2 Configuration Global Preferences 2-1 New Configuration System in Version 2.6 2-3 Default Configuration Records 2-3 Editing Configuration Records 2-3 Editing Terminal Configuration Records 2-4 Editing Session Configuration Records 2-5 Changing Configuration after Session Connected 2-9 Saved Sets 2-13 Saving a Set 2-14 Using a Saved Set 2-14 Loading a Saved Set 2-15 Macro Definitions 2-15 Reverting to Previous Macro Definitions 2-16 Saving Macros 2-16 3 Advanced Features Cursor Positioning with the Mouse 3-1 Multiple Connections 3-1 Opening More Than One Connection 3-1 Moving between Connections 3-1 Rules for Session Names 3-2 The Connections Menu 3-2 Naming Windows 3-2 Checking Session Status 3-2 Aborting Connection Attempts
    [Show full text]
  • Mac OS X: an Introduction for Support Providers
    Mac OS X: An Introduction for Support Providers Course Information Purpose of Course Mac OS X is the next-generation Macintosh operating system, utilizing a highly robust UNIX core with a brand new simplified user experience. It is the first successful attempt to provide a fully-functional graphical user experience in such an implementation without requiring the user to know or understand UNIX. This course is designed to provide a theoretical foundation for support providers seeking to provide user support for Mac OS X. It assumes the student has performed this role for Mac OS 9, and seeks to ground the student in Mac OS X using Mac OS 9 terms and concepts. Author: Robert Dorsett, manager, AppleCare Product Training & Readiness. Module Length: 2 hours Audience: Phone support, Apple Solutions Experts, Service Providers. Prerequisites: Experience supporting Mac OS 9 Course map: Operating Systems 101 Mac OS 9 and Cooperative Multitasking Mac OS X: Pre-emptive Multitasking and Protected Memory. Mac OS X: Symmetric Multiprocessing Components of Mac OS X The Layered Approach Darwin Core Services Graphics Services Application Environments Aqua Useful Mac OS X Jargon Bundles Frameworks Umbrella Frameworks Mac OS X Installation Initialization Options Installation Options Version 1.0 Copyright © 2001 by Apple Computer, Inc. All Rights Reserved. 1 Startup Keys Mac OS X Setup Assistant Mac OS 9 and Classic Standard Directory Names Quick Answers: Where do my __________ go? More Directory Names A Word on Paths Security UNIX and security Multiple user implementation Root Old Stuff in New Terms INITs in Mac OS X Fonts FKEYs Printing from Mac OS X Disk First Aid and Drive Setup Startup Items Mac OS 9 Control Panels and Functionality mapped to Mac OS X New Stuff to Check Out Review Questions Review Answers Further Reading Change history: 3/19/01: Removed comment about UFS volumes not being selectable by Startup Disk.
    [Show full text]
  • Software List (1-3-2017)
    Software List (1-3-2017) Information Commons BU 104 LLCD Adobe Flash Academic online JVC Pro HD Manager Chrome Acrobat Adobe Reader DC Adobe Photoshop CS6 Adobe Itunes Adobe Reader XI Comprehensive Medical Terminology Maple 16 Drive M:\ Glencoe Keyboarding Microsoft Office 2016 Firefox Itunes Microsoft Publisher Irwin/GDP Keyboarding Kurzeil 3000 MS visual studio 2015 Itunes Microsoft Office Suite 2007 Quicktime Kurzweil 3000 v.12 Quick time SPSS for Windows Maple 16 Skills bank real player Microsoft Office 2016 Vista 3-Scanners MS platform installer Windows 7 & 10 Microsoft Visio 2016 Wellington Center sharepoint MS SQL Internet Explorer XPS viewer MS Visual Studio 2015 ITunes Express for desktop Quicken deluxe 2014 McAfee Express for Web VLC Media Player Quicktime MS silverlight Windows 10 " " Media Player Statdisk Scanner Mozilla Firefox Skype 2016 MS silverlight Adobe Reader XI windows dvd maker wolfram cdf player Windows 8 Onedrive Filezilla Microsoft Office Suite 2013 notepad++ Gimp 2 Maple 16 respounds/lockdown opera mobile emulator Statdisk 3D builder VM ware/ vsphere Wolfram CDF Player MS Azure wire shark VLC Media Player cisco packet tracker MACS Software (Information Commons) 3D builder Brunswick Front Desk Computers java development kit Windows 7 System project 2016 Adobe 9 Developer notepad++ Apple Itunes Utilities IBM Iseries access for windows Time Machine Intel Management and Security TextEdit UC 222 Iseries navigator System Preferences Acrobat Reader XI Malware Bytes Anti Malware Stickies Adult Clinical Simulation Mcaffe
    [Show full text]
  • Pro Tools 7.0 Keyboard Shortcuts (For Pro Tools|HD, Pro Tools LE, and Pro Tools M-Powered Systems on Macintosh)
    Pro Tools 7.0 Keyboard Shortcuts (for Pro Tools|HD, Pro Tools LE, and Pro Tools M-Powered Systems on Macintosh) For increased operational speed and ease-of-use, there are many Pro Tools keyboard shortcuts to give you fast access to a wide va- riety of tasks. This guide lists these keyboard shortcuts. The shortcuts are grouped by functional area for your added convenience and quick reference. Menu commands that have a keyboard shortcut display their keyboard shortcut on-screen, to the right of the menu command. Conventions Used in This Guide Digidesign guides use the following conventions to indicate menu choices and key commands: Table 1. Global keyboard shortcuts Convention Action File > Save Session Choose Save Session from the File menu. Command+N Hold down the Command (Apple) key and press the N key Option+Plus/Minus (+/–) keys Hold down the Option key and press the Plus (+) or Minus (–) key (on numeric keypad or QWERTY, as noted). Command-click Hold down the Command key and click the mouse button. Global Keyboard Shortcuts Table 2. Global keyboard shortcuts Task Shortcut Change parameters on all similar channel strips Option+applicable function (applicable functions listed below) Change parameter on all selected similar channel Option+Shift+applicable function (applicable functions listed directly below) strips Applicable functions: Automation mode • Monitor mode • playlist enables • record, solo and mute enables • record and solo safes • inserting plug-ins • I/O, bus, send assignment • volume/peak indicator • extend Edit or Timeline
    [Show full text]
  • Mac OS for Quicktime Programmers
    Mac OS For QuickTime Programmers Apple Computer, Inc. Technical Publications April, 1998 Apple Computer, Inc. Apple, the Apple logo, Mac, LIMITED WARRANTY ON MEDIA © 1998 Apple Computer, Inc. Macintosh, QuickDraw, and AND REPLACEMENT All rights reserved. QuickTime are trademarks of Apple ALL IMPLIED WARRANTIES ON THIS No part of this publication or the Computer, Inc., registered in the MANUAL, INCLUDING IMPLIED software described in it may be United States and other countries. WARRANTIES OF reproduced, stored in a retrieval The QuickTime logo is a trademark MERCHANTABILITY AND FITNESS system, or transmitted, in any form of Apple Computer, Inc. FOR A PARTICULAR PURPOSE, ARE or by any means, mechanical, Adobe, Acrobat, Photoshop, and LIMITED IN DURATION TO NINETY electronic, photocopying, recording, PostScript are trademarks of Adobe (90) DAYS FROM THE DATE OF or otherwise, without prior written Systems Incorporated or its DISTRIBUTION OF THIS PRODUCT. permission of Apple Computer, Inc., subsidiaries and may be registered in Even though Apple has reviewed this except in the normal use of the certain jurisdictions. manual, APPLE MAKES NO software or to make a backup copy Helvetica and Palatino are registered WARRANTY OR REPRESENTATION, of the software or documentation. trademarks of Linotype-Hell AG EITHER EXPRESS OR IMPLIED, WITH The same proprietary and copyright and/or its subsidiaries. RESPECT TO THIS MANUAL, ITS notices must be affixed to any ITC Zapf Dingbats is a registered QUALITY, ACCURACY, permitted copies as were affixed to trademark of International Typeface MERCHANTABILITY, OR FITNESS the original. This exception does not Corporation. FOR A PARTICULAR PURPOSE. AS A allow copies to be made for others, RESULT, THIS MANUAL IS Simultaneously published in the whether or not sold, but all of the DISTRIBUTED “AS IS,” AND YOU United States and Canada.
    [Show full text]
  • Introduction to Xgrid: Cluster Computing for Everyone
    Introduction to Xgrid: Cluster Computing for Everyone Barbara J. Breen1, John F. Lindner2 1Department of Physics, University of Portland, Portland, Oregon 97203 2Department of Physics, The College of Wooster, Wooster, Ohio 44691 (First posted 4 January 2007; last revised 24 July 2007) Xgrid is the first distributed computing architecture built into a desktop operating system. It allows you to run a single job across multiple computers at once. All you need is at least one Macintosh computer running Mac OS X v10.4 or later. (Mac OS X Server is not required.) We provide explicit instructions and example code to get you started, including examples of how to distribute your computing jobs, even if your initial cluster consists of just two old laptops in your basement. 1. INTRODUCTION Apple’s Xgrid technology enables you to readily convert any ad hoc collection of Macintosh computers into a low-cost supercomputing cluster. Xgrid functionality is integrated into every copy of Mac OS X v10.4. For more information, visit http://www.apple.com/macosx/features/xgrid/. In this article, we show how to unlock this functionality. In Section 2, we guide you through setting up the cluster. In Section 3, we illustrate two simple ways to distribute jobs across the cluster: shell scripts and batch files. We don’t assume you know what shell scripts, batch files, or C/C++ programs are (although you will need to learn). Instead, we supply explicit, practical examples. 2. SETTING UP THE CLUSTER In a typical cluster of three or more computers (or processors), a client computer requests a job from the controller computer, which assigns an agent computer to perform it.
    [Show full text]