BeOS

Porting UNIX Applications

By

  • Martin Brown

The BeOS is the exciting new operating system designed natively for the Internet and digital media. Programmers are drawn to the BeOS by its many state-of-the-art features, including pervasive multithreading, a symmetric multiprocessing architecture, and an integrated multithreaded graphics system. The Be engineering team also built in many UNIX-like capabilities as part of a POSIX toolkit. Best of all, the BeOS runs on a variety of Intel architectures and PowerPC platforms and uses off-the-shelf hardware.

This book explores the BeOS from a POSIX programmer's point of view, providing a comprehensive and practical guide to porting UNIX and other POSIX-based software to the BeOS. BeOS: Porting UNIX Applications will help you move your favorite UNIX software to an environment designed from the ground up for high-performance applications.

View full description

Audience

UNIX programmer and programmers working on other POSIX compliant systems interested in porting applications from those systems to the BeOS.

 

Book information

  • Published: August 1998
  • Imprint: MORGAN KAUFMANN
  • ISBN: 978-1-55860-532-9


Table of Contents

Part I Preparation

1. Chapter 1 - Introduction to the Porting Process

1.1. Life Cycle of a Port

1.2. Choosing an Application to Port

1.3. Difficulties with the BeOS

2. Chapter 2 - BeOS Structure

2.1. Basic Structure

2.2. Applying UNIX structure to the BeOS

2.3. Missing links and Other Goodies

3. Chapter 3 - Were not in UNIX Anymore

3.1. The BeOS's Concept of Users

3.2. The BeOS's Concept of Groups

3.3. Effects on Porting

3.4. Processes

4. Chapter 4 - Useful Tools

4.1. bash

4.2. grep

4.3. sed

4.4. less

4.5. touch

4.6. tr

4.7. uniq and sort

4.8. Editors

5. Chapter 5 - Sources

5.1. Getting the Sources

5.2. Working with Archives

5.3. Archive Contents

6. Chapter 6 - Revisions and Backups

6.1. Revision Control System (RCS)

6.2. Concurrent Version System (CVS)

6.3. Using diff for Revisions

6.4. patch

6.5. Backups

Part II The Porting Process

7. Chapter 7 - Getting Started

7.1. Reading the Documentation

7.2. Identifying the Build Type

7.3. Identifying the Build Process

8. Chapter 8 - Configuring the Package

8.1. Preparation

8.2. Expect to Change

8.3. Using #include in the Configuration Process

8.3. Using the #ifdef Macro

9. Chapter 9 - Makefiles

9.1. Principles of a Makefile

9.2. Anatomy of a Makefile

9.3. Execution Sequence

9.4. Coping with Errors

10. Chapter 10 - Configuration Scripts

10.1. Running under the BeOS

10.2. Faking Options

10.3. Manual Adjustments

10.4. Testing the Configuration

10.5. Cheating

11. Chapter 11 - Smart Compilers

11.1. Following the Script

11.2. Faking Options

11.3. Hand Compilation

11.4. Generating a Makefile

12. Chapter 12 - bison and flex

12.1. yacc and bison

12.2. lex and flex

13. Chapter 13 - The Compiler and Linker

13.1. How the Compiler and Linker work

13.2. Preprocessing

13.3. Optimization

13.4. Debugging

13.5. Header Files

13.6. Libraries

13.7. Making Libraries

13.8. Profiling

14. Chapter 14 - The Debugger

14.1. The BeOS Debugger

14.2. The Symbolic Debugger

14.3. Manual Debugging

15. Chapter 15 - Building the Package

15.1. Keeping a Log

15.2. Storing Output

15.3. Compilation Errors

15.4. Compilation Warnings

15.5. Linking Errors

15.6. Installation

15.7. Preparing to Test the Build

15.8. Checking the Created Files

15.9. Creating your Own Harness

15.10.Using the Supplied Harness

15.11.Pointers to Problems

16. Chapter 16 - Overview of BeOS Programming

16.1. Program Styles

16.2. Be Style

16.3. UNIX Style

17. Chapter 17 - POSIX

17.1. What is POSIX

17.2. POSIX and UNIX

17.3. The BeOS and POSIX

17.4. Effects on Porting

18. Chapter 18 - Kernel Support

18.1. Datatypes

18.2. Resource Limits

18.3. Memory Handling

18.4. Users and Groups

18.5. Processes

18.6. Signals

18.7. Interprocess Communication

18.8. System Calls

18.9. Regular Expressions

18.10. Non-local Jumps

18.11. Moving and Copying Memory

18.12. String Handling

18.13. Variable Argument Lists

19. Chapter 19 - Time Support

19.1. Standard Variables and Defines

19.2. Time Zones

19.3. Time Calculations

19.4. Getting the Time

19.5. Setting the Time

19.6. Timers

19.7. System Information

20. Chapter 20 - Terminals and Devices

20.1. Using I/O Devices

20.2. Working with Terminals

20.3. Device Drivers

21. Chapter 21 - Files and Directories

21.1. General Functions

21.2. Streams

21.3. UNIX File Descriptors

21.4. Utility Functions

21.5. File Systems

21.6. select and poll

22. Chapter 22 - Networking

22.1. Sockets

22.2. Utility Functions

22.3. Using select

22.4. Remote Procedure Calls (RPCs)

23. Chapter 23 - Summary

24. Appendix A - Resources

24.1. FTP

24.2. Web Sites

24.3. Mailing Lists and

Newsgroups

24.4. CD-ROMs

24.5. Compatibility and Utility Software

25. Appendix B - Releasing the Software

25.1. Checking the Compilation

25.2. Packaging

25.3. Adding a License

25.4. Distribution

25.5. Contacting the Author