About the QNX CAR platform
  Getting Started Guide
    Getting Ready
    A Guided Tour of the HMI
      Home
      Navigation
      Media Player
      Settings screen
      Communications screen
      App Launcher screen
      Push-to-Talk
    Automatic Speech Recognition
    Using Bluetooth
      Pairing a smartphone
      Making a phone call
      Accessing the phone's email
      Viewing the phone's contacts
      Viewing the phone's text messages
    Using Pandora Radio
    Recalibrating the Touchscreen
    Developing a Native App
      Connecting the IDE to the target
      Creating a native "hello world" application
      Debugging a native application
      Checking out a project from SVN
      Building a native application in the IDE
      Building a native application on the command line
    Software Updates
      Generating an update
      Applying an update from the HMI
      Applying an update from the command line
    Controlling System Startup
      Modifying the Startup Script
      System Launch and Monitor (SLM)
      Running the SLM service
      Realtime Clock Synchronization
  Architecture Guide
    Top Level Design
    Common Mechanisms
    Ecosystem
    Platform Layer
      QNX Neutrino RTOS
        Microkernel
        Instant Device Activation
        Networking
        Fast boot
        Fault detection
        High Availability
        Adaptive Partitioning
        Resource Manager framework
      OpenGL ES
      Software Update
    Middleware Layer
      Multimedia
      Navigation
      Automatic Speech Recognition
      Radio
      Mobile Device Gateway
        Android interfaces
        Bluetooth
        DLNA
        HTML5 interface
        Apple iOS interfaces
        MirrorLink
        Network interfaces
        USB
    HTML5 HMI Layer
      Browser Engine
      HTML5 application model
      Application management
  Getting Started Guide
    Getting Ready
    A Guided Tour of the HMI
      Home
      Navigation
      Media Player
      Settings screen
      Communications screen
      App Launcher screen
      Push-to-Talk
    Automatic Speech Recognition
    Using Bluetooth
      Pairing a smartphone
      Making a phone call
      Accessing the phone's email
      Viewing the phone's contacts
      Viewing the phone's text messages
    Using Pandora Radio
    Recalibrating the Touchscreen
    Developing a Native App
      Connecting the IDE to the target
      Creating a native "hello world" application
      Debugging a native application
      Checking out a project from SVN
      Building a native application in the IDE
      Building a native application on the command line
    Software Updates
      Generating an update
      Applying an update from the HMI
      Applying an update from the command line
    Controlling System Startup
      Modifying the Startup Script
      System Launch and Monitor (SLM)
      Running the SLM service
      Realtime Clock Synchronization
  Architecture Guide
    Top Level Design
    Common Mechanisms
    Ecosystem
    Platform Layer
      QNX Neutrino RTOS
        Microkernel
        Instant Device Activation
        Networking
        Fast boot
        Fault detection
        High Availability
        Adaptive Partitioning
        Resource Manager framework
      OpenGL ES
      Software Update
    Middleware Layer
      Multimedia
      Navigation
      Automatic Speech Recognition
      Radio
      Mobile Device Gateway
        Android interfaces
        Bluetooth
        DLNA
        HTML5 interface
        Apple iOS interfaces
        MirrorLink
        Network interfaces
        USB
    HTML5 HMI Layer
      Browser Engine
      HTML5 application model
      Application management
Developing for the QNX CAR platform
  HMI Developer's Guide
    Navigator
      Introduction to Navigator
      Navigator prerequisite knowledge
      Navigator window management
      Navigator interfaces
      Navigator reference implementation
      Creating a new Navigator
    Authman and Launcher
  Developing HTML5 Apps with WebWorks
    The HTML5 Development Tools
      Obtaining the development tools
      Ripple Emulator
        Installing the Ripple emulator
      Sencha Touch 2 framework
      HTML5 Web Application Framework
      WebGL
      jQuery support
    Creating an app
      Creating a basic "Hello World" app
        Creating a configuration document (config.xml)
        Creating an entry point for your app (index.html)
      Running "Hello World" in Ripple
    Creating your own extension
      Using the JavaScript Framework
      JavaScript extension example
      Creating the JavaScript for the extension
        Details about the JavaScript part of the extension
        Using the PPS interface
      Running your modified app
    Deploying "Hello World"
      Packaging
      Installing to a device
    Enhancing performance
    Uninstalling a package
  JavaScript Framework Reference
    blackberry.bridge
    qnx.application
    qnx.application.event
    qnx.audiomixer
    qnx.audioplayer
    qnx.bluetooth
    qnx.bluetooth.pbap
    qnx.gears
    qnx.hvac
    qnx.info
    qnx.keyboard
    qnx.locale
    qnx.medialibrary
    qnx.mediasource
    qnx.message
    qnx.navigation
    qnx.navigation.tcs
    qnx.navigator
    qnx.navigator.overlay
    qnx.network
    qnx.phone
    qnx.radio
    qnx.sensors
    qnx.settings
    qnx.systemupdate
    qnx.theme
    qnx.user
    qnx.voice
    qnx.volume
  PPS Objects Reference
    Overview of the PPS Service
    Setting Up Your Own Objects
    PPS Objects Reference Pages
      /pps/accounts/
      /pps/accounts/1000/telenav/
      /pps/applications/mediaplayer
      /pps/applications/weathernetwork/
      /pps/qnx/dbnotify/dbs
      /pps/qnx/device/<device>
      /pps/qnx/device/<device>_ctrl
      /pps/qnx/driver/<pid>
      /pps/qnx/mount/<device>
      /pps/qnx/qdb/config/<dbname>
      /pps/qnx/qdb/status/<dbname>
      /pps/qnxcar/hvac
      /pps/qnxcar/locale
      /pps/qnxcar/navigation/control
      /pps/qnxcar/navigation/geolocation
      /pps/qnxcar/navigation/options
      /pps/qnxcar/navigation/status
      /pps/qnxcar/profile/theme
      /pps/qnxcar/profile/user
      /pps/qnxcar/radio/control
      /pps/qnxcar/radio/status
      /pps/qnxcar/radio/ti_control
      /pps/qnxcar/radio/ti_rds
      /pps/qnxcar/radio/ti_status
      /pps/qnxcar/radio/tuners
      /pps/qnxcar/sensors
      /pps/qnxcar/system/info
      /pps/qnxcar/system/settings
      /pps/servicedata/schedule
      /pps/services/alarm/control
      /pps/services/alarm/status-<clientlabel>
      /pps/services/app-launcher
      /pps/services/asr/control
      /pps/services/audio/audio_router_control
      /pps/services/audio/audio_router_status
      /pps/services/audio/control
      /pps/services/audio/devices/
      /pps/services/audio/status
      /pps/services/audio/types/
      /pps/services/audio/voice_status
      /pps/services/bluetooth/control
      /pps/services/bluetooth/messages/control
      /pps/services/bluetooth/messages/notification
      /pps/services/bluetooth/messages/status
      /pps/services/bluetooth/paired_devices/<mac_addr>
      /pps/services/bluetooth/phonebook/control
      /pps/services/bluetooth/phonebook/status
      /pps/services/bluetooth/remote_devices/<mac_addr>
      /pps/services/bluetooth/services
      /pps/services/bluetooth/settings
      /pps/services/bluetooth/status
      /pps/services/clock/control
      /pps/services/clock/status
      /pps/services/confstr/
      /pps/services/deviceproperties
      /pps/services/dlna/dmcclient/control
      /pps/services/dlna/dmcclient/dmr/networkstate/<dmr_uuid>
      /pps/services/dlna/dmcclient/dmr/playstate/<dmr_uuid>
      /pps/services/dlna/dmcclient/dms/networkstate/<dms_uuid>
      /pps/services/gears/control
      /pps/services/gears/status
      /pps/services/handsfree/control
      /pps/services/handsfree/status
      /pps/services/launcher/control
      /pps/services/mediaserver/settings
      /pps/services/mm-control/control
      /pps/services/mm-control/<playername>/status
      /pps/services/mm-detect/status
      /pps/services/multimedia/renderer/component/
      /pps/services/multimedia/renderer/context/<contextname>
      /pps/services/multimedia/renderer/context/<contextname>/input
      /pps/services/multimedia/renderer/context/<contextname>/metadata
      /pps/services/multimedia/renderer/context/<contextname>/output#
      /pps/services/multimedia/renderer/context/<contextname>/p#
      /pps/services/multimedia/renderer/context/<contextname>/param
      /pps/services/multimedia/renderer/context/<contextname>/play-queue
      /pps/services/multimedia/renderer/context/<contextname>/q#
      /pps/services/multimedia/renderer/context/<contextname>/state
      /pps/services/multimedia/renderer/context/<contextname>/status
      /pps/services/multimedia/renderer/control
      /pps/services/navigator/
      /pps/services/networking/all/interfaces/<interface>
      /pps/services/networking/all/proxy
      /pps/services/networking/all/status_public
      /pps/services/networking/control
      /pps/services/networking/proxy
      /pps/services/networking/proxyserver
      /pps/services/networking/status
      /pps/services/networking/status_public
      /pps/services/private/deviceproperties
      /pps/services/update/control
      /pps/services/update/status
      /pps/system/authorization/control
      /pps/system/keyboard/control
      /pps/system/keyboard/status
      /pps/system/navigator/command
      /pps/system/navigator/windowgroup
      /pps/system/navigator/windowparams
      /pps/system/ppsnetd/control
      /pps/tcs/
    Appendix: List of Objects Used Internally
  Multimedia Detector Configuration Guide
    Multimedia Detector Overview
      Deciding whether to run mm-detect
      Customizing media detection and synchronization
    Running mm-detect
      Restarting mm-detect manually
      Preventing mm-detect from running
      mm-detect SLM specification
      mm-detect command line
    Device tracking and media information management
      Device insertion handling
        Media synchronization thread actions
      Device removal handling
      PPS devices information object
      PPS synchronization status object
  Multimedia Controller Configuration Guide
    Multimedia Controller Overview
      Deciding whether to run mm-control
      mm-control components
    Running mm-control
      Restarting mm-control manually
      Preventing mm-control from running
      mm-control SLM specification
      mm-control command line
        mm-control configuration file
    Setup and Command Monitoring
      Media command processing
  HMI Developer's Guide
    Navigator
      Introduction to Navigator
      Navigator prerequisite knowledge
      Navigator window management
      Navigator interfaces
      Navigator reference implementation
      Creating a new Navigator
    Authman and Launcher
  Developing HTML5 Apps with WebWorks
    The HTML5 Development Tools
      Obtaining the development tools
      Ripple Emulator
        Installing the Ripple emulator
      Sencha Touch 2 framework
      HTML5 Web Application Framework
      WebGL
      jQuery support
    Creating an app
      Creating a basic "Hello World" app
        Creating a configuration document (config.xml)
        Creating an entry point for your app (index.html)
      Running "Hello World" in Ripple
    Creating your own extension
      Using the JavaScript Framework
      JavaScript extension example
      Creating the JavaScript for the extension
        Details about the JavaScript part of the extension
        Using the PPS interface
      Running your modified app
    Deploying "Hello World"
      Packaging
      Installing to a device
    Enhancing performance
    Uninstalling a package
  JavaScript Framework Reference
    blackberry.bridge
    qnx.application
    qnx.application.event
    qnx.audiomixer
    qnx.audioplayer
    qnx.bluetooth
    qnx.bluetooth.pbap
    qnx.gears
    qnx.hvac
    qnx.info
    qnx.keyboard
    qnx.locale
    qnx.medialibrary
    qnx.mediasource
    qnx.message
    qnx.navigation
    qnx.navigation.tcs
    qnx.navigator
    qnx.navigator.overlay
    qnx.network
    qnx.phone
    qnx.radio
    qnx.sensors
    qnx.settings
    qnx.systemupdate
    qnx.theme
    qnx.user
    qnx.voice
    qnx.volume
  PPS Objects Reference
    Overview of the PPS Service
    Setting Up Your Own Objects
    PPS Objects Reference Pages
      /pps/accounts/
      /pps/accounts/1000/telenav/
      /pps/applications/mediaplayer
      /pps/applications/weathernetwork/
      /pps/qnx/dbnotify/dbs
      /pps/qnx/device/<device>
      /pps/qnx/device/<device>_ctrl
      /pps/qnx/driver/<pid>
      /pps/qnx/mount/<device>
      /pps/qnx/qdb/config/<dbname>
      /pps/qnx/qdb/status/<dbname>
      /pps/qnxcar/hvac
      /pps/qnxcar/locale
      /pps/qnxcar/navigation/control
      /pps/qnxcar/navigation/geolocation
      /pps/qnxcar/navigation/options
      /pps/qnxcar/navigation/status
      /pps/qnxcar/profile/theme
      /pps/qnxcar/profile/user
      /pps/qnxcar/radio/control
      /pps/qnxcar/radio/status
      /pps/qnxcar/radio/ti_control
      /pps/qnxcar/radio/ti_rds
      /pps/qnxcar/radio/ti_status
      /pps/qnxcar/radio/tuners
      /pps/qnxcar/sensors
      /pps/qnxcar/system/info
      /pps/qnxcar/system/settings
      /pps/servicedata/schedule
      /pps/services/alarm/control
      /pps/services/alarm/status-<clientlabel>
      /pps/services/app-launcher
      /pps/services/asr/control
      /pps/services/audio/audio_router_control
      /pps/services/audio/audio_router_status
      /pps/services/audio/control
      /pps/services/audio/devices/
      /pps/services/audio/status
      /pps/services/audio/types/
      /pps/services/audio/voice_status
      /pps/services/bluetooth/control
      /pps/services/bluetooth/messages/control
      /pps/services/bluetooth/messages/notification
      /pps/services/bluetooth/messages/status
      /pps/services/bluetooth/paired_devices/<mac_addr>
      /pps/services/bluetooth/phonebook/control
      /pps/services/bluetooth/phonebook/status
      /pps/services/bluetooth/remote_devices/<mac_addr>
      /pps/services/bluetooth/services
      /pps/services/bluetooth/settings
      /pps/services/bluetooth/status
      /pps/services/clock/control
      /pps/services/clock/status
      /pps/services/confstr/
      /pps/services/deviceproperties
      /pps/services/dlna/dmcclient/control
      /pps/services/dlna/dmcclient/dmr/networkstate/<dmr_uuid>
      /pps/services/dlna/dmcclient/dmr/playstate/<dmr_uuid>
      /pps/services/dlna/dmcclient/dms/networkstate/<dms_uuid>
      /pps/services/gears/control
      /pps/services/gears/status
      /pps/services/handsfree/control
      /pps/services/handsfree/status
      /pps/services/launcher/control
      /pps/services/mediaserver/settings
      /pps/services/mm-control/control
      /pps/services/mm-control/<playername>/status
      /pps/services/mm-detect/status
      /pps/services/multimedia/renderer/component/
      /pps/services/multimedia/renderer/context/<contextname>
      /pps/services/multimedia/renderer/context/<contextname>/input
      /pps/services/multimedia/renderer/context/<contextname>/metadata
      /pps/services/multimedia/renderer/context/<contextname>/output#
      /pps/services/multimedia/renderer/context/<contextname>/p#
      /pps/services/multimedia/renderer/context/<contextname>/param
      /pps/services/multimedia/renderer/context/<contextname>/play-queue
      /pps/services/multimedia/renderer/context/<contextname>/q#
      /pps/services/multimedia/renderer/context/<contextname>/state
      /pps/services/multimedia/renderer/context/<contextname>/status
      /pps/services/multimedia/renderer/control
      /pps/services/navigator/
      /pps/services/networking/all/interfaces/<interface>
      /pps/services/networking/all/proxy
      /pps/services/networking/all/status_public
      /pps/services/networking/control
      /pps/services/networking/proxy
      /pps/services/networking/proxyserver
      /pps/services/networking/status
      /pps/services/networking/status_public
      /pps/services/private/deviceproperties
      /pps/services/update/control
      /pps/services/update/status
      /pps/system/authorization/control
      /pps/system/keyboard/control
      /pps/system/keyboard/status
      /pps/system/navigator/command
      /pps/system/navigator/windowgroup
      /pps/system/navigator/windowparams
      /pps/system/ppsnetd/control
      /pps/tcs/
    Appendix: List of Objects Used Internally
  Multimedia Detector Configuration Guide
    Multimedia Detector Overview
      Deciding whether to run mm-detect
      Customizing media detection and synchronization
    Running mm-detect
      Restarting mm-detect manually
      Preventing mm-detect from running
      mm-detect SLM specification
      mm-detect command line
    Device tracking and media information management
      Device insertion handling
        Media synchronization thread actions
      Device removal handling
      PPS devices information object
      PPS synchronization status object
  Multimedia Controller Configuration Guide
    Multimedia Controller Overview
      Deciding whether to run mm-control
      mm-control components
    Running mm-control
      Restarting mm-control manually
      Preventing mm-control from running
      mm-control SLM specification
      mm-control command line
        mm-control configuration file
    Setup and Command Monitoring
      Media command processing
UI and Media API References
  Audio Manager Library Reference
    Audio manager routing priority
    Supported routing paths
    Linking with audio manager
    Audio Concurrency (audio_manager_concurrency.h)
      Data types in audio_manager_concurrency.h
        audio_manager_concurrency_t
      Functions in audio_manager_concurrency.h
        audio_manager_get_audio_type_concurrency_status()
        audio_manager_get_current_audio_handle_concurrency_status()
    Audio Devices (audio_manager_device.h)
      Constants in audio_manager_device.h
        Definitions in audio_manager_device.h
      Data types in audio_manager_device.h
        audio_manager_channel_config_t
        audio_manager_channel_t
        audio_manager_device_capabilities_t
        audio_manager_device_capability_t
        audio_manager_device_headset_button_t
        audio_manager_device_t
        audio_manager_device_volume_control_t
        audio_manager_device_audio_config_t
        audio_manager_headset_button_state_t
      Functions in audio_manager_device.h
        audio_manager_get_default_device()
        audio_manager_get_default_input_device()
        audio_manager_get_device_audio_capabilities()
        audio_manager_get_device_audio_config()
        audio_manager_get_device_audio_path()
        audio_manager_get_device_audio_public()
        audio_manager_get_device_button_states()
        audio_manager_get_device_capability()
        audio_manager_get_device_dependency()
        audio_manager_get_device_from_name()
        audio_manager_get_device_name()
        audio_manager_get_device_volume_control()
        audio_manager_get_preferred_audio_input_path()
        audio_manager_get_preferred_audio_output_path()
        audio_manager_is_device_connected()
        audio_manager_is_device_kept_alive()
        audio_manager_is_device_supported()
        audio_manager_is_device_suspended()
        audio_manager_is_hdmi_in_mirror_mode()
        audio_manager_set_device_connected()
        audio_manager_set_device_keep_alive()
        audio_manager_set_device_suspended()
        audio_manager_set_hdmi_mirror_mode()
    Audio Events (audio_manager_event.h)
      Data types in audio_manager_event.h
        audio_manager_event_context_t
        audio_manager_event_type_t
        audio_manager_voice_status_volume_change_t
        audio_manager_device_button_change_t
        audio_manager_device_change_t
        audio_manager_concurrency_change_t
        audio_manager_routing_change_t
        audio_manager_stat_change_t
        audio_manager_status_headphone_boost_change_t
        audio_manager_status_headphone_unsafe_zone_change_t
        audio_manager_status_volume_change_t
        audio_manager_voice_audio_option_change_t
        audio_manager_voice_service_change_t
      Functions in audio_manager_event.h
        audio_manager_add_concurrency_change_event()
        audio_manager_add_device_button_change_event()
        audio_manager_add_device_change_event()
        audio_manager_add_routing_change_event()
        audio_manager_add_stat_change_event()
        audio_manager_add_status_hp_boost_change_event()
        audio_manager_add_status_hp_unsafe_zone_change_event()
        audio_manager_add_voice_audio_option_change_event()
        audio_manager_add_voice_service_change_event()
        audio_manager_add_voice_volume_change_event()
        audio_manager_add_volume_change_event()
        audio_manager_dispatch_event()
        audio_manager_get_event()
        audio_manager_get_event_context()
        audio_manager_get_event_fd()
        audio_manager_peek_event()
        audio_manager_release_event_context()
        audio_manager_remove_concurrency_change_event()
        audio_manager_remove_device_button_change_event()
        audio_manager_remove_device_change_event()
        audio_manager_remove_routing_change_event()
        audio_manager_remove_stat_change_event()
        audio_manager_remove_status_hp_boost_change_event()
        audio_manager_remove_status_hp_unsafe_zone_change_event()
        audio_manager_remove_voice_audio_option_change_event()
        audio_manager_remove_voice_service_change_event()
        audio_manager_remove_voice_volume_change_event()
        audio_manager_remove_volume_change_event()
        audio_manager_wait_for_initialization()
    Audio Routing (audio_manager_routing.h)
      Constants in audio_manager_routing.h
        Definitions in audio_manager_routing.h
      Data types in audio_manager_routing.h
        audio_manager_audio_type_t
        audio_manager_settings_reset_condition_t
      Functions in audio_manager_routing.h
        audio_manager_activate_handle()
        audio_manager_free_handle()
        audio_manager_get_alias_handle()
        audio_manager_get_handle()
        audio_manager_get_handle_status()
        audio_manager_get_handle_type()
        audio_manager_get_name_from_type()
        audio_manager_get_type_from_name()
        audio_manager_set_handle_routing_conditions()
        audio_manager_set_handle_type()
        audio_manager_snd_pcm_open()
        audio_manager_snd_pcm_open_name()
        audio_manager_snd_pcm_open_preferred()
        audio_manager_suspend_handle()
    Audio Voice Services (audio_manager_voice_service.h)
      Constants in audio_manager_voice_service.h
        Definitions in audio_manager_voice_service.h
      Data types in audio_manager_voice_service.h
        audio_manager_voice_option_t
        audio_manager_voice_service_status_t
        audio_manager_voice_service_t
      Functions in audio_manager_voice_service.h
        audio_manager_get_voice_service_from_name()
        audio_manager_get_voice_service_name()
        audio_manager_get_voice_service_option()
        audio_manager_get_voice_service_option_from_name()
        audio_manager_get_voice_service_option_name()
        audio_manager_get_voice_service_status()
        audio_manager_get_voice_service_status_from_name()
        audio_manager_get_voice_service_status_name()
        audio_manager_set_voice_service_option()
        audio_manager_set_voice_service_status()
    Audio Volume (audio_manager_volume.h)
      Data types in audio_manager_volume.h
        audio_manager_headphone_volume_override_status_t
      Functions in audio_manager_volume.h
        audio_manager_adjust_input_level()
        audio_manager_adjust_output_level()
        audio_manager_adjust_voice_output_level()
        audio_manager_clear_stat_counter()
        audio_manager_decrease_output_level()
        audio_manager_decrease_voice_output_level()
        audio_manager_get_headphone_boost_status()
        audio_manager_get_headphone_override()
        audio_manager_get_headphone_unsafe_zone_status()
        audio_manager_get_input_level()
        audio_manager_get_input_mute()
        audio_manager_get_output_level()
        audio_manager_get_output_mute()
        audio_manager_get_output_volume_steps()
        audio_manager_get_stat_counter()
        audio_manager_get_voice_input_mute()
        audio_manager_get_voice_output_level()
        audio_manager_get_voice_output_mute()
        audio_manager_get_voice_output_volume_steps()
        audio_manager_increase_output_level()
        audio_manager_increase_voice_output_level()
        audio_manager_set_headphone_override()
        audio_manager_set_headphone_volume_boost()
        audio_manager_set_headphone_volume_unsafe_zone()
        audio_manager_set_input_level()
        audio_manager_set_input_mute()
        audio_manager_set_output_level()
        audio_manager_set_output_mute()
        audio_manager_set_voice_input_mute()
        audio_manager_set_voice_output_level()
        audio_manager_set_voice_output_mute()
        audio_manager_toggle_input_mute()
        audio_manager_toggle_output_mute()
        audio_manager_toggle_voice_output_mute()
  Gestures Library Reference
    Gesture Buckets (bucket.h)
      Definitions in bucket.h
        Definitions in bucket.h
      Enumerations in bucket.h
        events_bucket_mode_e
        events_bucket_t
        gestures_bucket_t
      Functions in bucket.h
        gestures_bucket_add()
        gestures_bucket_clear()
        gestures_bucket_count()
        gestures_bucket_del()
        gestures_bucket_get()
        gestures_bucket_init()
    Global Settings (defaults.h)
      Definitions in defaults.h
        Definitions in defaults.h
    Double Tap (double_tap.h)
      Data types in double_tap.h
        double_tap_params_t
        double_tap_state_e
        gesture_double_tap_t
      Functions in double_tap.h
        double_tap_gesture_alloc()
        double_tap_gesture_default_params()
    Event Lists (event_list.h)
      Data types in event_list.h
        event_list_item
        event_list_item_t
      Functions in event_list.h
        event_list_add()
        event_list_alloc()
        event_list_alloc_copy()
        event_list_clear()
        event_list_copy()
        event_list_free()
        event_list_get_first()
    Long Press (long_press.h)
      Data types in long_press.h
        gesture_long_press_t
        long_press_params_t
      Functions in long_press.h
        long_press_gesture_alloc()
        long_press_gesture_default_params()
    Pinch Gestures (pinch.h)
      Data types in pinch.h
        gesture_pinch_t
        pinch_params_t
      Functions in pinch.h
        pinch_gesture_alloc()
        pinch_gesture_default_params()
    Press and Tap (press_and_tap.h)
      Data types in press_and_tap.h
        gesture_pt_t
        pt_params_t
      Functions in press_and_tap.h
        pt_gesture_alloc()
        pt_gesture_default_params()
    Rotate Gesture (rotate.h)
      Data types in rotate.h
        gesture_rotate_t
        rotate_params_t
      Functions in rotate.h
        rotate_gesture_alloc()
        rotate_gesture_default_params()
    Gesture Sets (set.h)
      Data types in set.h
        gestures_set_fail_f
      Functions in set.h
        gestures_set_add()
        gestures_set_alloc()
        gestures_set_free()
        gestures_set_process_event()
        gestures_set_process_event_list()
        gestures_set_register_fail_cb()
    Swipe Gesture (swipe.h)
      Data types in swipe.h
        gesture_swipe_t
        swipe_params_t
      Functions in swipe.h
        swipe_gesture_alloc()
        swipe_gesture_default_params()
    Tap Gesture (tap.h)
      Data types in tap.h
        gesture_tap_t
        tap_params_t
      Functions in tap.h
        tap_gesture_alloc()
        tap_gesture_default_params()
    Gesture Timers (timer.h)
      Data types in timer.h
        gesture_timer_callback_t
      Functions in timer.h
        gesture_timer_clear()
        gesture_timer_create()
        gesture_timer_destroy()
        gesture_timer_query()
        gesture_timer_set_event()
        gesture_timer_set_ms()
        gesture_timer_set_now()
    Triple Tap (triple_tap.h)
      Data types in triple_tap.h
        gesture_triple_tap_t
        triple_tap_state_e
        triple_tap_params_t
      Functions in triple_tap.h
        triple_tap_gesture_alloc()
        triple_tap_gesture_default_params()
    Two Finger Pan (two_finger_pan.h)
      Data types in two_finger_pan.h
        gesture_tfpan_t
        tfpan_params_t
      Functions in two_finger_pan.h
        tfpan_gesture_alloc()
        tfpan_gesture_default_params()
    Two Finger Tap (two_finger_tap.h)
      Data types in two_finger_tap.h
        gesture_tft_t
        tft_params_t
      Functions in two_finger_tap.h
        tft_gesture_alloc()
        tft_gesture_default_params()
    Data Types and Helper Functions (types.h)
      Constants in types.h
        Definitions in types.h
      Data types in types.h
        gesture_base
        gesture_base_t
        gesture_coords_t
        gesture_callback_f
        gesture_e
        gesture_funcs_t
        gesture_state_e
      Functions in types.h
        gesture_base_init()
        gesture_add_mustfail()
        save_coords()
        diff_time_ms()
        max_displacement_abs()
        map_contact_id()
  Glview Library Reference
    Constants in glview.h
      Definitions in glview.h
    Data types in glview.h
      glview_api_t
      background_callback
      display_once_callback
      event_callback
      finalize_callback
      foreground_callback
      frame_callback
      initialize_callback
      resize_callback
    Functions in glview.h
      glview_display_once()
      glview_get_callback_data()
      glview_get_size()
      glview_get_version()
      glview_get_vsync()
      glview_initialize()
      glview_loop()
      glview_register_background_callback()
      glview_register_event_callback()
      glview_register_finalize_callback()
      glview_register_foreground_callback()
      glview_register_frame_callback()
      glview_register_initialize_callback()
      glview_register_resize_callback()
      glview_set_callback_data()
      glview_set_vsync()
  Image Library Reference
    Working with Images
      Attaching to the image library
      Loading the image
      Cleaning up
    Image API
      Data types in img.h
        img_decode_callouts_t
        img_encode_callouts_t
        img_format_t
        img_t
      Functions in img.h
        img_cfg_read()
        img_codec_get_criteria()
        img_codec_list()
        img_codec_list_byext()
        img_codec_list_bymime()
        img_convert_data()
        img_convert_getfunc()
        img_crop()
        img_decode_begin()
        img_decode_finish()
        img_decode_frame()
        img_decode_validate()
        img_dtransform()
        img_dtransform_apply()
        img_dtransform_create()
        img_dtransform_free()
        img_encode_begin()
        img_encode_finish()
        img_encode_frame()
        img_expand_getfunc()
        IMG_FMT_BPL()
        IMG_FMT_BPP()
        img_lib_attach()
        img_lib_detach()
        img_load()
        img_load_file()
        img_load_resize_file()
        img_resize_fs()
        img_rotate_ortho()
        img_write()
        img_write_file()
  Input Events Library Reference
    Event types (event_types.h)
      Data types in event_types.h
        input_class_e
        input_event_e
        mtouch_event
    Screen helpers (screen_helpers.h)
      Functions in screen_helpers.h
        screen_get_mtouch_event()
  Metadata Provider Library Reference
    Metadata Provider Overview
      Architecture of libmd
      Metadata providers
        MDP ratings
        Metadata extraction
        Included MDPs
      Metadata extraction sessions
    Configuring Metadata Providers
      Configuration file
    Metadata Provider API
      md.h
        Data types in md.h
          mmmd_error_info_t
          mmmd_flags_t
          mmmd_hdl_t
        Functions in md.h
          mmmd_error_info()
          mmmd_flags_set()
          mmmd_get()
          mmmd_init()
          mmmd_mdps_list()
          mmmd_session_close()
          mmmd_session_open()
          mmmd_session_params_set()
          mmmd_terminate()
      md_errors.h
        Data types in md_errors.h
          mmmd_errcode
        Functions in md_errors.h
          mmmd_error_str()
  Multimedia Renderer Developer's Guide
    Multimedia Renderer Architecture
      Supported media
      Abstraction layers
      Contexts
      Outputs
      Inputs
      Plugins
    Using the Multimedia Renderer
      Starting the multimedia renderer
        mm-renderer configuration file
        mm-renderer command line
      Working with contexts
        Closing context handles
      Defining Parameters
      Playing media
        Play states
        Play speed
        Seeking to positions
        Managing video windows
      Recording audio data
      PPS objects
        Context state
        Play state, warnings, and errors
        Input metadata
        Playlist window
        Supported file and MIME types
    Multimedia Renderer Client API
      Data types in renderer.h and types.h
        mm_error_code_t
        mmr_connection_t
        mmr_context_t
        mmr_error_info_t
      Functions in renderer.h
        mmr_command_send()
        mmr_connect()
        mmr_context_close()
        mmr_context_create()
        mmr_context_destroy()
        mmr_context_open()
        mmr_context_parameters()
        mmr_disconnect()
        mmr_error_info()
        mmr_input_attach()
        mmr_input_detach()
        mmr_input_parameters()
        mmr_list_change()
        mmr_output_attach()
        mmr_output_detach()
        mmr_output_parameters()
        mmr_play()
        mmr_seek()
        mmr_speed_set()
        mmr_stop()
        mmr_track_parameters()
    Multimedia Renderer Event API
      Data types in events.h
        mmr_event_t
          mmr_event::details
          mmr_event::data
        mmr_event_type_t
        mmr_state_t
      Functions in events.h
        mmr_event_arm()
        mmr_event_data_set()
        mmr_event_get()
        mmr_event_wait()
    Dictionary Object API
      Data types in strm.h
        strm_dict_t
        strm_string_t
      Functions in strm.h
        strm_dict_clone()
        strm_dict_compare()
        strm_dict_destroy()
        strm_dict_find_index()
        strm_dict_find_rstr()
        strm_dict_find_value()
        strm_dict_index_delete()
        strm_dict_key_delete()
        strm_dict_key_get()
        strm_dict_key_rstr()
        strm_dict_new()
        strm_dict_set()
        strm_dict_set_rstr()
        strm_dict_size()
        strm_dict_subtract()
        strm_dict_value_get()
        strm_dict_value_rstr()
        strm_string_alloc()
        strm_string_clone()
        strm_string_destroy()
        strm_string_get()
        strm_string_make()
        strm_string_modify()
  Multimedia Synchronizer Developer's Guide
    Multimedia Synchronization Overview
      The synchronization process
        Synchronizer selection
        Synchronization passes
        Mediastore filesystem traversal
        Database cleanup
        Optimization of synchronization for slow devices
      Full, directed, and file synchronizations
    Setting up the Multimedia Synchronizer Environment
      mm-sync command line
      mmsyncclient command utility
    Working with Synchronizations
      Synchronizing multimedia content
        Maintaining database persistence
      Tracking synchronization progress
      Setting a priority folder
      Repairing database inconsistencies
    Configuring Mediastore Synchronization
      Configuration file contents
        The <Configuration> element
        The <Configuration>/<Database> element
        The <Configuration>/<Database>/<Synchronization> element
        The <Configuration>/<Database>/<Synchronization>/<ConfigurableMetadata> element
        The <Configuration>/<Database>/<Synchronization>/<MSS> element
        The <Configuration>/<Database>/<Synchronization>/<PLSS> element
        The <Configuration>/<Database>/<Prune> element
      Synchronization thread priorities
      Skipping files based on their names
      Limiting the number of items read
      Maintaining the same IDs for updated files and playlists
      Filtering synchronization by file type
    Multimedia Synchronizer API
      Client interface
        Constants in mmsyncclient.h, interface.h, and types.h
          Defines in mmsyncclient.h
          Defines in interface.h
          Defines in types.h
        Data types in types.h
          mmsync_hdl_t
          mmsync_status_t
        Functions in mmsyncclient.h
          mm_sync_cancel()
          mm_sync_connect()
          mm_sync_control()
          mm_sync_debug_set()
          mm_sync_disconnect()
          mm_sync_resume()
          mm_sync_start()
          mm_sync_status_get()
          mm_sync_status_get_bydbname()
          mm_sync_status_get_byid()
          mm_sync_status_get_dbname()
          mm_sync_suspend()
      Configuration constants
        Defines in config.h
      Media file categories
        Data types in interface.h
          mm_ftypes_t
      Event interface
        Data types in event.h
          mmsync_event_type_t
          mmsync_event_t
          mmsync_sync_data_t
          mmsync_first_fid_data_t
          mmsync_event_metadata_licensing_t
          mmsync_ms_update_data_t
          mmsync_folder_sync_data_t
          mmsync_event_queue_size_t
        Functions in mmsyncclient.h
          mm_sync_events_get()
          mm_sync_events_register()
      Error information
        Data types in event.h
          mmsync_sync_error_type_t
          mmsync_sync_error_t
  Screen and Windowing Developer's Guide
    Contexts
      Create a context
      Context types
      Set a context property
    Windows
      Window types
      Position a window
      Create a window
      Create a child window
      Pixel formats
    Displays
      Multiple displays
        Complete Sample: Using Multiple Displays
    Event types
     Screen and Windowing Installation and Configuration
      Install Screen and Windowing
        Apply your Screen and Windowing patch
        Troubleshooting
      Configure Screen and Windowing
        Configure khronos section
          Configure egl display
          egl display configuration parameters
          Configure wfd device
        Configure winmgr section
          Configure globals
          globals configuration parameters
          Configure display display_id
          display configuration parameters
          Configure class
          class configuration parameters
          Configure mtouch
          mtouch configuration parameters
        Apply your Screen and Windowing configuration
        Troubleshooting
     Screen and Windowing Library Reference
      Function safety
      Function execution types
        Immediate execution
        Flushing execution
        Delayed execution
        Apply execution
        Function types
      General (screen.h)
        Constants in screen.h
          Definitions in screen.h
        Data types in screen.h
          _screen_mode
          Screen property types
          Screen object types
          Screen power mode types
          Screen Idle Mode types
          Screen mirror types
          Screen alpha mode types
          Screen pixel format types
          Screen usage flag types
          Screen transparency types
          Screen sensitivity types
          Screen sensitivity masks
          Screen scaling quality types
          Screen CBABC mode types
          Screen flushing types
          Screen mouse button types
          Screen touch types
      Contexts (screen.h)
        Data types in screen.h
          screen_context_t
          Screen context types
        Functions in screen.h
          screen_create_context()
          screen_set_context_property_cv()
          screen_set_context_property_iv()
          screen_set_context_property_llv()
          screen_set_context_property_pv()
          screen_get_context_property_cv()
          screen_get_context_property_iv()
          screen_get_context_property_llv()
          screen_get_context_property_pv()
          screen_destroy_context()
      Windows (screen.h)
        Data types in screen.h
          screen_window_t
          Screen window types
          Screen window metric counts
        Functions in screen.h
          screen_create_window()
          screen_create_window_type()
          screen_create_window_buffers()
          screen_attach_window_buffers()
          screen_share_window_buffers()
          screen_create_window_group()
          screen_join_window_group()
          screen_leave_window_group()
          screen_ref_window()
          screen_unref_window()
          screen_post_window()
          screen_wait_post()
          screen_read_window()
          screen_discard_window_regions()
          screen_set_window_property_cv()
          screen_set_window_property_iv()
          screen_set_window_property_llv()
          screen_set_window_property_pv()
          screen_get_window_property_cv()
          screen_get_window_property_iv()
          screen_get_window_property_llv()
          screen_get_window_property_pv()
          screen_destroy_window_buffers()
          screen_destroy_window()
      Pixmaps (screen.h)
        Data types in screen.h
          screen_pixmap_t
          Screen pixmap metric counts
        Functions in screen.h
          screen_create_pixmap()
          screen_attach_pixmap_buffer()
          screen_create_pixmap_buffer()
          screen_destroy_pixmap()
          screen_destroy_pixmap_buffer()
          screen_get_pixmap_property_cv()
          screen_get_pixmap_property_iv()
          screen_get_pixmap_property_llv()
          screen_get_pixmap_property_pv()
          screen_join_pixmap_group()
          screen_leave_pixmap_group()
          screen_set_pixmap_property_cv()
          screen_set_pixmap_property_iv()
          screen_set_pixmap_property_llv()
          screen_set_pixmap_property_pv()
      Buffers (screen.h)
        Data types in screen.h
          screen_buffer_t
        Functions in screen.h
          screen_create_buffer()
          screen_set_buffer_property_cv()
          screen_set_buffer_property_iv()
          screen_set_buffer_property_llv()
          screen_set_buffer_property_pv()
          screen_get_buffer_property_cv()
          screen_get_buffer_property_iv()
          screen_get_buffer_property_llv()
          screen_get_buffer_property_pv()
          screen_destroy_buffer()
      Groups (screen.h)
        Data types in screen.h
          screen_group_t
        Functions in screen.h
          screen_create_group()
          screen_set_group_property_cv()
          screen_set_group_property_iv()
          screen_set_group_property_llv()
          screen_set_group_property_pv()
          screen_get_group_property_cv()
          screen_get_group_property_iv()
          screen_get_group_property_llv()
          screen_get_group_property_pv()
          screen_destroy_group()
      Events (screen.h)
        Data types in screen.h
          screen_event_t
          Screen event types
        Functions in screen.h
          screen_create_event()
          screen_inject_event()
          screen_send_event()
          screen_get_event()
          screen_set_event_property_cv()
          screen_set_event_property_iv()
          screen_set_event_property_llv()
          screen_set_event_property_pv()
          screen_get_event_property_cv()
          screen_get_event_property_iv()
          screen_get_event_property_llv()
          screen_get_event_property_pv()
          screen_destroy_event()
      Displays (screen.h)
        Data types in screen.h
          screen_display_t
          screen_display_mode_t
          Screen display mode types
          Screen display types
          Screen display metric count types
        Functions in screen.h
          screen_set_display_property_cv()
          screen_set_display_property_iv()
          screen_set_display_property_llv()
          screen_set_display_property_pv()
          screen_get_display_property_cv()
          screen_get_display_property_iv()
          screen_get_display_property_llv()
          screen_get_display_property_pv()
          screen_get_display_modes()
          screen_read_display()
          screen_share_display_buffers()
          screen_wait_vsync()
      Devices (screen.h)
        Data types in screen.h
          screen_device_t
          Screen device metric counts
        Functions in screen.h
          screen_create_device_type()
          screen_set_device_property_cv()
          screen_set_device_property_iv()
          screen_set_device_property_llv()
          screen_set_device_property_pv()
          screen_get_device_property_cv()
          screen_get_device_property_iv()
          screen_get_device_property_llv()
          screen_get_device_property_pv()
          screen_destroy_device()
      Blits (screen.h)
        Data types in screen.h
          Screen blit types
        Functions in screen.h
          screen_blit()
          screen_fill()
          screen_flush_blits()
          screen_flush_context()
      Effects (screen.h, effects.h)
        Data types in effects.h
          Screen effect types
          Screen effect property types
          Screen effect flip axis types
          Screen effect flip direction types
          Screen effect rotate direction types
          Screen effect page curl types
          Screen effect reveal types
        Functions in screen.h
          screen_prepare_effect()
          screen_start_effect()
          screen_stop_effect()
          screen_set_effect_property_fv()
          screen_set_effect_property_iv()
      Debugging (screen.h)
        Data types in screen.h
          Screen debug graph types
          Screen packet types
        Functions in screen.h
          screen_print_packet()
    Tutorial: Draw and perform vysnc operation using windows
      Create the background window
      Create the child windows
      Create the main() function
      Complete Sample: A vsync application using windows
    Tutorial: Draw and perform vsync operations using blits, pixmaps, and buffers
      Create a context and initialize a window
      Create buffers and a pixmap
      Combine buffers with blit functions and properties
      Complete Sample: A vsync application using blits, pixmaps and buffers
    Tutorial: Write an application using OpenGL ES
      Use OpenGL ES in a windowed vsync application
      Complete Sample: A windowed vsync application using OpenGL ES
    Tutorial: Screenshots
      Capture a window screenshot
      Complete sample: a window screenshot example
      Capture a display screenshot
      Complete Sample: A Display screen shot example
  String Pattern Library Reference
    Constants in strpattern.h
      Definitions in strpattern.h
    Data types in strpattern.h
      strpattern_analyze_callback_func
      strpattern_context
      strpattern_match
      strpattern_regex_registration
    Functions in strpattern.h
      strpattern_analyze()
      strpattern_analyzeUTF8()
      strpattern_cancel()
      strpattern_context_delete()
      strpattern_context_new()
      strpattern_context_set_sync()
      strpattern_context_sync()
      strpattern_errstr()
      strpattern_init()
      strpattern_match_delete()
      strpattern_match_delete_all()
      strpattern_match_end_index()
      strpattern_match_invoke_action()
      strpattern_match_invoke_count()
      strpattern_match_invoke_data()
      strpattern_match_invoke_data_type()
      strpattern_match_invoke_default()
      strpattern_match_invoke_target()
      strpattern_match_invoke_uri()
      strpattern_match_start_index()
  Audio Manager Library Reference
    Audio manager routing priority
    Supported routing paths
    Linking with audio manager
    Audio Concurrency (audio_manager_concurrency.h)
      Data types in audio_manager_concurrency.h
        audio_manager_concurrency_t
      Functions in audio_manager_concurrency.h
        audio_manager_get_audio_type_concurrency_status()
        audio_manager_get_current_audio_handle_concurrency_status()
    Audio Devices (audio_manager_device.h)
      Constants in audio_manager_device.h
        Definitions in audio_manager_device.h
      Data types in audio_manager_device.h
        audio_manager_channel_config_t
        audio_manager_channel_t
        audio_manager_device_capabilities_t
        audio_manager_device_capability_t
        audio_manager_device_headset_button_t
        audio_manager_device_t
        audio_manager_device_volume_control_t
        audio_manager_device_audio_config_t
        audio_manager_headset_button_state_t
      Functions in audio_manager_device.h
        audio_manager_get_default_device()
        audio_manager_get_default_input_device()
        audio_manager_get_device_audio_capabilities()
        audio_manager_get_device_audio_config()
        audio_manager_get_device_audio_path()
        audio_manager_get_device_audio_public()
        audio_manager_get_device_button_states()
        audio_manager_get_device_capability()
        audio_manager_get_device_dependency()
        audio_manager_get_device_from_name()
        audio_manager_get_device_name()
        audio_manager_get_device_volume_control()
        audio_manager_get_preferred_audio_input_path()
        audio_manager_get_preferred_audio_output_path()
        audio_manager_is_device_connected()
        audio_manager_is_device_kept_alive()
        audio_manager_is_device_supported()
        audio_manager_is_device_suspended()
        audio_manager_is_hdmi_in_mirror_mode()
        audio_manager_set_device_connected()
        audio_manager_set_device_keep_alive()
        audio_manager_set_device_suspended()
        audio_manager_set_hdmi_mirror_mode()
    Audio Events (audio_manager_event.h)
      Data types in audio_manager_event.h
        audio_manager_event_context_t
        audio_manager_event_type_t
        audio_manager_voice_status_volume_change_t
        audio_manager_device_button_change_t
        audio_manager_device_change_t
        audio_manager_concurrency_change_t
        audio_manager_routing_change_t
        audio_manager_stat_change_t
        audio_manager_status_headphone_boost_change_t
        audio_manager_status_headphone_unsafe_zone_change_t
        audio_manager_status_volume_change_t
        audio_manager_voice_audio_option_change_t
        audio_manager_voice_service_change_t
      Functions in audio_manager_event.h
        audio_manager_add_concurrency_change_event()
        audio_manager_add_device_button_change_event()
        audio_manager_add_device_change_event()
        audio_manager_add_routing_change_event()
        audio_manager_add_stat_change_event()
        audio_manager_add_status_hp_boost_change_event()
        audio_manager_add_status_hp_unsafe_zone_change_event()
        audio_manager_add_voice_audio_option_change_event()
        audio_manager_add_voice_service_change_event()
        audio_manager_add_voice_volume_change_event()
        audio_manager_add_volume_change_event()
        audio_manager_dispatch_event()
        audio_manager_get_event()
        audio_manager_get_event_context()
        audio_manager_get_event_fd()
        audio_manager_peek_event()
        audio_manager_release_event_context()
        audio_manager_remove_concurrency_change_event()
        audio_manager_remove_device_button_change_event()
        audio_manager_remove_device_change_event()
        audio_manager_remove_routing_change_event()
        audio_manager_remove_stat_change_event()
        audio_manager_remove_status_hp_boost_change_event()
        audio_manager_remove_status_hp_unsafe_zone_change_event()
        audio_manager_remove_voice_audio_option_change_event()
        audio_manager_remove_voice_service_change_event()
        audio_manager_remove_voice_volume_change_event()
        audio_manager_remove_volume_change_event()
        audio_manager_wait_for_initialization()
    Audio Routing (audio_manager_routing.h)
      Constants in audio_manager_routing.h
        Definitions in audio_manager_routing.h
      Data types in audio_manager_routing.h
        audio_manager_audio_type_t
        audio_manager_settings_reset_condition_t
      Functions in audio_manager_routing.h
        audio_manager_activate_handle()
        audio_manager_free_handle()
        audio_manager_get_alias_handle()
        audio_manager_get_handle()
        audio_manager_get_handle_status()
        audio_manager_get_handle_type()
        audio_manager_get_name_from_type()
        audio_manager_get_type_from_name()
        audio_manager_set_handle_routing_conditions()
        audio_manager_set_handle_type()
        audio_manager_snd_pcm_open()
        audio_manager_snd_pcm_open_name()
        audio_manager_snd_pcm_open_preferred()
        audio_manager_suspend_handle()
    Audio Voice Services (audio_manager_voice_service.h)
      Constants in audio_manager_voice_service.h
        Definitions in audio_manager_voice_service.h
      Data types in audio_manager_voice_service.h
        audio_manager_voice_option_t
        audio_manager_voice_service_status_t
        audio_manager_voice_service_t
      Functions in audio_manager_voice_service.h
        audio_manager_get_voice_service_from_name()
        audio_manager_get_voice_service_name()
        audio_manager_get_voice_service_option()
        audio_manager_get_voice_service_option_from_name()
        audio_manager_get_voice_service_option_name()
        audio_manager_get_voice_service_status()
        audio_manager_get_voice_service_status_from_name()
        audio_manager_get_voice_service_status_name()
        audio_manager_set_voice_service_option()
        audio_manager_set_voice_service_status()
    Audio Volume (audio_manager_volume.h)
      Data types in audio_manager_volume.h
        audio_manager_headphone_volume_override_status_t
      Functions in audio_manager_volume.h
        audio_manager_adjust_input_level()
        audio_manager_adjust_output_level()
        audio_manager_adjust_voice_output_level()
        audio_manager_clear_stat_counter()
        audio_manager_decrease_output_level()
        audio_manager_decrease_voice_output_level()
        audio_manager_get_headphone_boost_status()
        audio_manager_get_headphone_override()
        audio_manager_get_headphone_unsafe_zone_status()
        audio_manager_get_input_level()
        audio_manager_get_input_mute()
        audio_manager_get_output_level()
        audio_manager_get_output_mute()
        audio_manager_get_output_volume_steps()
        audio_manager_get_stat_counter()
        audio_manager_get_voice_input_mute()
        audio_manager_get_voice_output_level()
        audio_manager_get_voice_output_mute()
        audio_manager_get_voice_output_volume_steps()
        audio_manager_increase_output_level()
        audio_manager_increase_voice_output_level()
        audio_manager_set_headphone_override()
        audio_manager_set_headphone_volume_boost()
        audio_manager_set_headphone_volume_unsafe_zone()
        audio_manager_set_input_level()
        audio_manager_set_input_mute()
        audio_manager_set_output_level()
        audio_manager_set_output_mute()
        audio_manager_set_voice_input_mute()
        audio_manager_set_voice_output_level()
        audio_manager_set_voice_output_mute()
        audio_manager_toggle_input_mute()
        audio_manager_toggle_output_mute()
        audio_manager_toggle_voice_output_mute()
  Gestures Library Reference
    Gesture Buckets (bucket.h)
      Definitions in bucket.h
        Definitions in bucket.h
      Enumerations in bucket.h
        events_bucket_mode_e
        events_bucket_t
        gestures_bucket_t
      Functions in bucket.h
        gestures_bucket_add()
        gestures_bucket_clear()
        gestures_bucket_count()
        gestures_bucket_del()
        gestures_bucket_get()
        gestures_bucket_init()
    Global Settings (defaults.h)
      Definitions in defaults.h
        Definitions in defaults.h
    Double Tap (double_tap.h)
      Data types in double_tap.h
        double_tap_params_t
        double_tap_state_e
        gesture_double_tap_t
      Functions in double_tap.h
        double_tap_gesture_alloc()
        double_tap_gesture_default_params()
    Event Lists (event_list.h)
      Data types in event_list.h
        event_list_item
        event_list_item_t
      Functions in event_list.h
        event_list_add()
        event_list_alloc()
        event_list_alloc_copy()
        event_list_clear()
        event_list_copy()
        event_list_free()
        event_list_get_first()
    Long Press (long_press.h)
      Data types in long_press.h
        gesture_long_press_t
        long_press_params_t
      Functions in long_press.h
        long_press_gesture_alloc()
        long_press_gesture_default_params()
    Pinch Gestures (pinch.h)
      Data types in pinch.h
        gesture_pinch_t
        pinch_params_t
      Functions in pinch.h
        pinch_gesture_alloc()
        pinch_gesture_default_params()
    Press and Tap (press_and_tap.h)
      Data types in press_and_tap.h
        gesture_pt_t
        pt_params_t
      Functions in press_and_tap.h
        pt_gesture_alloc()
        pt_gesture_default_params()
    Rotate Gesture (rotate.h)
      Data types in rotate.h
        gesture_rotate_t
        rotate_params_t
      Functions in rotate.h
        rotate_gesture_alloc()
        rotate_gesture_default_params()
    Gesture Sets (set.h)
      Data types in set.h
        gestures_set_fail_f
      Functions in set.h
        gestures_set_add()
        gestures_set_alloc()
        gestures_set_free()
        gestures_set_process_event()
        gestures_set_process_event_list()
        gestures_set_register_fail_cb()
    Swipe Gesture (swipe.h)
      Data types in swipe.h
        gesture_swipe_t
        swipe_params_t
      Functions in swipe.h
        swipe_gesture_alloc()
        swipe_gesture_default_params()
    Tap Gesture (tap.h)
      Data types in tap.h
        gesture_tap_t
        tap_params_t
      Functions in tap.h
        tap_gesture_alloc()
        tap_gesture_default_params()
    Gesture Timers (timer.h)
      Data types in timer.h
        gesture_timer_callback_t
      Functions in timer.h
        gesture_timer_clear()
        gesture_timer_create()
        gesture_timer_destroy()
        gesture_timer_query()
        gesture_timer_set_event()
        gesture_timer_set_ms()
        gesture_timer_set_now()
    Triple Tap (triple_tap.h)
      Data types in triple_tap.h
        gesture_triple_tap_t
        triple_tap_state_e
        triple_tap_params_t
      Functions in triple_tap.h
        triple_tap_gesture_alloc()
        triple_tap_gesture_default_params()
    Two Finger Pan (two_finger_pan.h)
      Data types in two_finger_pan.h
        gesture_tfpan_t
        tfpan_params_t
      Functions in two_finger_pan.h
        tfpan_gesture_alloc()
        tfpan_gesture_default_params()
    Two Finger Tap (two_finger_tap.h)
      Data types in two_finger_tap.h
        gesture_tft_t
        tft_params_t
      Functions in two_finger_tap.h
        tft_gesture_alloc()
        tft_gesture_default_params()
    Data Types and Helper Functions (types.h)
      Constants in types.h
        Definitions in types.h
      Data types in types.h
        gesture_base
        gesture_base_t
        gesture_coords_t
        gesture_callback_f
        gesture_e
        gesture_funcs_t
        gesture_state_e
      Functions in types.h
        gesture_base_init()
        gesture_add_mustfail()
        save_coords()
        diff_time_ms()
        max_displacement_abs()
        map_contact_id()
  Glview Library Reference
    Constants in glview.h
      Definitions in glview.h
    Data types in glview.h
      glview_api_t
      background_callback
      display_once_callback
      event_callback
      finalize_callback
      foreground_callback
      frame_callback
      initialize_callback
      resize_callback
    Functions in glview.h
      glview_display_once()
      glview_get_callback_data()
      glview_get_size()
      glview_get_version()
      glview_get_vsync()
      glview_initialize()
      glview_loop()
      glview_register_background_callback()
      glview_register_event_callback()
      glview_register_finalize_callback()
      glview_register_foreground_callback()
      glview_register_frame_callback()
      glview_register_initialize_callback()
      glview_register_resize_callback()
      glview_set_callback_data()
      glview_set_vsync()
  Image Library Reference
    Working with Images
      Attaching to the image library
      Loading the image
      Cleaning up
    Image API
      Data types in img.h
        img_decode_callouts_t
        img_encode_callouts_t
        img_format_t
        img_t
      Functions in img.h
        img_cfg_read()
        img_codec_get_criteria()
        img_codec_list()
        img_codec_list_byext()
        img_codec_list_bymime()
        img_convert_data()
        img_convert_getfunc()
        img_crop()
        img_decode_begin()
        img_decode_finish()
        img_decode_frame()
        img_decode_validate()
        img_dtransform()
        img_dtransform_apply()
        img_dtransform_create()
        img_dtransform_free()
        img_encode_begin()
        img_encode_finish()
        img_encode_frame()
        img_expand_getfunc()
        IMG_FMT_BPL()
        IMG_FMT_BPP()
        img_lib_attach()
        img_lib_detach()
        img_load()
        img_load_file()
        img_load_resize_file()
        img_resize_fs()
        img_rotate_ortho()
        img_write()
        img_write_file()
  Input Events Library Reference
    Event types (event_types.h)
      Data types in event_types.h
        input_class_e
        input_event_e
        mtouch_event
    Screen helpers (screen_helpers.h)
      Functions in screen_helpers.h
        screen_get_mtouch_event()
  Metadata Provider Library Reference
    Metadata Provider Overview
      Architecture of libmd
      Metadata providers
        MDP ratings
        Metadata extraction
        Included MDPs
      Metadata extraction sessions
    Configuring Metadata Providers
      Configuration file
    Metadata Provider API
      md.h
        Data types in md.h
          mmmd_error_info_t
          mmmd_flags_t
          mmmd_hdl_t
        Functions in md.h
          mmmd_error_info()
          mmmd_flags_set()
          mmmd_get()
          mmmd_init()
          mmmd_mdps_list()
          mmmd_session_close()
          mmmd_session_open()
          mmmd_session_params_set()
          mmmd_terminate()
      md_errors.h
        Data types in md_errors.h
          mmmd_errcode
        Functions in md_errors.h
          mmmd_error_str()
  Multimedia Renderer Developer's Guide
    Multimedia Renderer Architecture
      Supported media
      Abstraction layers
      Contexts
      Outputs
      Inputs
      Plugins
    Using the Multimedia Renderer
      Starting the multimedia renderer
        mm-renderer configuration file
        mm-renderer command line
      Working with contexts
        Closing context handles
      Defining Parameters
      Playing media
        Play states
        Play speed
        Seeking to positions
        Managing video windows
      Recording audio data
      PPS objects
        Context state
        Play state, warnings, and errors
        Input metadata
        Playlist window
        Supported file and MIME types
    Multimedia Renderer Client API
      Data types in renderer.h and types.h
        mm_error_code_t
        mmr_connection_t
        mmr_context_t
        mmr_error_info_t
      Functions in renderer.h
        mmr_command_send()
        mmr_connect()
        mmr_context_close()
        mmr_context_create()
        mmr_context_destroy()
        mmr_context_open()
        mmr_context_parameters()
        mmr_disconnect()
        mmr_error_info()
        mmr_input_attach()
        mmr_input_detach()
        mmr_input_parameters()
        mmr_list_change()
        mmr_output_attach()
        mmr_output_detach()
        mmr_output_parameters()
        mmr_play()
        mmr_seek()
        mmr_speed_set()
        mmr_stop()
        mmr_track_parameters()
    Multimedia Renderer Event API
      Data types in events.h
        mmr_event_t
          mmr_event::details
          mmr_event::data
        mmr_event_type_t
        mmr_state_t
      Functions in events.h
        mmr_event_arm()
        mmr_event_data_set()
        mmr_event_get()
        mmr_event_wait()
    Dictionary Object API
      Data types in strm.h
        strm_dict_t
        strm_string_t
      Functions in strm.h
        strm_dict_clone()
        strm_dict_compare()
        strm_dict_destroy()
        strm_dict_find_index()
        strm_dict_find_rstr()
        strm_dict_find_value()
        strm_dict_index_delete()
        strm_dict_key_delete()
        strm_dict_key_get()
        strm_dict_key_rstr()
        strm_dict_new()
        strm_dict_set()
        strm_dict_set_rstr()
        strm_dict_size()
        strm_dict_subtract()
        strm_dict_value_get()
        strm_dict_value_rstr()
        strm_string_alloc()
        strm_string_clone()
        strm_string_destroy()
        strm_string_get()
        strm_string_make()
        strm_string_modify()
  Multimedia Synchronizer Developer's Guide
    Multimedia Synchronization Overview
      The synchronization process
        Synchronizer selection
        Synchronization passes
        Mediastore filesystem traversal
        Database cleanup
        Optimization of synchronization for slow devices
      Full, directed, and file synchronizations
    Setting up the Multimedia Synchronizer Environment
      mm-sync command line
      mmsyncclient command utility
    Working with Synchronizations
      Synchronizing multimedia content
        Maintaining database persistence
      Tracking synchronization progress
      Setting a priority folder
      Repairing database inconsistencies
    Configuring Mediastore Synchronization
      Configuration file contents
        The <Configuration> element
        The <Configuration>/<Database> element
        The <Configuration>/<Database>/<Synchronization> element
        The <Configuration>/<Database>/<Synchronization>/<ConfigurableMetadata> element
        The <Configuration>/<Database>/<Synchronization>/<MSS> element
        The <Configuration>/<Database>/<Synchronization>/<PLSS> element
        The <Configuration>/<Database>/<Prune> element
      Synchronization thread priorities
      Skipping files based on their names
      Limiting the number of items read
      Maintaining the same IDs for updated files and playlists
      Filtering synchronization by file type
    Multimedia Synchronizer API
      Client interface
        Constants in mmsyncclient.h, interface.h, and types.h
          Defines in mmsyncclient.h
          Defines in interface.h
          Defines in types.h
        Data types in types.h
          mmsync_hdl_t
          mmsync_status_t
        Functions in mmsyncclient.h
          mm_sync_cancel()
          mm_sync_connect()
          mm_sync_control()
          mm_sync_debug_set()
          mm_sync_disconnect()
          mm_sync_resume()
          mm_sync_start()
          mm_sync_status_get()
          mm_sync_status_get_bydbname()
          mm_sync_status_get_byid()
          mm_sync_status_get_dbname()
          mm_sync_suspend()
      Configuration constants
        Defines in config.h
      Media file categories
        Data types in interface.h
          mm_ftypes_t
      Event interface
        Data types in event.h
          mmsync_event_type_t
          mmsync_event_t
          mmsync_sync_data_t
          mmsync_first_fid_data_t
          mmsync_event_metadata_licensing_t
          mmsync_ms_update_data_t
          mmsync_folder_sync_data_t
          mmsync_event_queue_size_t
        Functions in mmsyncclient.h
          mm_sync_events_get()
          mm_sync_events_register()
      Error information
        Data types in event.h
          mmsync_sync_error_type_t
          mmsync_sync_error_t
  Screen and Windowing Developer's Guide
    Contexts
      Create a context
      Context types
      Set a context property
    Windows
      Window types
      Position a window
      Create a window
      Create a child window
      Pixel formats
    Displays
      Multiple displays
        Complete Sample: Using Multiple Displays
    Event types
     Screen and Windowing Installation and Configuration
      Install Screen and Windowing
        Apply your Screen and Windowing patch
        Troubleshooting
      Configure Screen and Windowing
        Configure khronos section
          Configure egl display
          egl display configuration parameters
          Configure wfd device
        Configure winmgr section
          Configure globals
          globals configuration parameters
          Configure display display_id
          display configuration parameters
          Configure class
          class configuration parameters
          Configure mtouch
          mtouch configuration parameters
        Apply your Screen and Windowing configuration
        Troubleshooting
     Screen and Windowing Library Reference
      Function safety
      Function execution types
        Immediate execution
        Flushing execution
        Delayed execution
        Apply execution
        Function types
      General (screen.h)
        Constants in screen.h
          Definitions in screen.h
        Data types in screen.h
          _screen_mode
          Screen property types
          Screen object types
          Screen power mode types
          Screen Idle Mode types
          Screen mirror types
          Screen alpha mode types
          Screen pixel format types
          Screen usage flag types
          Screen transparency types
          Screen sensitivity types
          Screen sensitivity masks
          Screen scaling quality types
          Screen CBABC mode types
          Screen flushing types
          Screen mouse button types
          Screen touch types
      Contexts (screen.h)
        Data types in screen.h
          screen_context_t
          Screen context types
        Functions in screen.h
          screen_create_context()
          screen_set_context_property_cv()
          screen_set_context_property_iv()
          screen_set_context_property_llv()
          screen_set_context_property_pv()
          screen_get_context_property_cv()
          screen_get_context_property_iv()
          screen_get_context_property_llv()
          screen_get_context_property_pv()
          screen_destroy_context()
      Windows (screen.h)
        Data types in screen.h
          screen_window_t
          Screen window types
          Screen window metric counts
        Functions in screen.h
          screen_create_window()
          screen_create_window_type()
          screen_create_window_buffers()
          screen_attach_window_buffers()
          screen_share_window_buffers()
          screen_create_window_group()
          screen_join_window_group()
          screen_leave_window_group()
          screen_ref_window()
          screen_unref_window()
          screen_post_window()
          screen_wait_post()
          screen_read_window()
          screen_discard_window_regions()
          screen_set_window_property_cv()
          screen_set_window_property_iv()
          screen_set_window_property_llv()
          screen_set_window_property_pv()
          screen_get_window_property_cv()
          screen_get_window_property_iv()
          screen_get_window_property_llv()
          screen_get_window_property_pv()
          screen_destroy_window_buffers()
          screen_destroy_window()
      Pixmaps (screen.h)
        Data types in screen.h
          screen_pixmap_t
          Screen pixmap metric counts
        Functions in screen.h
          screen_create_pixmap()
          screen_attach_pixmap_buffer()
          screen_create_pixmap_buffer()
          screen_destroy_pixmap()
          screen_destroy_pixmap_buffer()
          screen_get_pixmap_property_cv()
          screen_get_pixmap_property_iv()
          screen_get_pixmap_property_llv()
          screen_get_pixmap_property_pv()
          screen_join_pixmap_group()
          screen_leave_pixmap_group()
          screen_set_pixmap_property_cv()
          screen_set_pixmap_property_iv()
          screen_set_pixmap_property_llv()
          screen_set_pixmap_property_pv()
      Buffers (screen.h)
        Data types in screen.h
          screen_buffer_t
        Functions in screen.h
          screen_create_buffer()
          screen_set_buffer_property_cv()
          screen_set_buffer_property_iv()
          screen_set_buffer_property_llv()
          screen_set_buffer_property_pv()
          screen_get_buffer_property_cv()
          screen_get_buffer_property_iv()
          screen_get_buffer_property_llv()
          screen_get_buffer_property_pv()
          screen_destroy_buffer()
      Groups (screen.h)
        Data types in screen.h
          screen_group_t
        Functions in screen.h
          screen_create_group()
          screen_set_group_property_cv()
          screen_set_group_property_iv()
          screen_set_group_property_llv()
          screen_set_group_property_pv()
          screen_get_group_property_cv()
          screen_get_group_property_iv()
          screen_get_group_property_llv()
          screen_get_group_property_pv()
          screen_destroy_group()
      Events (screen.h)
        Data types in screen.h
          screen_event_t
          Screen event types
        Functions in screen.h
          screen_create_event()
          screen_inject_event()
          screen_send_event()
          screen_get_event()
          screen_set_event_property_cv()
          screen_set_event_property_iv()
          screen_set_event_property_llv()
          screen_set_event_property_pv()
          screen_get_event_property_cv()
          screen_get_event_property_iv()
          screen_get_event_property_llv()
          screen_get_event_property_pv()
          screen_destroy_event()
      Displays (screen.h)
        Data types in screen.h
          screen_display_t
          screen_display_mode_t
          Screen display mode types
          Screen display types
          Screen display metric count types
        Functions in screen.h
          screen_set_display_property_cv()
          screen_set_display_property_iv()
          screen_set_display_property_llv()
          screen_set_display_property_pv()
          screen_get_display_property_cv()
          screen_get_display_property_iv()
          screen_get_display_property_llv()
          screen_get_display_property_pv()
          screen_get_display_modes()
          screen_read_display()
          screen_share_display_buffers()
          screen_wait_vsync()
      Devices (screen.h)
        Data types in screen.h
          screen_device_t
          Screen device metric counts
        Functions in screen.h
          screen_create_device_type()
          screen_set_device_property_cv()
          screen_set_device_property_iv()
          screen_set_device_property_llv()
          screen_set_device_property_pv()
          screen_get_device_property_cv()
          screen_get_device_property_iv()
          screen_get_device_property_llv()
          screen_get_device_property_pv()
          screen_destroy_device()
      Blits (screen.h)
        Data types in screen.h
          Screen blit types
        Functions in screen.h
          screen_blit()
          screen_fill()
          screen_flush_blits()
          screen_flush_context()
      Effects (screen.h, effects.h)
        Data types in effects.h
          Screen effect types
          Screen effect property types
          Screen effect flip axis types
          Screen effect flip direction types
          Screen effect rotate direction types
          Screen effect page curl types
          Screen effect reveal types
        Functions in screen.h
          screen_prepare_effect()
          screen_start_effect()
          screen_stop_effect()
          screen_set_effect_property_fv()
          screen_set_effect_property_iv()
      Debugging (screen.h)
        Data types in screen.h
          Screen debug graph types
          Screen packet types
        Functions in screen.h
          screen_print_packet()
    Tutorial: Draw and perform vysnc operation using windows
      Create the background window
      Create the child windows
      Create the main() function
      Complete Sample: A vsync application using windows
    Tutorial: Draw and perform vsync operations using blits, pixmaps, and buffers
      Create a context and initialize a window
      Create buffers and a pixmap
      Combine buffers with blit functions and properties
      Complete Sample: A vsync application using blits, pixmaps and buffers
    Tutorial: Write an application using OpenGL ES
      Use OpenGL ES in a windowed vsync application
      Complete Sample: A windowed vsync application using OpenGL ES
    Tutorial: Screenshots
      Capture a window screenshot
      Complete sample: a window screenshot example
      Capture a display screenshot
      Complete Sample: A Display screen shot example
  String Pattern Library Reference
    Constants in strpattern.h
      Definitions in strpattern.h
    Data types in strpattern.h
      strpattern_analyze_callback_func
      strpattern_context
      strpattern_match
      strpattern_regex_registration
    Functions in strpattern.h
      strpattern_analyze()
      strpattern_analyzeUTF8()
      strpattern_cancel()
      strpattern_context_delete()
      strpattern_context_new()
      strpattern_context_set_sync()
      strpattern_context_sync()
      strpattern_errstr()
      strpattern_init()
      strpattern_match_delete()
      strpattern_match_delete_all()
      strpattern_match_end_index()
      strpattern_match_invoke_action()
      strpattern_match_invoke_count()
      strpattern_match_invoke_data()
      strpattern_match_invoke_data_type()
      strpattern_match_invoke_default()
      strpattern_match_invoke_target()
      strpattern_match_invoke_uri()
      strpattern_match_start_index()
QNX Momentics IDE User's Guide
  Assumptions
  IDE Concepts
     What is an IDE?
       Build embedded systems using the IDE
    Perspectives
    Views
    Editors
      Use alternate editors
      Change editors
      Refresh the resources
      Disable automatic syntax annotation highlighting
     Projects in the IDE
      Considerations for project development
      How the IDE characterizes projects using natures
    The IDE Workspace
      Specify a workspace location
    Host and target machines
    Target agent (the qconn daemon)
    Launcher
    Resources
    Wizards
    Keyboard shortcuts
    Version coexistence
      Specify which OS version to build for
    Environment variables
   Getting Started
    Start the IDE
      The IDE welcomes you
      Start the IDE for the first time
      Start the IDE from the command line
    Use the workbench
    Use the QNX help system
      Open the online help from the IDE
      Navigate the online help
      Create help bookmarks
      Tips and Tricks
    Create a project
      Create a simple project
    Rename a project
    Create a target system project
      Create a QNX target system Project
    Create a launch configuration
     Run your application
    Delete a project
    Troubleshoot the IDE
  Prepare Your Target
    Host-target communications
      Types of target processors
      IP communications
      Serial communications
        Configure a target for serial communication
      qconn over Qnet
      securing qconn
      Install the qconn update
      Copy a new version of qconn to a target system
    Network QNX Neutrino using PPP
      Verify a serial connection
      Prepare an embedded system for a Windows target
      QNX Networking
      Link an embedded system running QNX Neutrino to a Windows network connection
      Verify a network connection
  Develop C/C++ Programs
    The C/C++ perspective
    Understand projects in the IDE
      The IDE project model
      Supported project types in the IDE
        Container project
      Scenarios for creating a project for the first time
      Check out a partial source tree
      Share projects
      Check out existing projects
      Set build properties for a project
    Create a project in the IDE
      Create a simple project
      Create a make project
      Managed make projects
        Create a Makefile to build outside of the IDE
      Choose an indexer
    Working with projects
       Opening files
      Create files from scratch
      Filter files
      Open projects
      Close projects
      View outlines of source and binary files
    Write code
      C/C++ editor layout
      Assistance with function names
      Access source files for functions
      Use code templates
        Insert code templates
        Create a custom template
        Edit a code template
      Add include directives
      Use hover help
      Add and remove comments in code
      Customize the C/C++ editor
        Change fonts, background color, or the visibility of line numbers
        Change tabs into spaces, highlight, and folding options
        Set Content Assist options
      Use other editors
        Use an external editor outside of the IDE
        Use another editor within the IDE
     Build projects
      Enable the autobuild feature for QNX C/C++ projects
      Enable the autobuild feature for non QNX C/C++ projects
      Configure automated builds
        Example #1: the Makefile is in the root
      Build all projects
        Configure the project build order
      Build a single project
      Build selected projects
      Build from the command line
      Clean and rebuild all projects
        Clean selected projects
      Autosave before building
      Create custom make targets
        Build a project with a custom make target
        Remove a make target
      Add a use message
        Add a usage message when using a QNX C/C++ Project
        Add a usage message when using a Makefile Project
    More development features
      Track remaining work
        Error markers
        Jump to errors
        Filtering errors
        Track tasks
        Set reminders
        Associate tasks with resources
        Remove a task
      Code synopsis
        Toolbar icons
        Outline view icons
        Filter and group in the Outline view
        Use Working Sets
      Check your build
        Customize the Console view
      Open headers
        Set the include paths and define directives (C/C++ Make project)
      Navigate using Go To Type
  Manage Source Code
    SVN and the IDE
    CVS and the IDE
    Local history feature
    Project files (.project and .cproject)
    Use the core Eclipse source control documentation in the IDE
      SVN documentation
      CVS documentation
   Use a Launch Configuration to Run and Debug Your Application
     What is a launch configuration?
    Launch configuration types
    Create a launch configuration
    Run and debug for the first time
    Debug a program the first time
    Run and debug subsequent times
      Launch a selected program (fast)
      Launch from a list of favorites (faster)
      Launch the last-launched program (fastest)
    Launch Group type
     Set execution options
      Main tab
      Arguments tab
      Environment tab
      Upload tab
      Debugger tab
      Source tab
      Common tab
      Tools tab
   Debugging a program in the IDE
    Debug a program (build an executable for debugging)
    Debug a child process
    Control your session
      Debug view
        Debug view icons
        Use the controls
        Toolbar icons
        Use hotkeys
        Control your session
          From the Debug view
          From the C/C++ editor
        Disassembly mode
      Debug launch controls
      Jump to a memory address in the Disassembly view
    More debugging features
      Inspect variables
      Change variable values
      Control the display of variables
      Change a variable to a different type
      View variables in memory
      Use breakpoints and watchpoints
        Add breakpoints
        Add watchpoints
        Set an action for the breakpoint
        Add event breakpoints
        Set properties of breakpoints and watchpoints
        Disable/enable breakpoints and watchpoints
        Remove breakpoints and watchpoints
      Evaluate your expressions
      Inspect your registers
        Toolbar icons
        Menu commands
        Modify registers
        Chang the number system for register values
      Inspect a process's memory
        View memory
        Inspect memory
        Configure output format
        Change memory
        Menu commands
          Menu commands for the Monitors pane
          Menu commands for the Rendering pane
      Inspect shared-library usage
        Load a Library's symbol
      Monitor signal handling
        Change how the debugger handles signals
        Send a signal to a suspended program
      View your output
      Interact with GDB
        Enable the QNX GDB Console view
        Use the QNX GDB Console view
    Use JTAG debugging
      JTAG: Using the Abatron BDI2000 JTAG Debugger with a QNX Neutrino kernel image
        Prerequisites
        Connect the Abatron BDI2000 JTAG Debugger to your host
        Update the Abatron firmware
        Connect the Abatron BDI2000 Debugger to your target
        Build a system image
        Create a launch configuration
        Debug the startup binary
      JTAG: Using the Lauterbach Trace32 In-Circuit Debugger with a QNX Neutrino kernel image
        Prerequisites
        Install the Lauterbach Trace32 In-Circuit Debugger software
        Install the Lauterbach Trace32 Eclipse plug-in software
        Connect the Lauterbach Trace32 In-Circuit Debugger
        Configure the Lauterbach Trace32 In-Circuit Debugger
        Create a launch configuration for the target hardware
        Createa startup script for the Lauterbach Trace32 In-Circuit software
          Create multicore launch configurations
        Use the debugger
      JTAG: Using the Macraigor Usb2Demon Debugger with a QNX Neutrino kernel image
        Prerequisites
        Install the Macraigor hardware support package
        Connect the Macraigor Usb2Demon Debugger to your host
        Connect the Macraigor Usb2Demon Debugger to your target
        Start the OCDremote
        Build a system image
        Create a launch configuration
        Debug a startup binary
  Import and Export
    Import preferences
    Export preferences
    Import existing source code into the IDE
      Projects within projects
        Step 1: Create a project for your source code
        Step 2: Create a new project for each existing project or component in your source code tree
        Step 3: Link the projects to a directory in the source tree
        Step 4: Build the component project in the linked folder
      Import code into the IDE
        Import a C/C++ project from CVS
        Import C/C++ code that doesn't have the project metadata in CVS
        Import C/C++ code from CVS into an existing project
        Import a C/C++ Project from SVN
        Import C/C++ code that doesn't have the project metadata for SVN
        Import C/C++ code from SVN into an existing project
      Import wizard
      Filesystem drag-and-drop
      Add linked resources
    Import a BSP or other QNX source packages
      QNX BSP perspective
      Import a BSP package from Foundry27
      Check out BSP packages directly from the SVN Repositories view
      Set export options for a BSP
    Export projects
      Use the Export command
  Build OS and Flash Images
    Introducing the QNX System Builder
      Toolbar buttons
      Binary Inspector
    Boot script files
    Overview of images
      Components of an image, in order of booting
      Types of images you can create
        BSP filename conventions
        OS image (.ifs file)
        Flash filesystem image (.efs file)
        Combined image
        Padding after the IPL
      Project layout
      Workflow of image creation
    Create a new QNX System Builder project for an OS image
    Create a project for a flash filesystem image (an .efs file)
    Build an OS image
      Create a new image
      Combine images
        Add an IPL to the start of your image
        Add an EFS to your image
        Set the final format of your OS image
    Download an image to your target
      Download
      Open a terminal
      Communicate with your target
      Use the QNX Send File button
      Download using TFTP
      Transfer a file
      Transfer files that aren't in Images
      Transfer an image
      Settings for the TFTP server
      Set font and color preferences
      Download using other methods
    Configure your QNX System Builder projects
      Manage your images
        Determine the shared libraries and DLLs are required for an executable
        Add files to your image
        Delete files
        Add directories
        Delete directories
      Configure image properties
      Image properties
        Directories
        General
        System (.ifs)
        System (.efs)
      Item properties
        General
        Combine
        Memory
        Permissions
      Configure project properties
         Search Paths
        Manage your search paths
        Search path variables
    Optimize your system
      Optimize all libraries in your image
      Optimize a single library
      Restore a slimmed-down library
    Move files between the host and target
      Move files to the target
      Move files from the target to the host
    Export a System Builder project to a mkxfs build file(s)
   Profiling an Application
    Types of profiling
      Statistical sample profiling (sampling)
      Function Instrumentation profiling
      Sampling and Call Count instrumentation profiling
      Postmortem profiling for Call Count and Function Instrumentation profiling
    Profile your programs
      Build a program for profiling
        Build with profiling enabled
      Run and profile a process
      Profile a running process
      Postmortem profiling for Call Count and sampling
      Application Profiler tab
    Control your profiling sessions
    Understand your profiling data
    Profiler Sessions view
      Toolbar options
      Pause and resume a profiling session
      Take a snapshot of a profile session
      Create a sample profile session
      Export a profiler session
    Debug view
    Execution Time view
      Column descriptions
      Interpret Tree mode column information by profiling type
      Toolbar options
      Context menu navigation options
      Take Snapshot and Watch Difference
      Show Threads Tree
      Show Table mode
      Show Calls
      Show Reverse Calls
      Show Call Graphs
      Show Source
      Duplicate a view
      View history
      Grouping
      Set preferences
      Copy to the clipboard
      Filter
      Search
    Annotated source editor
    Use the Application Profiler
      Use Function Instrumentation with the Application Profiler
      Use Sampling and Call Count instrumentation mode
      Use Function Instrumentation mode for a single application
      Use Function Instrumentation in the System Profiler
      Create an Application Profiler session
      Create a profiler session by importing profiler data
      Profile a single-threaded application
      Profile a running process for an existing project
      Use postmortem profiling for Call Count and Sampling
      Postmortem profiling
      Run an instrumented binary with profiling from a command prompt (Function Instrumentation mode)
      Take a snapshot of a profiling session
      Compare profiles
   Using Code Coverage
    Types of code coverage in the IDE
    How the coverage tool works
    Enable code coverage
      Enable code coverage for make projects
      Start a coverage-enabled program
    Import gcc code coverage data from a project
    Associated views
    Code Coverage Sessions view
      Combine Code Coverage sessions
      Examine data line-by-line
    Code Coverage Properties view
    Code Coverage Report view
   Analyze Memory Usage and Find Errors
    Memory management in QNX Neutrino
      Virtual memory
    Memory optimization
      Process memory
        Inspect your process memory distribution
      Performance of heap allocations
        Prepare for a memory profiling session
      Analyze allocation patterns
      Optimize heap memory
        Memory leaks
        Enable memory leak detection
        Inspect outstanding allocations
      Types of allocation overhead
      Estimate the average allocation size
      Tune the allocator
      Optimize static and stack memory
    Find memory errors and leaks
      Test an application for memory leaks using the System Information Tool
      Use Memory Analysis tooling
        Memory leaks
          Enable leak detection
          Detect leaks on demand during program execution
          Interpret leaks
        Memory errors
          Configure the IDE for error analysis
          Change error detection options at runtime
          Interpret memory errors
      Use Mudflap
        Configure Mudflap to find errors
        Options for Mudflap
        Mudflap Violations view
        Interpret Mudflap output
    The Memory Analysis tool
      Advanced topics
        Analyze a running program
        Memory analysis of shared objects
        GUI interface options and environment variables for the Memory Analysis Tool
      Launch your program with Memory Analysis
        Launch from the command line with Memory Analysis enabled
        Perform a postmortem memory analysis
        Attach to a running process
        The Memory Analysis tooling API
      View Memory Analysis data
        Memory Analysis editor
          Select data
          Control the page layout
          Control the overview
          Control the detail pane
          Allocations tab
          Bins tab
          Bands tab
          Usage tab
          Settings tab
        Memory Problems view
          Memory Problems Filter
          Memory Problems Preferences
          View statistics for memory problems
        Memory Events view
          Memory Events Filter
          Memory Events Preferences
          View statistics for memory events
        Memory Backtrace view
        Inspect outstanding allocations
        Interpret errors during memory analysis
          Illegal deallocation of memory
          NULL pointer dereference
          Buffer overflow
          Use freed memory
          Read uninitialized memory
          Resource (memory) leaks
          Functions checked for memory errors during memory analysis
          Summary of error messages for Memory Analysis
      Managing Memory Analysis sessions: The Session view
        Open a session
        Delete a session
        Close a session
        Export session data
        Filter information for a session
        Import session information
        Show information about a session
        Rename a session
      Import memory analysis data
        Import session information from an XML file
        Import event information
      Export memory analysis data
        Export memory analysis session data
        Memory result formats
   Get System Information
    Introduction
    What the System Information perspective reveals
    Log system information
    Associated views
    Control your system information session
      Send a signal
    Examine your target system's attributes
      System Specifications pane
      System Memory pane
      Processes panes
    Watch your processes
      Thread Details pane
      Environment Variables pane
      Process Properties pane
    Examining your target system's memory (inspect virtual address space)
    Track heap usage
      Observe changes in memory usage (allocations and deallocations)
        Outstanding allocations
        Allocation deltas
        Deallocation deltas
        Outstanding allocation deltas
    Examine process signals
    Get channel information
    Track file descriptors
    Track resource usage
    Track the use of adaptive partitions
    Associated views
  Analyze Your System with Kernel Tracing
    Overview of the QNX System Profiler
      Before you begin
    Configure a target for system profiling
      Launch the Log Configuration dialog
      Address translation
      Configure your kernel event trace
      Capture instrumentation data in event log files
    View and interpret the captured data
      System Profiler editor
        Timeline view
          Add bookmarks
        Timeline State Colors view
        Zoom
      Filter profile data
      Raw Event Data view
      Trace Event Log view
      Properties view
        Trace Header tab
        Address Translation tab
        Start Date tab
        Timeline Event Labels tab
        User Event Data tab
    Track events
      Trace Search
      Bookmarks view
    Gather statistics from trace data
      General Statistics view
      Event Owner Statistics view
      Client/Server CPU Statistics view
      Overview view
      Condition Statistics view
      Thread Call Stack view
    Determine thread state behavior
      Thread State Snapshot view
      Why Running? view
    Analyze multiprocessor systems
      CPU Migration pane
    Analyze systems with Adaptive Partitioning scheduling
      Partition Summary pane
    Using Function Instrumentation mode with the System Profiler
      Import part of a kernel trace into the Application Profiler
    System Profiler use cases
      Locate sources of high CPU usage
      Map and isolate client CPU load from server CPU load
      Examine interrupt latency
      Locate events of interest
  Project and Wizard Properties Reference
    Introduction
    Wizard properties
      Options tab
      Build Variants tab
      General tab
      Library tab
      Compiler tab
      Linker tab
        General options
        Extra library paths
        Extra libraries
        Extra object files
    Make Builder tab
    Error Parsers tab
    Project properties
      Projects tab
      Resource panel
      Builders panel
      C/C++ Build panel
      Behaviour tab
      Discovery options tab
      Environment tab
      Settings panel
        Tool settings tab
        Build steps tab
        Build artifact tab
        Binary Parser tab
        Error parsers tab
      Indexer tab
    Creating projects
      Create a C/C++ project
        How to create a C/C++ project
      Create a C Makefile project
      Create a make project
      Create a make project that can be launched outside the IDE
      Use container projects
        Create a container project
        Set up a build configuration
        Edit existing configurations
        Edit using project properties
        Edit using Build Container Configuration
        Build a container project
      Convert projects
        Convert a QNX project to a managed make C/C++ project
        Convert a regular project to a managed make C/C++ project
        Convert to a QNX project
        Convert a project to a different type
        Post-build actions
     Import projects
      Import an existing container project into a workspace
      Import an existing project into a workspace
      Import from a filesystem
      Import GCC coverage data from a project
      Import a QNX Source Package
        Copy a QNX source package
      Import a QNX mkifs Buildfile
      Import a team project set
      Import an archive file
      Breakpoints
      Launch configurations
  Preferences
    General preferences
      Appearance page
        Color and font page
        Label Decorations page
      Compare/Patch page
      Content Types page
      Editors page
        File Associations page
        Text Editors page
          Accessibility page
          Annotations page
          Hyperlinking page
    QNX preferences
  Tutorials
    Before you start
    Tutorial 1: Create a C/C++ project
    Tutorial 2: Create a QNX C/C++ project
    Tutorial 3: Import an existing project into the IDE
    Tutorial 4: Import a QNX BSP into the IDE
  Where Files Are Stored
  Utilities used by the IDE
  IDE Administration
    Install new software
    Use older toolchains with the IDE
    Copy a new version of qconn to a target system
    Update qconn on a development system
  Glossary
  Assumptions
  IDE Concepts
     What is an IDE?
       Build embedded systems using the IDE
    Perspectives
    Views
    Editors
      Use alternate editors
      Change editors
      Refresh the resources
      Disable automatic syntax annotation highlighting
     Projects in the IDE
      Considerations for project development
      How the IDE characterizes projects using natures
    The IDE Workspace
      Specify a workspace location
    Host and target machines
    Target agent (the qconn daemon)
    Launcher
    Resources
    Wizards
    Keyboard shortcuts
    Version coexistence
      Specify which OS version to build for
    Environment variables
   Getting Started
    Start the IDE
      The IDE welcomes you
      Start the IDE for the first time
      Start the IDE from the command line
    Use the workbench
    Use the QNX help system
      Open the online help from the IDE
      Navigate the online help
      Create help bookmarks
      Tips and Tricks
    Create a project
      Create a simple project
    Rename a project
    Create a target system project
      Create a QNX target system Project
    Create a launch configuration
     Run your application
    Delete a project
    Troubleshoot the IDE
  Prepare Your Target
    Host-target communications
      Types of target processors
      IP communications
      Serial communications
        Configure a target for serial communication
      qconn over Qnet
      securing qconn
      Install the qconn update
      Copy a new version of qconn to a target system
    Network QNX Neutrino using PPP
      Verify a serial connection
      Prepare an embedded system for a Windows target
      QNX Networking
      Link an embedded system running QNX Neutrino to a Windows network connection
      Verify a network connection
  Develop C/C++ Programs
    The C/C++ perspective
    Understand projects in the IDE
      The IDE project model
      Supported project types in the IDE
        Container project
      Scenarios for creating a project for the first time
      Check out a partial source tree
      Share projects
      Check out existing projects
      Set build properties for a project
    Create a project in the IDE
      Create a simple project
      Create a make project
      Managed make projects
        Create a Makefile to build outside of the IDE
      Choose an indexer
    Working with projects
       Opening files
      Create files from scratch
      Filter files
      Open projects
      Close projects
      View outlines of source and binary files
    Write code
      C/C++ editor layout
      Assistance with function names
      Access source files for functions
      Use code templates
        Insert code templates
        Create a custom template
        Edit a code template
      Add include directives
      Use hover help
      Add and remove comments in code
      Customize the C/C++ editor
        Change fonts, background color, or the visibility of line numbers
        Change tabs into spaces, highlight, and folding options
        Set Content Assist options
      Use other editors
        Use an external editor outside of the IDE
        Use another editor within the IDE
     Build projects
      Enable the autobuild feature for QNX C/C++ projects
      Enable the autobuild feature for non QNX C/C++ projects
      Configure automated builds
        Example #1: the Makefile is in the root
      Build all projects
        Configure the project build order
      Build a single project
      Build selected projects
      Build from the command line
      Clean and rebuild all projects
        Clean selected projects
      Autosave before building
      Create custom make targets
        Build a project with a custom make target
        Remove a make target
      Add a use message
        Add a usage message when using a QNX C/C++ Project
        Add a usage message when using a Makefile Project
    More development features
      Track remaining work
        Error markers
        Jump to errors
        Filtering errors
        Track tasks
        Set reminders
        Associate tasks with resources
        Remove a task
      Code synopsis
        Toolbar icons
        Outline view icons
        Filter and group in the Outline view
        Use Working Sets
      Check your build
        Customize the Console view
      Open headers
        Set the include paths and define directives (C/C++ Make project)
      Navigate using Go To Type
  Manage Source Code
    SVN and the IDE
    CVS and the IDE
    Local history feature
    Project files (.project and .cproject)
    Use the core Eclipse source control documentation in the IDE
      SVN documentation
      CVS documentation
   Use a Launch Configuration to Run and Debug Your Application
     What is a launch configuration?
    Launch configuration types
    Create a launch configuration
    Run and debug for the first time
    Debug a program the first time
    Run and debug subsequent times
      Launch a selected program (fast)
      Launch from a list of favorites (faster)
      Launch the last-launched program (fastest)
    Launch Group type
     Set execution options
      Main tab
      Arguments tab
      Environment tab
      Upload tab
      Debugger tab
      Source tab
      Common tab
      Tools tab
   Debugging a program in the IDE
    Debug a program (build an executable for debugging)
    Debug a child process
    Control your session
      Debug view
        Debug view icons
        Use the controls
        Toolbar icons
        Use hotkeys
        Control your session
          From the Debug view
          From the C/C++ editor
        Disassembly mode
      Debug launch controls
      Jump to a memory address in the Disassembly view
    More debugging features
      Inspect variables
      Change variable values
      Control the display of variables
      Change a variable to a different type
      View variables in memory
      Use breakpoints and watchpoints
        Add breakpoints
        Add watchpoints
        Set an action for the breakpoint
        Add event breakpoints
        Set properties of breakpoints and watchpoints
        Disable/enable breakpoints and watchpoints
        Remove breakpoints and watchpoints
      Evaluate your expressions
      Inspect your registers
        Toolbar icons
        Menu commands
        Modify registers
        Chang the number system for register values
      Inspect a process's memory
        View memory
        Inspect memory
        Configure output format
        Change memory
        Menu commands
          Menu commands for the Monitors pane
          Menu commands for the Rendering pane
      Inspect shared-library usage
        Load a Library's symbol
      Monitor signal handling
        Change how the debugger handles signals
        Send a signal to a suspended program
      View your output
      Interact with GDB
        Enable the QNX GDB Console view
        Use the QNX GDB Console view
    Use JTAG debugging
      JTAG: Using the Abatron BDI2000 JTAG Debugger with a QNX Neutrino kernel image
        Prerequisites
        Connect the Abatron BDI2000 JTAG Debugger to your host
        Update the Abatron firmware
        Connect the Abatron BDI2000 Debugger to your target
        Build a system image
        Create a launch configuration
        Debug the startup binary
      JTAG: Using the Lauterbach Trace32 In-Circuit Debugger with a QNX Neutrino kernel image
        Prerequisites
        Install the Lauterbach Trace32 In-Circuit Debugger software
        Install the Lauterbach Trace32 Eclipse plug-in software
        Connect the Lauterbach Trace32 In-Circuit Debugger
        Configure the Lauterbach Trace32 In-Circuit Debugger
        Create a launch configuration for the target hardware
        Createa startup script for the Lauterbach Trace32 In-Circuit software
          Create multicore launch configurations
        Use the debugger
      JTAG: Using the Macraigor Usb2Demon Debugger with a QNX Neutrino kernel image
        Prerequisites
        Install the Macraigor hardware support package
        Connect the Macraigor Usb2Demon Debugger to your host
        Connect the Macraigor Usb2Demon Debugger to your target
        Start the OCDremote
        Build a system image
        Create a launch configuration
        Debug a startup binary
  Import and Export
    Import preferences
    Export preferences
    Import existing source code into the IDE
      Projects within projects
        Step 1: Create a project for your source code
        Step 2: Create a new project for each existing project or component in your source code tree
        Step 3: Link the projects to a directory in the source tree
        Step 4: Build the component project in the linked folder
      Import code into the IDE
        Import a C/C++ project from CVS
        Import C/C++ code that doesn't have the project metadata in CVS
        Import C/C++ code from CVS into an existing project
        Import a C/C++ Project from SVN
        Import C/C++ code that doesn't have the project metadata for SVN
        Import C/C++ code from SVN into an existing project
      Import wizard
      Filesystem drag-and-drop
      Add linked resources
    Import a BSP or other QNX source packages
      QNX BSP perspective
      Import a BSP package from Foundry27
      Check out BSP packages directly from the SVN Repositories view
      Set export options for a BSP
    Export projects
      Use the Export command
  Build OS and Flash Images
    Introducing the QNX System Builder
      Toolbar buttons
      Binary Inspector
    Boot script files
    Overview of images
      Components of an image, in order of booting
      Types of images you can create
        BSP filename conventions
        OS image (.ifs file)
        Flash filesystem image (.efs file)
        Combined image
        Padding after the IPL
      Project layout
      Workflow of image creation
    Create a new QNX System Builder project for an OS image
    Create a project for a flash filesystem image (an .efs file)
    Build an OS image
      Create a new image
      Combine images
        Add an IPL to the start of your image
        Add an EFS to your image
        Set the final format of your OS image
    Download an image to your target
      Download
      Open a terminal
      Communicate with your target
      Use the QNX Send File button
      Download using TFTP
      Transfer a file
      Transfer files that aren't in Images
      Transfer an image
      Settings for the TFTP server
      Set font and color preferences
      Download using other methods
    Configure your QNX System Builder projects
      Manage your images
        Determine the shared libraries and DLLs are required for an executable
        Add files to your image
        Delete files
        Add directories
        Delete directories
      Configure image properties
      Image properties
        Directories
        General
        System (.ifs)
        System (.efs)
      Item properties
        General
        Combine
        Memory
        Permissions
      Configure project properties
         Search Paths
        Manage your search paths
        Search path variables
    Optimize your system
      Optimize all libraries in your image
      Optimize a single library
      Restore a slimmed-down library
    Move files between the host and target
      Move files to the target
      Move files from the target to the host
    Export a System Builder project to a mkxfs build file(s)
   Profiling an Application
    Types of profiling
      Statistical sample profiling (sampling)
      Function Instrumentation profiling
      Sampling and Call Count instrumentation profiling
      Postmortem profiling for Call Count and Function Instrumentation profiling
    Profile your programs
      Build a program for profiling
        Build with profiling enabled
      Run and profile a process
      Profile a running process
      Postmortem profiling for Call Count and sampling
      Application Profiler tab
    Control your profiling sessions
    Understand your profiling data
    Profiler Sessions view
      Toolbar options
      Pause and resume a profiling session
      Take a snapshot of a profile session
      Create a sample profile session
      Export a profiler session
    Debug view
    Execution Time view
      Column descriptions
      Interpret Tree mode column information by profiling type
      Toolbar options
      Context menu navigation options
      Take Snapshot and Watch Difference
      Show Threads Tree
      Show Table mode
      Show Calls
      Show Reverse Calls
      Show Call Graphs
      Show Source
      Duplicate a view
      View history
      Grouping
      Set preferences
      Copy to the clipboard
      Filter
      Search
    Annotated source editor
    Use the Application Profiler
      Use Function Instrumentation with the Application Profiler
      Use Sampling and Call Count instrumentation mode
      Use Function Instrumentation mode for a single application
      Use Function Instrumentation in the System Profiler
      Create an Application Profiler session
      Create a profiler session by importing profiler data
      Profile a single-threaded application
      Profile a running process for an existing project
      Use postmortem profiling for Call Count and Sampling
      Postmortem profiling
      Run an instrumented binary with profiling from a command prompt (Function Instrumentation mode)
      Take a snapshot of a profiling session
      Compare profiles
   Using Code Coverage
    Types of code coverage in the IDE
    How the coverage tool works
    Enable code coverage
      Enable code coverage for make projects
      Start a coverage-enabled program
    Import gcc code coverage data from a project
    Associated views
    Code Coverage Sessions view
      Combine Code Coverage sessions
      Examine data line-by-line
    Code Coverage Properties view
    Code Coverage Report view
   Analyze Memory Usage and Find Errors
    Memory management in QNX Neutrino
      Virtual memory
    Memory optimization
      Process memory
        Inspect your process memory distribution
      Performance of heap allocations
        Prepare for a memory profiling session
      Analyze allocation patterns
      Optimize heap memory
        Memory leaks
        Enable memory leak detection
        Inspect outstanding allocations
      Types of allocation overhead
      Estimate the average allocation size
      Tune the allocator
      Optimize static and stack memory
    Find memory errors and leaks
      Test an application for memory leaks using the System Information Tool
      Use Memory Analysis tooling
        Memory leaks
          Enable leak detection
          Detect leaks on demand during program execution
          Interpret leaks
        Memory errors
          Configure the IDE for error analysis
          Change error detection options at runtime
          Interpret memory errors
      Use Mudflap
        Configure Mudflap to find errors
        Options for Mudflap
        Mudflap Violations view
        Interpret Mudflap output
    The Memory Analysis tool
      Advanced topics
        Analyze a running program
        Memory analysis of shared objects
        GUI interface options and environment variables for the Memory Analysis Tool
      Launch your program with Memory Analysis
        Launch from the command line with Memory Analysis enabled
        Perform a postmortem memory analysis
        Attach to a running process
        The Memory Analysis tooling API
      View Memory Analysis data
        Memory Analysis editor
          Select data
          Control the page layout
          Control the overview
          Control the detail pane
          Allocations tab
          Bins tab
          Bands tab
          Usage tab
          Settings tab
        Memory Problems view
          Memory Problems Filter
          Memory Problems Preferences
          View statistics for memory problems
        Memory Events view
          Memory Events Filter
          Memory Events Preferences
          View statistics for memory events
        Memory Backtrace view
        Inspect outstanding allocations
        Interpret errors during memory analysis
          Illegal deallocation of memory
          NULL pointer dereference
          Buffer overflow
          Use freed memory
          Read uninitialized memory
          Resource (memory) leaks
          Functions checked for memory errors during memory analysis
          Summary of error messages for Memory Analysis
      Managing Memory Analysis sessions: The Session view
        Open a session
        Delete a session
        Close a session
        Export session data
        Filter information for a session
        Import session information
        Show information about a session
        Rename a session
      Import memory analysis data
        Import session information from an XML file
        Import event information
      Export memory analysis data
        Export memory analysis session data
        Memory result formats
   Get System Information
    Introduction
    What the System Information perspective reveals
    Log system information
    Associated views
    Control your system information session
      Send a signal
    Examine your target system's attributes
      System Specifications pane
      System Memory pane
      Processes panes
    Watch your processes
      Thread Details pane
      Environment Variables pane
      Process Properties pane
    Examining your target system's memory (inspect virtual address space)
    Track heap usage
      Observe changes in memory usage (allocations and deallocations)
        Outstanding allocations
        Allocation deltas
        Deallocation deltas
        Outstanding allocation deltas
    Examine process signals
    Get channel information
    Track file descriptors
    Track resource usage
    Track the use of adaptive partitions
    Associated views
  Analyze Your System with Kernel Tracing
    Overview of the QNX System Profiler
      Before you begin
    Configure a target for system profiling
      Launch the Log Configuration dialog
      Address translation
      Configure your kernel event trace
      Capture instrumentation data in event log files
    View and interpret the captured data
      System Profiler editor
        Timeline view
          Add bookmarks
        Timeline State Colors view
        Zoom
      Filter profile data
      Raw Event Data view
      Trace Event Log view
      Properties view
        Trace Header tab
        Address Translation tab
        Start Date tab
        Timeline Event Labels tab
        User Event Data tab
    Track events
      Trace Search
      Bookmarks view
    Gather statistics from trace data
      General Statistics view
      Event Owner Statistics view
      Client/Server CPU Statistics view
      Overview view
      Condition Statistics view
      Thread Call Stack view
    Determine thread state behavior
      Thread State Snapshot view
      Why Running? view
    Analyze multiprocessor systems
      CPU Migration pane
    Analyze systems with Adaptive Partitioning scheduling
      Partition Summary pane
    Using Function Instrumentation mode with the System Profiler
      Import part of a kernel trace into the Application Profiler
    System Profiler use cases
      Locate sources of high CPU usage
      Map and isolate client CPU load from server CPU load
      Examine interrupt latency
      Locate events of interest
  Project and Wizard Properties Reference
    Introduction
    Wizard properties
      Options tab
      Build Variants tab
      General tab
      Library tab
      Compiler tab
      Linker tab
        General options
        Extra library paths
        Extra libraries
        Extra object files
    Make Builder tab
    Error Parsers tab
    Project properties
      Projects tab
      Resource panel
      Builders panel
      C/C++ Build panel
      Behaviour tab
      Discovery options tab
      Environment tab
      Settings panel
        Tool settings tab
        Build steps tab
        Build artifact tab
        Binary Parser tab
        Error parsers tab
      Indexer tab
    Creating projects
      Create a C/C++ project
        How to create a C/C++ project
      Create a C Makefile project
      Create a make project
      Create a make project that can be launched outside the IDE
      Use container projects
        Create a container project
        Set up a build configuration
        Edit existing configurations
        Edit using project properties
        Edit using Build Container Configuration
        Build a container project
      Convert projects
        Convert a QNX project to a managed make C/C++ project
        Convert a regular project to a managed make C/C++ project
        Convert to a QNX project
        Convert a project to a different type
        Post-build actions
     Import projects
      Import an existing container project into a workspace
      Import an existing project into a workspace
      Import from a filesystem
      Import GCC coverage data from a project
      Import a QNX Source Package
        Copy a QNX source package
      Import a QNX mkifs Buildfile
      Import a team project set
      Import an archive file
      Breakpoints
      Launch configurations
  Preferences
    General preferences
      Appearance page
        Color and font page
        Label Decorations page
      Compare/Patch page
      Content Types page
      Editors page
        File Associations page
        Text Editors page
          Accessibility page
          Annotations page
          Hyperlinking page
    QNX preferences
  Tutorials
    Before you start
    Tutorial 1: Create a C/C++ project
    Tutorial 2: Create a QNX C/C++ project
    Tutorial 3: Import an existing project into the IDE
    Tutorial 4: Import a QNX BSP into the IDE
  Where Files Are Stored
  Utilities used by the IDE
  IDE Administration
    Install new software
    Use older toolchains with the IDE
    Copy a new version of qconn to a target system
    Update qconn on a development system
  Glossary
QNX Neutrino OS Guides
  System Architecture
    The Philosophy of QNX Neutrino
      An embeddable POSIX OS?
      Product scaling
      Why POSIX for embedded systems?
        Multiple OS sources
        Portability of development staff
        Development environment: native and cross development
      Why QNX Neutrino for embedded systems?
      Microkernel architecture
        The OS as a team of processes
        A true kernel
        System processes
          System processes vs user-written processes
          Device drivers
      Interprocess communication
        QNX Neutrino as a message-passing operating system
      Network distribution of kernels
        Single-computer model
        Flexible networking
    The QNX Neutrino Microkernel
      The implementation of QNX Neutrino
        POSIX realtime and thread extensions
      System services
      Threads and processes
        Thread attributes
        Thread life cycle
      Thread scheduling
        Scheduling priority
        Scheduling policies
          FIFO scheduling
          Round-robin scheduling
          Sporadic scheduling
          Manipulating priority and scheduling policies
        IPC issues
        Thread complexity issues
      Synchronization services
        Mutexes: mutual exclusion locks
          Priority inheritance and mutexes
        Condvars: condition variables
        Barriers
        Sleepon locks
        Reader/writer locks
        Semaphores
        Synchronization via scheduling policy
        Synchronization via message passing
        Synchronization via atomic operations
        Synchronization services implementation
      Clock and timer services
        Time correction
        Timers
      Interrupt handling
        Interrupt latency
        Scheduling latency
        Nested interrupts
        Interrupt calls
    Interprocess Communication (IPC)
      Synchronous message passing
      Message copying
      Simple messages
      Channels and connections
        Pulses
        Priority inheritance and messages
      Message-passing API
      Robust implementations with Send/Receive/Reply
      Events
        I/O notification
      Signals
        Special signals
        Summary of signals
      POSIX message queues
        Why use POSIX message queues?
        File-like interface
        Message-queue functions
      Shared memory
        Shared memory with message passing
        Creating a shared-memory object
        mmap()
        Initializing allocated memory
      Typed memory
        Implementation-defined behavior
          Seeding of typed memory regions
          Naming of typed memory regions
          Pathname space and typed memory
           mmap() allocation flags and typed memory objects
          Permissions and typed memory objects
          Object length and offset definitions
          Interaction with other POSIX APIs
        Practical examples
      Pipes and FIFOs
    The Instrumented Microkernel
      Instrumentation at a glance
      Event control
        Modes of emission
        Ring buffer
      Data interpretation
        System analysis with the IDE
      Proactive tracing
    Multicore Processing
      Asymmetric multiprocessing (AMP)
      Symmetric multiprocessing (SMP)
        Neutrino's microkernel approach
        Booting an x86 SMP system
        Booting a PowerPC or MIPS SMP system
        How the SMP microkernel works
        Critical sections
      Bound multiprocessing (BMP)
        A viable migration strategy
      Choosing between AMP, SMP, and BMP
    Process Manager
      Process management
        Process primitives
          posix_spawn()
          spawn()
          fork()
          vfork()
          exec*()
        Process loading
      Memory management
        Memory Management Units (MMUs)
        Memory protection at run time
          Software watchdog
        Quality control
        Full-protection model
          Private virtual memory
        Variable page size
        Locking memory
        Defragmenting physical memory
          Automatically marking memory as unmovable
      Pathname management
        Resolving pathnames
          Ordering mountpoints
          Single-device mountpoints
          Unioned filesystem mountpoints
          Why overlay mountpoints?
        Symbolic prefixes
          Creating special device names
          Relative pathnames
          Network root
          A note about cd
        File descriptor namespace
          Open control blocks
    Dynamic Linking
      Statically linked
      Dynamically linked
      Augmenting code at runtime
      How shared objects are used
        Memory layout for a typical process
        Runtime linker
        Loading a shared library at runtime
        Symbol name resolution
    Resource Managers
      What is a resource manager?
        Why write a resource manager?
        The types of resource managers
          Device resource managers
          Filesystem resource managers
        Communication via native IPC
      Resource manager architecture
        Message types
        The resource manager shared library
          Automatic default message handling
          open(), dup(), and close()
          Multiple thread handling
          Dispatch functions
          Combine messages
          Second-level default message handling
      Summary
    Filesystems
      Filesystems and pathname resolution
      Filesystem classes
        Filesystems as shared libraries
        io-blk
          Builtin RAM disk
          Partitions
          Buffer cache
        Filesystem limitations
      Image filesystem
      RAM "filesystem"
      Embedded transaction filesystem (ETFS)
        Inside a transaction
        Types of storage media
        Reliability features
          Dynamic wear-leveling
          Static wear-leveling
          CRC error detection
          ECC error correction
          Read degradation monitoring with automatic refresh
          Transaction rollback
          Atomic file operations
          Automatic file defragmentation
      QNX 4 filesystem
      Power-Safe filesystem
        Problems with existing disk filesystems
        Copy-on-write filesystem
        Performance
      DOS Filesystem
      CD-ROM filesystem
      FFS3 filesystem
        Customization
        Organization
          Raw partitions
          Filesystem partitions
          Mountpoints
        Features
          POSIX
          Background reclaim
          Fault recovery
          Compression/decompression
          Flash errors
          Endian awareness
        Utilities
        System calls
      NFS filesystem
      CIFS filesystem
      Linux Ext2 filesystem
      Universal Disk Format (UDF) filesystem
      Apple Macintosh HFS and HFS Plus
      Windows NT filesystem
      Virtual inflator filesystem
    PPS
      Persistence
      PPS objects
      Publishing
      Subscribing
    Character I/O
      Driver/io-char communication
      Device control
      Input modes
        Raw input mode
        Edited input mode
      Device subsystem performance
      Console devices
      Serial devices
      Parallel devices
      Pseudo terminal devices (ptys)
    Networking Architecture
      Network manager (io-pkt*)
      Threading model
      Protocol module
      Driver module
    Native Networking (Qnet)
      QNX Neutrino distributed
      Name resolution and lookup
        File descriptor (connection ID)
        Behind a simple open()
        Global Name Service (GNS)
        Network naming
          Resolvers
      Redundant Qnet: Quality of Service (QoS) and multiple paths
        QoS policies
        Specifying QoS policies
        Symbolic links
      Examples
    TCP/IP Networking
      Structure of the TCP/IP manager
      Socket API
        Database routines
      Multiple stacks
      IP filtering and NAT
      NTP
      Dynamic host configuration
        AutoIP
      PPP over Ethernet
      /etc/autoconnect
    High Availability
      An OS for HA
        Inherent HA
        HA-specific modules
      Custom hardware support
      Client library
        Recovery example
      High Availability Manager
        HAM and the Guardian
        HAM hierarchy
          Entities
          Conditions
          Actions
        Publishing autonomously detected conditions
          State transitions
          Other conditions
        Subscribing to autonomously published conditions
        HAM as a "filesystem"
        Multistage recovery
        HAM API
    Adaptive Partitioning
      What are partitions?
        If adaptive partitions aren't "boxes," what are they?
      Why adaptive?
      Benefits of adaptive partitioning
        Engineering product performance
        Dealing with design complexity
        Providing security
        Debugging
      Adaptive partitioning thread scheduler
    Glossary
  User's Guide
    Getting to Know the OS
      Neutrino compared with UNIX
      Neutrino compared with Microsoft Windows
      Limitations
      How QNX Neutrino is unique
        Resource managers
    Logging In, Logging Out, and Shutting Down
      root or non-root?
      Logging in
      Once you've logged in
      Logging out
      Shutting down and rebooting
    Managing User Accounts
      What does a user account do?
        User accounts vs user IDs: login, lookup, and permissions
        What happens when you log in?
      Account database
        /etc/passwd
        /etc/group
        /etc/shadow
        /etc/.pwlock
      Managing your own account
        Changing your password
        Forgot your password?
      Managing other accounts
        Adding users
        Removing accounts
        Defining groups
          Creating a new group
          Modifying an existing group
      Troubleshooting
    Using the Command Line
      Processing a command
      Character-device drivers
        Input modes
        Terminal support
        Telnet
        The keyboard at a glance
        Physical and virtual consoles
      Shell
        Editing the command line
        Command and filename completion
        Reserved words
        Entering multiple commands
        Aliases
        Substitutions
        Redirecting input and output
        Pipes
        Quoting special characters
        History: recalling commands
        Shell scripts
      Utilities
        Understanding command syntax
        Displaying online usage messages
        Executing commands on another node or tty
        Priorities
      Basic commands
      Neutrino for MS-DOS users
        DOS commands and their Neutrino equivalents
           The diskcomp DOS command
        MS-DOS local command-interpreter variables
      Troubleshooting
    Working with Files
      Types of files
      Filenames and pathnames
        Absolute and relative pathnames
        Dot and dot-dot directories
          A note about cd
        No drive letters
        Pathnames that begin with a dot
        Extensions
        Pathname-space mapping
        Filename rules
      Where everything is stored
        /
        /bin
        /boot
        /dev
        /etc
        /fs
        /home
        /lib
        /proc
        /root
        /sbin
        /tmp
         /usr
        /var
      File ownership and permissions
        Setuid and setgid
        Sticky bit
        Default file permissions
        Access Control Lists (ACLs)
      Filename extensions
      Troubleshooting
    Using Editors
      Supported editors
      Specifying the default editor
    Controlling How Neutrino Starts
      What happens when you boot?
      Loading a Neutrino image
        Power-Safe filesystem
        QNX 4 filesystem
      diskboot
      .diskroot
      /etc/system/sysinit
      Device enumeration
        oem file or directory
        overrides file or directory
        Host-specific enumerators
      /etc/rc.d/rc.sysinit
      rc.local
      tinit
      Updating disk drivers
        Applying a driver update patch after you've installed QNX Neutrino
      Troubleshooting
    Configuring Your Environment
      What happens when you log in?
      Customizing your home
      Configuring your shell
        /etc/profile
        $HOME/.profile
        ksh's startup file
      Environment variables
        Setting PATH and LD_LIBRARY_PATH
      Configuration strings
      Setting the time zone
        Caveats
        Examples
        Programming with time zones
      Terminal types
      Troubleshooting
    Writing Shell Scripts
      Available shells
      Running a shell script
      The first line
        Arguments to a ksh script
        Arguments to a gawk script
        Arguments to a perl script
      Example of a Korn shell script
      Efficiency
      Caveat scriptor
    Working with Filesystems
      Setting up, starting, and stopping a block filesystem
      Mounting and unmounting filesystems
      Image filesystem
      /dev/shmem RAM "filesystem"
      QNX 4 filesystem
        Extents
        Filenames
        Links and inodes
        Removing links
        Directory links
        Symbolic links
        Filesystem robustness
      Power-Safe filesystem
        Booting
        Snapshots
      DOS filesystem
      CD-ROM filesystem
      Linux Ext2 filesystem
      Flash filesystems
      CIFS filesystem
      NFS filesystem
        Setting up NFS
        NFS server
        NFS client
      Universal Disk Format (UDF) filesystem
      Apple Macintosh HFS and HFS Plus
      Windows NT filesystem
      Inflator filesystem
      Troubleshooting
    Using Qnet for Transparent Distributed Processing
      When should you use Qnet?
      Conventions for naming nodes
      Software components for Qnet networking
      Starting Qnet
        Creating useqnet
        Starting the network manager, protocols, and drivers
      Checking out the neighborhood
        Populating /net
      Troubleshooting
        Is Qnet running?
        Are io-pkt* and the drivers running?
        Is the network card functional?
        How do I get diagnostic information?
        Is the hostname unique?
        Are the nodes in the same domain?
    TCP/IP Networking
      Overview of TCP/IP
      Software components for TCP/IP networking
      Running the Internet daemons
      Running multiple instances of the TCP/IP stack
      Dynamically assigned TCP/IP parameters
        Using PPPoE
          Establishing a PPPoE session
          Starting a point-to-point connection over PPPoE session
        Using DHCP
        Using AutoIP
      Troubleshooting
        Are io-pkt* and the drivers running?
        What is the name server information?
        How do I map hostnames to IP addresses?
        How do I get the network status?
        How do I make sure I'm connected to other hosts?
        How do I display information about an interface controller?
    Connecting Hardware
      PCI/AGP devices
      CD-ROMs and DVDs
      Floppy disks
      Hard disks
        EIDE
          Troubleshooting for devb-eide
        SCSI devices
        SCSI RAID
        LS-120
        ORB
        Zip and Jaz disks
          Magnetic optical drives
      RAM disks
      Audio cards
        ISA cards
        PCI Cards
      PCCARD and PCMCIA cards
      USB devices
        Printers
        Touchscreens
        Ethernet adapters
        Mass-storage devices
          Troubleshooting
      Character devices
        General serial adapters
        Multiport serial adapters
        Parallel ports
        Terminals
        I/O attributes
      Network adapters
        Identify your NIC
        Start the driver
        Make sure the driver is communicating properly with the hardware
          Physical Node ID
          Current Physical Node ID
          Current Operation Rate
          Active Interface Type
          Active PHY Address
          Power Management State
          Maximum Transmittable data Unit (MTU)
          Maximum Receivable data Unit (MRU)
          Receive Checksumming Enabled, Transmit Checksumming Enabled
          Hardware Interrupt
          DMA Channel
          I/O Aperture
          Memory Aperture
          ROM Aperture
          Promiscuous Mode
          Multicast Support
          Packets Transmitted OK
          Bytes Transmitted OK
          Total Packets Transmitted Bad
           Broadcast Packets Transmitted OK
          Multicast Packets Transmitted OK
          Memory Allocation Failures on Transmit
          Packets Received OK
           Bytes Received OK
          Single Collisions on Transmit
          Multiple Collisions on Transmit
          Deferred Transmits
          Late Collision on Transmit errors
          Transmits aborted (excessive collisions)
          Transmits aborted (excessive deferrals)
          Transmit Underruns
          No Carrier on Transmit
          Jabber detected
          Receive Alignment errors
          Received packets with CRC errors
          Packets Dropped on receive
          Ethernet Headers out of range
          Oversized Packets received
          Frames with Dribble Bits
          Total Frames experiencing Collision(s)
      Modems
        Internal modems
          ISA non-PnP
          ISA PnP
        PCI-based modems
        External modems
        Testing modems
        Troubleshooting modems
    Using CVS
      CVS basics
        Revisions
        Basic operations
        Repositories
        Editors and CVS
        Creating a repository
        Getting files in and out of the repository
        Putting changes back into the repository
        Importing an existing source tree
        Getting information on files
        Changing files
        More information on files: what changed and why
      CVS and directory trees
      Concurrent development: branching and merging
        Branching
        Merging
      Removing and restoring files
      Setting up a CVS server
    Backing Up and Recovering Data
      Backup strategies
        Choosing backup storage media and location
        Choosing a backup format
        Controlling your backup
      Archiving your data
        Creating an archive
        Extracting from an archive
        Compressing an archive
        Decompressing the archive
      Storage choices
      Remote backups
      QNX 4 disk structure
        Partition components
          Loader block
          Root block
          Bitmap blocks
          Root directory
        Directories
        Links
        Extent blocks
        Files
      File-maintenance utilities
        fdisk
        dinit
        chkfsys
        dcheck
        zap
          Recovering a zapped file
        spatch
      Recovering disks and files
        Using chkfsys
          When to run chkfsys
          Using chkfsys on a live system
        Recovering from a bad block in the middle of a file
      What to do if your system will no longer boot
        If the mount fails…
        If the disk is unrecoverable
        If the filesystem is intact
    Securing Your System
      General OS security
        Remote and local attacks
          Remote exploits
          Local exploits
        Effects of attacks
        Viruses
        Neutrino security in general
      Neutrino-specific security issues
        Message passing
        pdebug
        qconn
        Qnet
        IPSec
      Setting up a firewall
    Fine-Tuning Your System
      Getting the system's status
      Improving performance
      Faster boot times
      Filesystems and block I/O (devb-*) drivers
        Performance and robustness
        Metadata updates
          Ordering the updates to metadata
        Throughput
        Configuration
          Block I/O commit level
          Record size
          Double buffering
          File descriptor vs standard I/O
          Pregrowing a file
        Fine-tuning USB storage devices
      How small can you get?
    Understanding System Limits
      Configurable limits
      Filesystem limits
        Querying filesystem limits
        QNX 4 filesystem
        Power-Safe (fs-qnx6.so) filesystem
        Ext2 filesystem
        DOS FAT12/16/32 filesystem
        CD-ROM (ISO9660) filesystem
        NFS2 and NFS3 filesystem
        CIFS filesystem
        Embedded (flash) filesystem
        Embedded Transaction filesystem (ETFS)
        UDF filesystem
        Apple Macintosh HFS and HFS Plus
        Windows NT filesystem
      Other system limits
        File descriptors
        Synchronization primitives
        TCP/IP limits
        Shared memory
        Message queues
        Platform-specific limits
    Technical Support
    Examples
      Buildfile for an NFS-mounting target
      qnxbasedma.build
      Buildfile that doesn't use diskboot
      .profile
       .kshrc
      Configuration files for spooler
        Using lpr
        Using NCFTP
        Using SAMBA
      PPP with CHAP authentication between two Neutrino boxes
    Glossary
  Starting to Program with QNX Neutrino
    Foreword to the First Edition by Peter van der Veen
    Preface to the First Edition by Rob Krten
      A little history
      Who this book is for
      What's in this book?
      About Rob Krten
      Acknowledgments
    Processes and Threads
      Process and thread fundamentals
        A process as a house
        The occupants as threads
          Single threaded
          Multi threaded
        Back to processes and threads
        Mutual exclusion
        Priorities
        Semaphores
          A semaphore with a count of 1
          A semaphore with a count greater than 1
        A semaphore as a mutex
      The kernel's role
        Single CPU
        Multiple CPU (SMP)
        The kernel as arbiter
          Prioritization
          Scheduling policies
          FIFO
          Round Robin
          The rules
        Kernel states
          Kernel states, the complete list
      Threads and processes
        Why processes?
        Starting a process
          Starting a process from the command line
          Starting a process from within a program
            Starting a process with the system() call
            Starting a process with the exec() and spawn() calls
              "l" suffix
              "e" suffix
              "p" suffix
              Plain spawn()
            Starting a process with the fork() call
            Starting a process with the vfork() call
            So what should you use?
        Starting a thread
          The thread attributes structure
            Thread attribute administration
            The "flags" thread attribute
            The "stack" thread attributes
            The "scheduling" thread attributes
          A few examples
          Where a thread is a good idea
          Threads in mathematical operations
            Coding for SMP or single processor
            Synchronizing to the termination of a thread
            Joining
            Using a barrier
            Multiple threads on a single CPU
            Things to watch out for when using SMP
          Threads in independent situations
            Multiple processes
            Multiple processes with shared memory
            Multiple threads
            Comparisons
      More on synchronization
        Readers/writer locks
        Sleepon locks
        Condition variables
          Signal versus broadcast
          Sleepons versus condvars
        Additional Neutrino services
        Pools of threads
          Controlling the number of threads
          The thread pool functions
      Scheduling and the real world
        Rescheduling: hardware interrupts
        Rescheduling: kernel calls
        Rescheduling: exceptions
        Summary
    Message Passing
      Messaging fundamentals
        A small microkernel and message passing
      Message passing and client/server
      Network-distributed message passing
      What it means for you
        The philosophy of Neutrino
      Multiple threads
        Server/subserver
        Some examples
          Send-driven (client/server)
          Reply-driven (server/subserver)
          An important subtlety
          Multi-threaded server
      Using message passing
        Architecture & structure
        The client
          Establishing a connection
          Sending messages
        The server
          Creating the channel
          Message handling
          Server framework
        The send-hierarchy
        Receive IDs, channels, and other parameters
          More about channels
          Who sent the message?
          The receive ID (a.k.a. the client cookie)
          Replying to the client
          Not replying to the client
          Replying with no data, or an errno
          Finding the server's ND/PID/CHID
          What about priorities?
          Reading and writing data
        Multipart messages
          What about the other versions?
          Implementation
      Pulses
        Receiving a pulse message
          What's in a pulse?
          The MsgReceivePulse() function
        The MsgDeliverEvent() function
        Channel flags
          _NTO_CHF_UNBLOCK
            Synchronization problem
            Using the _NTO_MI_UNBLOCK_REQ
      Message passing over a network
        Networked message passing differences
          Longer delays
          Impact on ConnectAttach()
          Impact on MsgDeliverEvent()
          Impact on MsgReply(), MsgRead(), and MsgWrite()
          Impact on MsgReceive()
        Some notes on NDs
      Priority inheritance
        So what's the trick?
        Summary
    Clocks, Timers, and Getting a Kick Every So Often
      Clocks and timers
        Operating periodically
        Clock interrupt sources
        Base timing resolution
        Timing jitter
        Types of timers
        Notification schemes
          How to fill in the struct sigevent
            Pulse notification
            Signal notification
            Thread notification
            General tricks for notification
          Pulse notification
          Signal notification
      Using timers
        Creating a timer
        Signal, pulse, or thread?
        What kind of timer?
        A server with periodic pulses
          Server-maintained timeouts
            Declarations
            main()
            setupPulseAndTimer()
            gotAPulse()
            gotAMessage()
          Notes
          Periodic server maintenance cycles
        Timers delivering signals
        Timers creating threads
        Getting and setting the realtime clock and more
          Getting and setting
          Adjusting the timebase
          An accurate timestamp
      Advanced topics
        Other clock sources
           CLOCK_MONOTONIC
          So what does CLOCK_SOFTTIME do?
          Using different clock sources
        Kernel timeouts
          Kernel timeouts with pthread_join()
          Kernel timeouts with message passing
        Summary
    Interrupts
      Neutrino and interrupts
        Interrupt service routine
          Clearing the interrupt source
          Telling a thread to do something
        Level-sensitivity versus edge-sensitivity
      Writing interrupt handlers
        Attaching an interrupt handler
          Attaching with InterruptAttachEvent()
          Attaching with InterruptAttach()
        Now that you've attached an interrupt
        Detaching an interrupt handler
        The flags parameter
        The interrupt service routine
          Using InterruptAttach()
          Using InterruptAttachEvent()
          InterruptAttach() versus InterruptAttachEvent()
          The tradeoffs
        ISR functions
      Summary
    Resource Managers
      What is a resource manager?
        Examples of resource managers
        Characteristics of resource managers
      The client's view
        Finding the server
        Finding the process manager
        Handling directories
        Union'd filesystems
        Client summary
      The resource manager's view
        Registering a pathname
        Handling messages
          Connect messages
          I/O messages
          Three groups, really
      The resource manager library
        The library really does what we just talked about
        Behind the scenes at the library
          The base layer
          The POSIX layer
      Writing a resource manager
        Data structures
          resmgr_attr_t control structure
            The other_func message handler
            The data structure sizing parameters
            The flags parameter
          resmgr_connect_funcs_t connect table
          resmgr_io_funcs_t I/O table
          The resmgr_context_t internal context block
        Resource manager structure
          The resmgr_attach() function and its parameters
          Putting in your own functions
          The general flow of a resource manager
          Messages that should be connect messages but aren't
          Combine messages
        POSIX-layer data structures
          The iofunc_ocb_t OCB structure
            The strange case of the offset member
          The iofunc_attr_t attributes structure
          The iofunc_mount_t mount structure
            Of device numbers, inodes, and our friend rdev
      Handler routines
        General notes
          Locking, unlocking, and combine message handling
        Connect functions notes
          Internal use part
          End-user parameter part
      Alphabetical listing of connect and I/O functions
        io_chmod()
        io_chown()
        io_close_dup()
        io_close_ocb()
        io_devctl()
        io_dup()
        io_fdinfo()
        io_link()
        io_lock()
        io_lock_ocb()
        io_lseek()
        io_mknod()
        io_mmap()
        io_mount()
        io_msg()
        io_notify()
        io_open()
        io_openfd()
        io_pathconf()
         io_power()
        io_read()
        io_readlink()
        io_rename()
         io_shutdown()
        io_space()
        io_stat()
        io_sync()
        io_unblock() [CONNECT]
        io_unblock() [I/O]
        io_unlink()
        io_unlock_ocb()
        io_utime()
        io_write()
      Examples
        The basic skeleton of a resource manager
        A simple io_read() example
          The code
          Effective use of other messaging functions
        A simple io_write() example
        A simple io_devctl() example
        An io_devctl() example that deals with data
      Advanced topics
        Extending the OCB
          OCB monitor
          More efficient allocation
        Extending the attributes structure
        Blocking within the resource manager
        Returning directory entries
          Generally speaking...
          The struct dirent structure and friends
            Offsets
            Contents
          Example
            main() and declarations
            my_open()
             my_read()
             my_read_dir()
            my_read_file()
             dirent_size()
             dirent_fill()
      Summary
    QNX 4 to Neutrino
      Similarities
      Improvements
        Embeddability
        Thread support
        Message passing
          Pulses and events
        Device driver model
        MIPS, PPC, SH4, and ARM support
        SMP support
      Porting philosophy
        Message passing considerations
          Client/server using the global namespace
            Translating messages to standard file-descriptor-based POSIX calls
            Translating messages to devctl() or _IO_MSG
          Client/Server using an I/O manager
          Proxies
            Proxies for their IDs
            Proxies for their contents
        Interrupt service routines
      Summary
    Calling 911
      Read the manuals
      Contact technical support
        Describe the problem
        Precise information
        Versions
        If you're using a beta…
        Reproduce the problem
        Narrow it down
      Training
    Sample Programs
       atoz.c
      time1.c
      tp1.c
      tt1.c
    Glossary
  Programmer's Guide
    Compiling and Debugging
      Choosing the version of the OS
      Making your code more portable
        Conforming to standards
        Including QNX- or Neutrino-specific code
      Header files in /usr/include
      Self-hosted or cross-development
        A simple example
        Self-hosted
        Cross-development with network filesystem
        Cross-development with debugger
          Download/upload facility
        Cross-development, deeply embedded
          Step 1: Build a Neutrino system image.
          Step 2: Transfer the system image to the target.
          Step 3: Boot the target.
      Using libraries
        Static and dynamic libraries
          Static libraries
          Dynamic libraries
           dlopen()
        Platform-specific library locations
      Linking your modules
        Creating shared objects
          Specifying an internal name
      Optimizing the runtime linker
        Lazy binding
         RTLD_LAZY
        Lazy loading
        Diagnostics and debugging
        Environment variables
      Debugging
        Debugging in a self-hosted environment
        Debugging in a cross-development environment
        The GNU debugger (gdb)
        The process-level debug agent
          Serial connection
          TCP/IP connection
      A simple debug session
        Configure the target
        Compile for debugging
        Start the debug session
        Get help
        Sample boot image
      Debugging using libmudflap
    Programming Overview
      Process model
        An application as a set of processes
      Some definitions
      Priorities and scheduling
        Priority range
        BLOCKED and READY states
        The ready queue
        Suspending a running thread
        When the thread is blocked
        When the thread is preempted
        When the thread yields
      Scheduling policies
        FIFO scheduling
        Round-robin scheduling
        Sporadic scheduling
      Why threads?
      Summary
    Processes
      Starting processes — two methods
      Process creation
        Concurrency
        Inheriting file descriptors
      Process termination
        Normal process termination
        Abnormal process termination
      Detecting process termination
        Using the High Availability Framework
        Detecting termination from a starter process
        Sample parent process using wait()
        Sample parent process using sigwaitinfo()
        Detecting dumped processes
        Detecting the termination of daemons
        Detecting client termination
      Process privileges
        Privilege separation
          Thread I/O privileges
        Procmgr abilities
          Ability domains
          Ability ranges
          Locking an ability
          Dropping an ability
          Ability inheritance
            Basic inheritance
            Locking and inheritance
        An example of privilege separation
      Controlling processes via the /proc filesystem
        Establishing a connection
        Reading and writing the process's address space
          Determining the offset
          Determining accessibility
        Manipulating a process or thread
          Selecting a thread for further operations
          Starting/stopping processes and threads
          Setting breakpoints
          Examining process and thread attributes
        Thread information
         DCMD_PROC_BREAK
         DCMD_PROC_CHANNELS
         DCMD_PROC_CLEAR_FLAG
         DCMD_PROC_CURTHREAD
         DCMD_PROC_EVENT
         DCMD_PROC_FREEZETHREAD
         DCMD_PROC_GETALTREG
         DCMD_PROC_GETFPREG
         DCMD_PROC_GETGREG
         DCMD_PROC_GETREGSET
         DCMD_PROC_GET_BREAKLIST
         DCMD_PROC_INFO
         DCMD_PROC_IRQS
         DCMD_PROC_MAPDEBUG
         DCMD_PROC_MAPDEBUG_BASE
         DCMD_PROC_MAPINFO
         DCMD_PROC_PAGEDATA
         DCMD_PROC_RUN
         DCMD_PROC_SETALTREG
         DCMD_PROC_SETFPREG
         DCMD_PROC_SETGREG
         DCMD_PROC_SETREGSET
         DCMD_PROC_SET_FLAG
         DCMD_PROC_SIGNAL
        DCMD_PROC_STATUS
        DCMD_PROC_STOP
        DCMD_PROC_SYSINFO
         DCMD_PROC_THAWTHREAD
         DCMD_PROC_THREADCTL
        DCMD_PROC_TIDSTATUS
         DCMD_PROC_TIMERS
         DCMD_PROC_WAITSTOP
    Working with Access Control Lists (ACLs)
      ACL formats
      ACL storage management
      Manipulating ACL entries in working storage
      Manipulating permissions in an ACL entry
      Manipulating the tag type and qualifier in an ACL entry
      Manipulating ACLs on a file or directory
      Example
    Tick, Tock: Understanding the Neutrino Microkernel's Concept of Time
      Oversleeping: errors in delays
        Delaying for a second: inaccurate code
        Timer quantization error
        The tick and the hardware timer
        Delaying for a second: better code
      Another hiccup with hardware timers
        Where's the catch?
      What time is it?
      Clocks, timers, and power management
    Transparent Distributed Processing Using Qnet
      What is Qnet?
      Benefits of Qnet
        What works best
        What type of application is well-suited for Qnet?
      How does it work?
      Locating services using GNS
        Different modes of GNS
        Registering a service
        GNS path namespace
        Deploying the gns processes
      Quality of Service (QoS) and multiple paths
        QoS policies
         loadbalance
         preferred
         exclusive
        Specifying QoS policies
        Symbolic links
      Designing a system using Qnet
        The product: a telecom box
        Developing your distributed system
        Configuring the data cards
        Configuring the controller card
        Enhancing reliability via multiple transport buses
        Redundancy and scalability using multiple controller cards
          Redundancy
          Scalability
      Autodiscovery vs static
      When should you use Qnet, TCP/IP, or NFS?
      Drivers for Qnet
    Writing an Interrupt Handler
      What's an interrupt?
      Interrupts on multicore systems
      Attaching and detaching interrupts
      Interrupt Service Routine (ISR)
        Determining the source of the interrupt
          Edge-triggered IRQ
          Level-sensitive IRQ
        Servicing the hardware
          Safe functions
        Updating common data structures
        Signalling the application code
          Using InterruptAttach()
          Using InterruptAttachEvent()
      Running out of interrupt events
      Problems with shared interrupts
      Advanced topics
        Interrupt environment
        Ordering of shared interrupts
        Interrupt latency
        Atomic operations
        Interrupts and power management
    Heap Analysis: Making Memory Errors a Thing of the Past
      Dynamic memory management
        Arena allocations
        Small block configuration
      Heap corruption
        Contiguous memory blocks
        Multithreaded programs
        Allocation strategy
        Common sources
          Overrun and underrun errors
          Releasing memory
          Using uninitialized or stale pointers
      Detecting and reporting errors
        Using the malloc debug library
          What's checked?
          Allocating memory
          Reallocating memory
          Releasing memory
        Controlling the level of checking
          Description of optional checks
          Forcing verification
          Specifying an error handler
        Other environment variables
        Caveats
      Manual checking (bounds checking)
        Getting pointer information
      Memory leaks
        Tracing
        Causing a trace and giving results
        Analyzing dumps
      Compiler support
        C++ issues
          Clean C
          C++ example
    Freedom from Hardware and Platform Dependencies
      Common problems
        I/O space vs memory-mapped
        Big-endian vs little-endian
          Typecast mangling
          Hardware access
          Network transparency
        Alignment and structure packing
        Atomic operations
      Solutions
        Determining endianness
        Swapping data if required
           ENDIAN_LE16()
           ENDIAN_LE32()
           ENDIAN_LE64()
           ENDIAN_BE16()
           ENDIAN_BE32()
           ENDIAN_BE64()
        Accessing unaligned data
           UNALIGNED_RET16()
           UNALIGNED_RET32()
           UNALIGNED_RET64()
           UNALIGNED_PUT16()
           UNALIGNED_PUT32()
           UNALIGNED_PUT64()
        Examples
          Mixed-endian accesses
          Accessing hardware with dual-ported memory
        Accessing I/O ports
    Conventions for Recursive Makefiles and Directories
      Structure of a multiplatform source tree
        Makefile structure
        The recurse.mk file
        Macros
          The EARLY_DIRS and LATE_DIRS macros
          The LIST macro
          The MAKEFILE macro
          The CHECKFORCE macro
        Directory levels
          Project level
          Section level (optional)
          OS level
          CPU level
          Variant level
      Specifying options
        The common.mk file
        The variant-level makefile
        Recognized variant names
      Using the standard macros and include files
        The qconfig.mk include file
          Preset macros
          Postset macros
           qconfig.mk macros
        The qrules.mk include file
        The qtargets.mk include file
      Advanced topics
        Collapsing unnecessary directory levels
        Performing partial builds
        Performing parallel builds
        More uses for LIST
        GNU configure
           hook_preconfigure()
           hook_postconfigure()
           hook_premake()
           hook_postmake()
           hook_pinfo()
      Examples of creating Makefiles
        A single application
        A library and an application
    POSIX Conformance
      Conformance statement
        System interfaces: general attributes
          Supported features
          Optional features
          Float, standard I/O, and limit values
          Error conditions
          Mathematical interfaces
        File handling
        Internationalized system interfaces
        Threads: Cancellation points
        Realtime: Prioritized I/O
        Realtime threads
        C-language compilation environment
      POSIX Conformance Document (PCD)
        Base Definitions
          3. Definitions
          4. General Concepts
          6. Character Set
          7. Locale
          8. Environment Variables
          13. Headers
        System Interfaces
          2.3. Error Numbers
          2.4. Signal Concepts
          2.5. Standard I/O Streams
          2.8. Realtime
          2.11. Tracing
          3. System Interfaces
      Non-POSIX functions with POSIX-sounding names
    Using GDB
      Neutrino-specific extensions
      A quick overview of starting the debugger
      GDB commands
        Command syntax
        Command completion
        Getting help
      Running programs under GDB
        Compiling for debugging
        Setting the target
        Starting your program
        Your program's arguments
        Your program's environment
        Your program's input and output
        Debugging an already-running process
        Killing the process being debugged
        Debugging programs with multiple threads
        Debugging programs with multiple processes
      Stopping and continuing
        Breakpoints, watchpoints, and exceptions
          Setting breakpoints
          Setting watchpoints
          Breakpoints and exceptions
          Deleting breakpoints
          Disabling breakpoints
          Break conditions
          Breakpoint command lists
          Breakpoint menus
        Continuing and stepping
        Signals
        Stopping and starting multithreaded programs
      Examining the stack
        Stack frames
        Backtraces
        Selecting a frame
        Information about a frame
        MIPS machines and the function stack
      Examining source files
        Printing source lines
        Searching source files
        Specifying source directories
        Source and machine code
        Shared libraries
      Examining data
        Expressions
        Program variables
        Artificial arrays
        Output formats
        Examining memory
        Automatic display
        Print settings
        Value history
        Convenience variables
        Registers
        Floating point hardware
      Examining the symbol table
      Altering execution
        Assignment to variables
        Continuing at a different address
        Giving your program a signal
        Returning from a function
        Calling program functions
        Patching programs
    Advanced Qnet Topics
      Low-level discussion of Qnet principles
      Details of Qnet data communication
      Node descriptors
         netmgr_strtond()
         netmgr_ndtostr()
         netmgr_remote_nd()
      Booting over the network
        Overview
        Creating directory and setting up configuration files
        Building an OS image
        Booting the client
        Troubleshooting
      What are the limitations...
    Glossary
  The QNX Neutrino Cookbook
    About This Guide
    Foreword to the First Edition by Brian Stecher
    Preface to the First Edition by Rob Krten
      What's in this book?
      Philosophy
        The Basics
        High Availability
        Design Philosophy
      Recipes
        Web-Counter Resource Manager
        ADIOS — Analog / Digital I/O Server
        RAM-disk Filesystem Manager
        The tar Filesystem Manager
      References
      What's not in this book?
      Other references
      Thanks!
        Century Aluminum
    The Basics
      In the beginning...
        The main() function
        Command-line processing — optproc()
        Common globals
        Usage messages
      Threaded resource managers
    High Availability
      Terminology
      Lies, damn lies, and statistics
      Increasing availability
        Increasing the MTBF
        Decreasing the MTTR
        Parallel versus serial
          Series calculations
          Parallel calculations
          Aggregate calculations
      Failure modes and recovery models
        Cascade failures
          System startup and HA
        Overlords, or Big Brother is watching you
        Cold, warm, and hot standby
          Achieving cold standby
          Achieving warm standby
          Achieving hot standby
          Problems
        Detecting failure
          Obituaries
        Graceful fail-over
        Using shadows
        In-service upgrades
        Policies
      Implementing HA
      RK drones on about his home systems again
      Other HA systems
    Design Philosophy
      Decoupling design in a message-passing environment
        Door-lock actuators
        At this point...
      Managing message flow
        Swipe-card readers
          Control program sends to the swipe-card reader
          Swipe-card reader sends to control program
          Using a keypad challenge — control program sends to the swipe-card reader
          Using a keypad challenge — swipe-card reader sends to control program
      Scalability
        Distributed processing
      Summary
    Web Counter Resource Manager
      Requirements
        Using the web counter resource manager
      Design
        Generating the graphical image
      The code — phase 1
        Operation
          Generating the graphical image
        Step-by-step code walkthrough
          Include files and data structures
          Source files
          The code
            The execute_resmgr() function
            The io_open() function
            The io_read() function
            The io_close_ocb() function
            The render_7segment() function
            The encode_image() function
      The code — phase 2
        Persistent count file
        Font selection
        Plain text rendering
        Writing to the resource
          Adding the io_write() handler
          The io_write() function
          The io_close_ocb() function
      The code — phase 3
        Filename processing tricks
        Changes
          Globals
          The new-and-improved execute_resmgr()
          Option processing
          Handling io_read()
            Operating on a file
            Operating on a directory
            The persistent counter file
      Enhancements
      References
    ADIOS — Analog/Digital I/O Server
      Requirements
      Design
        Driver Design
          DIO-144
          ISO-813
          PCL-711
        Shared Memory Design
        Tags database design
      The Driver Code
        Theory of operation
        Code walkthrough
          main() and friends
          The resource manager modules
          The card interface modules
            Card configuration
            Analog input
            Analog output
            Digital input
            Digital output
      The ADIOS server code
        The usual stuff
        The shared memory region
          Calculating the sizes of data structures
          Open and check the shared memory
          Truncate and map shared memory
        Acquiring data
      The showsamp and tag utilities
        The showsamp utility
        The tag utility
      References
    RAM-disk Filesystem
      Requirements
        Connect functions
        I/O functions
        Missing functions
      Design
      The code
        The extended attributes structure
        The io_read() function
        The io_write() function
        The c_open() function
          Finding the target
            The pathwalk() function
            The connect_msg_to_attr() function
          Fun with symlinks
          Analyze the mode flag
          Bind the OCB and attributes structure
          Finally, the c_open() code walkthrough
          Walkthrough
          The redirect_symlink() function
        The c_readlink() function
        The c_link() function
        The c_rename() function
        The c_mknod() function
        The c_unlink() function
        The io_close_ocb() function
        The io_devctl() function
          Mounting options
          Filesystem statistics
        The c_mount() function
      References
    TAR Filesystem
      Requirements
      Design
        Creating a .tar file
      The code
        The structures
        The functions
          The c_mount() function
          The analyze_tar_file() function
          The add_tar_entry() function
          The io_read() function and related utilities
        The mount helper program
      Variations on a theme
        Virtual filesystem for USENET news (VFNews)
          How does USENET news work?
          So why is this a problem?
          How can this possibly be made better?
          Operation
        Strange and unusual filesystems
          Indexed filesystem
          Executing commands
        Secure filesystem
        Line-based filesystem
      References
    Filesystems
      What is a filesystem?
        Hierarchical arrangement
        Data elements
        The mount point and the root
      What does a filesystem do?
      Filesystems and Neutrino
      How does a filesystem work?
        Mount point management
          Unnamed mount registration
          Special device registration
          Mount point registration
        Pathname resolution
        Directory management
        Data element content management
      References
    The /proc Filesystem
      The /proc/boot directory
      The /proc/mount directory
      The /proc by-process-ID directories
        Operations on the as entry
          Discontiguous address space
          Someone else's virtual address space
        Finding a particular process
          Iterating through the list of processes
        Finding out information about the process
        DCMD_PROC_INFO
          Process information
          Memory information
          Signal information
          CPU usage information
          Miscellaneous
        DCMD_PROC_MAPINFO and DCMD_PROC_PAGEDATA
        DCMD_PROC_TIMERS
        DCMD_PROC_IRQS
        Finding out information about the threads
          The DCMD_PROC_TIDSTATUS command
          Blocked thread information
          The DCMD_PROC_GETGREG and DCMD_PROC_GETFPREG commands
      References
    Sample Programs
      Web-Counter resource manager
      ADIOS — Analog / Digital I/O Server
      RAM-disk and tar filesystem managers
      The /proc filesystem
    Glossary
  Writing a Resource Manager
    Overview
      What is a resource manager?
      Why write a resource manager?
      The types of resource managers
        Device resource managers
        Filesystem resource managers
      Communication via native IPC
      Examples of resource managers
        Transparent Distributed Processing (Qnet) statistics
        Robot arm
        GPS devices
        Database example
        I2C (Inter-Integrated Circuit) driver
      When not to use a resource manager
    The Bones of a Resource Manager
      Under the covers
        Under the client's covers
        Under the resource manager's covers
      Layers in a resource manager
        The iofunc layer
        The resmgr layer
        The dispatch layer
        The thread pool layer
      Simple examples of device resource managers
        Single-threaded device resource manager
          Initialize the dispatch interface
          Initialize the resource manager attributes
          Initialize functions used to handle messages
          Initialize the attribute structure used by the device
          Put a name into the namespace
          Allocate the context structure
          Start the resource manager message loop
        Multithreaded device resource manager
          Define THREAD_POOL_PARAM_T
          Initialize thread pool attributes
          Allocate a thread pool handle
          Start the threads
        Using MsgSend() and MsgReply()
          A bit of history
          The server
          The client
    Fleshing Out the Skeleton
      Message types
        Connect messages
        I/O messages
        Default message handling
        open(), dup(), and close()
      Setting resource manager attributes
      Ways of adding functionality to the resource manager
        Using the default functions
        Using the helper functions
        Writing the entire function yourself
    POSIX-Layer Data Structures
      The iofunc_ocb_t (Open Control Block) structure
      The iofunc_attr_t (attribute) structure
      The optional iofunc_mount_t (mount) structure
    Handling Read and Write Messages
      Handling the _IO_READ message
        Sample code for handling _IO_READ messages
      Handling the _IO_WRITE message
        Sample code for handling _IO_WRITE messages
      Methods of returning and replying
        Returning with an error
        Returning using an IOV array that points to your data
        Returning with a single buffer containing data
        Returning success but with no data
        Getting the resource manager library to do the reply
        Performing the reply in the server
        Leaving the client blocked, replying later
        Returning and telling the library to do the default action
      Handling other read/write details
        Handling the xtype member
          If you aren't expecting extended types (xtype)
        Handling pread*() and pwrite*()
          Sample code for handling _IO_READ messages in pread*()
          Sample code for handling _IO_WRITE messages in pwrite*()
        Handling readcond()
      Updating the time for reads and writes
    Combine Messages
      Where combine messages are used
        Atomic operations
        Bandwidth considerations
      The library's combine-message handling
        Component responses
        Component data access
        Locking and unlocking the attribute structure
        Connect message types
        _IO_CONNECT_COMBINE_CLOSE
        _IO_CONNECT_COMBINE
    Extending the POSIX-Layer Data Structures
      Overview
      Extending the OCB and attribute structures
      Extending the mount structure
    Handling Other Messages
      Custom messages
      Handling devctl() messages
        Sample code for handling _IO_DEVCTL messages
      Handling ionotify() and select()
        Sample code for handling _IO_NOTIFY messages
      Handling out-of-band (_IO_MSG) messages
      Handling private messages and pulses
      Handling open(), dup(), and close() messages
      Handling mount()
        mount() function call
        Mount in the resource manager
        mount utility
      Handling stat()
      Handling lseek()
    Signals, Timeouts, and Interrupts
      Handling client unblocking due to signals or timeouts
      Handling interrupts
        Sample code for handling interrupts
    Multithreaded Resource Managers
      Multithreaded resource manager example
      Thread pool attributes
      Thread pool functions
    Filesystem Resource Managers
      Considerations for filesystem resource managers
      Taking over more than one device
      Handling directories
        Matching at or below a mountpoint
        The _IO_OPEN message for filesystems
        Returning directory entries from _IO_READ
          Returning information associated with a directory structure
    Glossary
  Multicore Processing User's Guide
    What is Multicore Processing?
    Developing Multicore Systems
      The impact of multicore
        Thread affinity
        Multicore and synchronization primitives
        Multicore and FIFO scheduling
        Multicore and interrupts
        Multicore and atomic operations
      Designing with multiprocessing in mind
        Use the multicore primitives
        Assume that threads really do run concurrently
        Break the problem down
    Glossary
  System Analysis Toolkit (SAT) User's Guide
    Introduction
      What can the SAT do for you?
      Components of the SAT
        Instrumented kernel
        Kernel buffer management
        Data-capture program (tracelogger)
        Data interpretation (e.g. traceprinter)
        Integrated Development Environment
    Events and the Kernel
      Generating events: a typical scenario
        Multithreaded example
        Thread context-switch time
        Restarting threads
      Simple and combine events
      Fast and wide modes
      Classes and events
        Communication class: _NTO_TRACE_COMM
        Control class: _NTO_TRACE_CONTROL
        Interrupt classes: _NTO_TRACE_INTENTER, _NTO_TRACE_INTEXIT,_NTO_TRACE_INT_HANDLER_ENTER, and _NTO_TRACE_INT_HANDLER_EXIT
        Kernel-call classes: _NTO_TRACE_KERCALLENTER, _NTO_TRACE_KERCALLEXIT, and _NTO_TRACE_KERCALLINT
        Process class: _NTO_TRACE_PROCESS
        System class: _NTO_TRACE_SYSTEM
        Thread class: _NTO_TRACE_THREAD
        User class: _NTO_TRACE_USER
        Virtual thread class: _NTO_TRACE_VTHREAD
    Kernel Buffer Management
      Linked list size
      Full buffers and the high-water mark
      Buffer overruns
    Capturing Trace Data
      Using tracelogger to control tracing
        Managing trace buffers
        tracelogger's modes of operation
        Choosing between wide and fast modes
        Filtering events
        Specifying where to send the output
      Using TraceEvent() to control tracing
        Managing trace buffers
        Modes of operation
        Filtering events
        Choosing between wide and fast modes
        Inserting trace events
    Filtering
      The static rules filter
      The dynamic rules filter
        Setting up a dynamic rules filter
        Event handler
        Removing event handlers
      The post-processing facility
    Interpreting Trace Data
      Using traceprinter and interpreting the output
      Building your own parser
        The traceparser library
        Simple and combine events
        The traceevent_t structure
        Event interlacing
        Timestamps
    Tutorials
      The instrex.h header file
      Gathering all events from all classes
      Gathering all events from one class
      Gathering five events from four classes
      Gathering kernel calls
      Event handling - simple
      Inserting a user simple event
    Current Trace Events and Data
      Interpreting the table
      Table of events
  Adaptive Partitioning User's Guide
    What is Adaptive Partitioning?
      What are partitions and what is adaptive partitioning?
      System and user requirements
      The thread scheduler
    Using the Thread Scheduler
      Keeping track of CPU time
      How is CPU time divided between partitions?
        Underload
        Free time
        Full Load
        Summary of scheduling behavior
      Partition inheritance
      Critical threads
        Bankruptcy
      Adaptive partitioning thread scheduler and other thread schedulers
      Using the thread scheduler and multicore together
    Setting Up and Using the Adaptive Partitioning Thread Scheduler
      Building an image
      Creating scheduler partitions
      Launching a process in a partition
      Viewing partition use
    Controlling Resources Using the Thread Scheduler
    Considerations for the Thread Scheduler
      Determining the number of scheduler partitions and their contents
      Choosing the percentage of CPU for each partition
        Setting budgets to zero
        Setting budgets for resource managers
      Choosing the window size
        Accuracy
        Delays compared to priority scheduling
      Practical limits
      Uncontrolled interactions between scheduler partitions
    Security for Scheduler Partitions
      Managing security for the thread scheduler
        Security and critical threads
    Testing and Debugging
      Instrumented kernel trace events
      Using the QNX IDE (trace events)
      Using other methods
      Emergency access to the system
    Sample Buildfile
    Frequently Asked Questions: Adaptive Partitioning Thread Scheduler
      Scheduling behavior
      Microbilling
      Averaging window
      Scheduling algorithm
      Overhead
      Critical threads and bankruptcy
      Inheritance
      Budgets
      Joining a partition
      QNX system considerations
    Glossary
  Audio Developer's Guide
    Audio Architecture
      QNX Sound Architecture
      Cards and devices
      Control device
      Mixer devices
      Pulse Code Modulation (PCM) devices
        Data formats
        PCM state machine
        Software PCM mixing
        PCM plugin converters
    Playing and Capturing Audio Data
      Handling PCM devices
        Opening your PCM device
        Configuring the PCM device
        Controlling voice conversion
        Preparing the PCM subchannel
        Closing the PCM subchannel
      Playing audio data
        Playback states
        Sending data to the PCM subchannel
        If the PCM subchannel stops during playback
        Stopping the playback
        Synchronizing with the PCM subchannel
      Capturing audio data
        Selecting what to capture
        Capture states
        Receiving data from the PCM subchannel
        If the PCM subchannel stops during capture
        Stopping the capture
        Synchronizing with the PCM subchannel
    Mixer Architecture
      Opening the mixer device
      Controlling a mixer group
      The best mixer group with respect to your PCM subchannel
      Finding all mixer groups
      Mixer event notification
      Closing the mixer device
    Optimizing Audio
    Audio Library
      snd_card_get_longname()
      snd_card_get_name()
      snd_card_name()
      snd_cards()
      snd_cards_list()
      snd_ctl_callbacks_t
      snd_ctl_close()
      snd_ctl_file_descriptor()
      snd_ctl_hw_info()
      snd_ctl_hw_info_t
      snd_ctl_mixer_switch_list()
      snd_ctl_mixer_switch_read()
      snd_ctl_mixer_switch_write()
      snd_ctl_open()
      snd_ctl_pcm_channel_info()
      snd_ctl_pcm_info()
      snd_ctl_read()
      snd_mixer_callbacks_t
      snd_mixer_close()
      snd_mixer_eid_t
      snd_mixer_element_read()
      snd_mixer_element_t
      snd_mixer_element_write()
      snd_mixer_elements()
      snd_mixer_elements_t
      snd_mixer_file_descriptor()
      snd_mixer_filter_t
      snd_mixer_get_bit()
      snd_mixer_get_filter()
      snd_mixer_gid_t
      snd_mixer_group_read()
      snd_mixer_group_t
      snd_mixer_group_write()
      snd_mixer_groups()
      snd_mixer_groups_t
      snd_mixer_info()
      snd_mixer_info_t
      snd_mixer_open()
      snd_mixer_open_name()
      snd_mixer_read()
      snd_mixer_routes()
      snd_mixer_routes_t
      snd_mixer_set_bit()
      snd_mixer_set_filter()
      snd_mixer_sort_eid_table()
      snd_mixer_sort_gid_table()
      snd_mixer_weight_entry_t
      snd_pcm_build_linear_format()
      snd_pcm_capture_flush()
      snd_pcm_capture_go()
      snd_pcm_capture_pause()
      snd_pcm_capture_prepare()
      snd_pcm_capture_resume()
      snd_pcm_channel_flush()
      snd_pcm_channel_go()
      snd_pcm_channel_info()
      snd_pcm_channel_info_t
      snd_pcm_channel_params()
      snd_pcm_channel_params_t
      snd_pcm_channel_pause()
      snd_pcm_channel_prepare()
      snd_pcm_channel_resume()
      snd_pcm_channel_setup()
      snd_pcm_channel_setup_t
      snd_pcm_channel_status()
      snd_pcm_channel_status_t
      snd_pcm_close()
      snd_pcm_file_descriptor()
      snd_pcm_find()
      snd_pcm_format_big_endian()
      snd_pcm_format_linear()
      snd_pcm_format_little_endian()
      snd_pcm_format_signed()
      snd_pcm_format_size()
      snd_pcm_format_t
      snd_pcm_format_unsigned()
      snd_pcm_format_width()
      snd_pcm_get_audioman_handle()
      snd_pcm_get_format_name()
      snd_pcm_info()
      snd_pcm_info_t
      snd_pcm_link()
      snd_pcm_nonblock_mode()
      snd_pcm_open()
      snd_pcm_open_name()
      snd_pcm_open_preferred()
      snd_pcm_playback_drain()
      snd_pcm_playback_flush()
      snd_pcm_playback_go()
      snd_pcm_playback_pause()
      snd_pcm_playback_prepare()
      snd_pcm_playback_resume()
      snd_pcm_plugin_flush()
      snd_pcm_plugin_get_voice_conversion()
      snd_pcm_plugin_info()
      snd_pcm_plugin_params()
      snd_pcm_plugin_playback_drain()
      snd_pcm_plugin_prepare()
      snd_pcm_plugin_read()
      snd_pcm_plugin_set_disable()
      snd_pcm_plugin_set_enable()
      snd_pcm_plugin_set_src_method()
      snd_pcm_plugin_set_src_mode()
      snd_pcm_plugin_set_voice_conversion()
      snd_pcm_plugin_setup()
      snd_pcm_plugin_src_max_frag()
      snd_pcm_plugin_status()
      snd_pcm_plugin_update_src()
      snd_pcm_plugin_write()
      snd_pcm_read()
      snd_pcm_set_audioman_handle()
      snd_pcm_unlink()
      snd_pcm_voice_conversion_t
      snd_pcm_write()
      snd_strerror()
      snd_switch_t
     wave.c example
     waverec.c example
     mixer_ctl.c example
    ALSA and libasound.so
    What's New in This Release?
      What's new in QNX Neutrino 6.5.0 Service Pack 1
      What's new in QNX Neutrino 6.5.0
      What's new in QNX Neutrino 6.4
      What's new in QNX Neutrino 6.3
      What's new in QNX Neutrino 6.2
      What's new in QNX Neutrino 6.1
    Glossary
  Building Embedded Systems
    About This Book
    Overview of Building Embedded Systems
      Introduction
        The role of the IPL
          Warm-start and cold-start IPL
        The role of the startup program
        Startup's responsibilities
          Copying and decompressing the image
          Configuring the hardware
          Determining system configuration
          Establishing callouts
          Starting the OS
          The startup library
        The role of Neutrino
      Hardware aspects
        Choice of processor
        Source of initialization and configuration
        Choice of filesystems
          No additional storage required
          Additional read-only storage required
          Additional read/write nonpersistent storage required
          Additional read/write persistent storage required
        I/O devices
          Character I/O devices
          Special/custom devices
      Getting started
        Hardware design
        Customizing the software
          Customizing the source
    Working with a BSP
      BSP Overview
      Using BSPs in the IDE
      Using BSPs on the command line
        Structure of a BSP
          prebuilt subdirectory
          install subdirectory
          src subdirectory
        Building source from the command line
        Supporting additional devices
      Transferring an OS image onto your board
        Transferring an OS image
        Working with a flash filesystem
          Raw partitions
          Flash filesystem partitions
          Flash filesystem source
          How do I create a partition?
      Testing Neutrino on your board
      Where do I go from here?
      Filename conventions
    Making an OS Image
      Images, images, images
      What is an OS image?
      The OS image as a filesystem
      Configuring an OS image
        A simple buildfile
          Inline files
        The bootstrap file
          Compressing the image
        The script file
          Bound multiprocessing attributes
          The script file on the target
        Plain ordinary lists of files
          Including files from different places
          Modifying the search path
          Specifying the pathname explicitly
          Creating the contents of the file in line
          Specifying file ownership and permissions
          Including a whole whack of files
        Generating the image
        Listing the contents of an image
      Building a flash filesystem image
        Using mkefs
          mkefs buildfile
          Block size
          Spare blocks
        Compressing files
          Abstraction layer
          Two sizes
        Compression rules
          The exception
      Embedding an image
        Combining image files using mkimage
          Combining image files using the IDE
        Converting images using mkrec
        Transferring an image to flash
      System configuration
        Establishing an output device
          A simple desktop example
        Running drivers/filesystems
          Disk drivers
          Flash filesystems
          Network drivers
          Network filesystems
        Running applications
      Debugging an embedded system
        pdebug software debugging agent
        Hardware debuggers and Neutrino
        Producing debug symbol information for IPL and startup
          Generating IPL debug symbols
          Generating startup debug symbols
    Writing an IPL Program
      Initial program loader (IPL)
        Responsibilities of the IPL
          Linearly mapped images
          Bank-switched images
          Processors & configurations
        Booting from a bank-switched device
        Booting from a linear device
        "Warm" vs "cold" start
          Warm-start IPL
          Cold-start IPL
        Loading the image
          If the source is a linearly mapped device
          If the source is a bank-switched device
          ROM devices
          Network boot
          Using a BOOTP server
          Serial port
          Traditional disk
          None of the above?
        Transferring control to the startup program
      Customizing IPLs
        Initialize hardware
        Loading the image into RAM
        Structure of the boot header
          signature
          version
          flags1 and flags2
          header_size
          machine
          startup_vaddr
          paddr_bias
          image_paddr
          ram_paddr
          ram_size
          startup_size
          stored_size
          imagefs_paddr
          imagefs_size
          preboot_size
          zero and zero0
          info
          struct startup_info_skip
          struct startup_info_mem and startup_info_mem_extended
          struct startup_info_disk
          struct startup_info_time
          struct startup_info_box
        Relationship of struct startup_header fields
          Linear ROM execute-in-place boot image
          Linear ROM compressed boot image
          ROM non-XIP image
          Disk/network image (x86 BIOS)
          Disk/network compressed image
        IPL structure
          IPL source directory structure
          IPL code structure
          An example
        Creating a new IPL
      The IPL library
        enable_cache
        image_download_8250()
        image_scan()
        image_scan_ext()
        image_setup()
        image_setup_ext()
        image_start()
        image_start_ext()
        int15_copy()
        print_byte()
        print_char()
        print_long()
        print_sl()
        print_string()
        print_var()
        print_word()
        protected_mode()
        uart_hex8
        uart_hex16
        uart_hex32
        uart_init
        uart_put
        uart_string
        uart32_hex8
        uart32_hex16
        uart32_hex32
        uart32_init
        uart32_put
        uart32_string
    Customizing Image Startup Programs
      Introduction
        Initialize hardware
        Initialize system page
        Initialize callouts
      Anatomy of a startup program
        Structure of a startup program
        Creating a new startup program
      Structure of the system page
        size
        total_size
        type
        num_cpu
        system_private
        asinfo
          The attr field
          Address space trees
        hwinfo
          Tags
          Items
          Device trees
          Building the section
          Other functions
          Defaults
          Predefined items and tags
          Group item
          Bus item
          Device item
          location tag
          irq tag
          diskgeometry tag
          pad tag
        cpuinfo
        syspage_entry cacheattr
        syspage_entry qtime
        callout
        callin
        typed_strings
        strings
        intrinfo
          The cpu_intr_base member
          The flags member
          config return values
        syspage_entry union un
        un.x86
        un.x86.smpinfo (deprecated)
        un.ppc (deprecated)
        un.ppc.kerinfo
        un.mips
        un.arm
        un.sh
        smp
        pminfo
      Callout information
        Debug interface
        Clock/timer interface
        Interrupt controller interface
        Cache controller interface
        System reset callout
        Power management callout
      The startup library
        add_cache()
        add_callout()
        add_callout_array()
        add_interrupt()
        add_interrupt_array()
        add_ram()
        add_string()
        add_typed_string()
        alloc_qtime()
        alloc_ram()
        as_add()
        as_add_containing()
        as_default()
        as_find()
        as_find_containing()
        as_info2off()
        as_off2info()
        as_set_checker()
        as_set_priority()
        avoid_ram()
        calc_time_t()
        calloc_ram()
        callout_io_map(), callout_io_map_indirect()
        callout_memory_map(), callout_memory_map_indirect()
        callout_register_data()
        chip_access()
        chip_done()
        chip_read8()
        chip_read16()
        chip_read32()
        chip_write8()
        chip_write16()
        chip_write32()
        copy_memory()
        del_typed_string()
        falcon_init_l2_cache()
        falcon_init_raminfo()
        falcon_system_clock()
        find_startup_info()
        find_typed_string()
        handle_common_option()
        hwi_add_device()
        hwi_add_inputclk()
        hwi_add_irq()
        hwi_add_location()
        hwi_add_nicaddr()
        hwi_add_rtc()
        hwi_alloc_item()
        hwi_alloc_tag()
        hwi_find_as()
        hwi_find_item()
        hwi_find_tag()
        hwi_off2tag()
        hwi_tag2off()
        init_asinfo()
        init_cacheattr()
        init_cpuinfo()
        init_hwinfo()
        init_intrinfo()
        init_mmu()
        init_pminfo()
        init_qtime()
        init_qtime_sa1100()
        init_raminfo()
        init_smp()
        init_syspage_memory() (deprecated)
        init_system_private()
        jtag_reserve_memory()
        kprintf()
        mips41xx_set_clock_freqs()
        openbios_init_raminfo()
        pcnet_reset()
        ppc400_pit_init_qtime()
        ppc405_set_clock_freqs()
        ppc600_set_clock_freqs()
        ppc700_init_l2_cache()
        ppc800_pit_init_qtime()
        ppc800_set_clock_freqs()
        ppc_dec_init_qtime()
        print_syspage()
        rtc_time()
        startup_io_map()
        startup_io_unmap()
        startup_memory_map()
        startup_memory_unmap()
        tulip_reset()
        uncompress()
        x86_cpuid_string()
        x86_cputype()
        x86_enable_a20()
        x86_fputype()
        x86_init_pcbios()
        x86_pcbios_shadow_rom()
        x86_scanmem()
      Writing your own kernel callout
        Find out who's gone before
        Why are they in assembly language?
        Starting off
        "Patching" the callout code
        Getting some R/W storage
        The exception that proves the rule
      PPC chips support
        Adding a new CPU to the startup library
    Customizing the Flash Filesystem
      Introduction
      Driver structure
        resmgr and iofunc layers
        Flash filesystem component
        Socket services component
        Flash services component
        Probe routine component
      Building your flash filesystem driver
        The source tree
        The Makefile
        Making the driver
        The main() function
          f3s_init()
          f3s_start()
        Socket services interface
          f3s_open()
          f3s_page()
          f3s_status()
          f3s_close()
        Options parsing
          f3s_socket_option()
          f3s_socket_syspage()
        Flash services interface
          f3s_ident()
          f3s_reset()
          f3s_v2read()
          f3s_v2write()
          f3s_v2erase()
          f3s_v2suspend()
          f3s_v2resume()
          f3s_v2sync()
          f3s_v2islock()
          f3s_v2lock()
          f3s_v2unlock()
          f3s_v2unlockall()
        Choosing the right routines
      Example: The devf-ram driver
        main()
        f3s_ram_open()
        f3s_ram_page()
    System Design Considerations
      Introduction
        Before you design your system
          Processor speed
          Memory requirements
          Peripherals
          Debugging
          Field upgrades
        Other design considerations
          EPROM/Flash filesystem considerations
          IPL location
          Graphics cards
          A20 gate
          External ISA bus slots
          PCI bus slots
          External clocks
          Interrupts & controllers
          Serial and parallel ports
          Parallel port considerations
      NMI
      Design do's and don'ts
        Do:
        Don't:
    Sample Buildfiles
      Introduction
      Generic examples
        Shared libraries
        Running executables more than once
        Multiple consoles
          Starting other programs on consoles
          Redirection
          /tmp
        Complete example — minimal configuration
        Complete example — flash filesystem
        Complete example — disk filesystem
        Complete example — TCP/IP with network filesystem
      Processor-specific notes
        Specifying the processor
          Examples
        Specifying the startup program
        Specifying the serial device
    Glossary
  High Availability Framework
    Introduction
      Where's the problem?
      A software foundation for HA
    What's in the High Availability Framework?
      What you get
    The QNX Approach to HA
      The reset "solution"
        Traditional RTOS architecture
      Modularity means granularity
        Intrinsic HA
    Using the High Availability Manager
      Introduction
      HAM hierarchy
        Entities
        Conditions
        Actions
        Action Fail actions
        Multistaged recovery
      State of the HAM
        Example of the view shown in /proc/ham
      HAM API
        Connect/disconnect functions
        Attach/detach functions
          For self-attached entities
          Code snippet using self-attach/detach calls
          For attaching/detaching all other entities
          Code snippet using attach/detach calls
        Entity functions
        Condition functions
          Condition types
          Condition flags
        Action functions
        Action fail functions
          Example to monitor inetd
          Example to monitor fs-nfs2
        Functions to operate on handles
      A client example
      Starting and stopping a HAM
        Stopping a HAM
        Control functions
        Verbosity control
        Publishing autonomously detected conditions
        Publish state transitions
        Publish other conditions
        Subscribing to autonomously published conditions
        Trigger based on state transitions
        Trigger based on specific published condition
    Using the Client Recovery Library
      Introduction
      MsgSend*() functions
      Other covers and convenience functions
        HA-awareness functions
        I/O covers
        Convenience functions
      A simple example
      State-reconstruction example
    HAM API Reference
    ham_action_control()
    ham_action_execute()
    ham_action_fail_execute()
    ham_action_fail_log()
    ham_action_fail_notify_pulse(), ham_action_fail_notify_pulse_node()
    ham_action_fail_notify_signal(), ham_action_fail_notify_signal_node()
    ham_action_fail_waitfor()
    ham_action_handle(), ham_action_handle_node()
    ham_action_handle_free()
    ham_action_heartbeat_healthy()
    ham_action_log()
    ham_action_notify_pulse(), ham_action_notify_pulse_node()
    ham_action_notify_signal(), ham_action_notify_signal_node()
    ham_action_remove()
    ham_action_restart()
    ham_action_waitfor()
    ham_attach(), ham_attach_node()
    ham_attach_self()
    ham_condition()
    ham_entity_control()
    ham_condition_handle(), ham_condition_handle_node()
    ham_condition_handle_free()
    ham_condition_raise()
    ham_condition_remove()
    ham_condition_state()
    ham_connect(), ham_connect_nd(), ham_connect_node()
    ham_detach()
    ham_detach_name(), ham_detach_name_node()
    ham_detach_self()
    ham_disconnect(), ham_disconnect_nd(), ham_disconnect_node()
    ham_entity(), ham_entity_node()
    ham_entity_condition_raise()
    ham_entity_condition_state()
    ham_entity_control()
    ham_entity_handle(), ham_entity_handle_node()
    ham_entity_handle_free()
    ham_heartbeat()
    ham_stop(), ham_stop_nd(), ham_stop_node()
    ham__verbose()
    Client Recovery Library Reference
    ha_attach()
    ha_close()
    ha_connection_ctrl()
    ha_ConnectAttach(), ha_ConnectAttach_r()
    ha_ConnectDetach(), ha_ConnectDetach_r()
    ha_creat(), ha_creat64()
    ha_detach()
    ha_dup()
    ha_fclose()
    ha_fopen()
    ha_open(), ha_open64()
    ha_ReConnectAttach()
    ha_reopen()
    Examples
      Simple restart
      Compound restart
      Death/condition notification
      Heartbeating clients (liveness detection)
        The process is made to heartbeat
      Process starvation
        Thread 2 is made to heartbeat
    Glossary
  Instant Device Activation User's Guide
    Using Minidrivers for Instant Device Activation
      The minidriver basics
      The minidriver architecture
      How does the minidriver work?
        Seamless transition
        Running multiple handler functions
      Writing a minidriver
        Hardware platform
        Timing requirements
        Data storage
        Hardware initialization
        Hardware Access
        Transition to full driver
      Sample minidriver
        Implementation notes
        The minidriver handler function
        Adding your minidriver to the system
        Build startup
        Test application: mini-peeker.c
        Transition from minidriver to full driver
      Minidriver implementation notes
        Customizing the startup program that contains your minidriver code
        Making a boot image that includes your minidriver
        Debugging from within the minidriver
        Displaying information about minidriver status (after the kernel boots)
        Making the transition to the real driver
    APIs and Datatypes
    mdriver_add()
    mdriver_max
    mdriver_max
    mdriver_entry
    Sample Drivers for Instant Device Activation
      FreeScale Media5200b sample minidriver
        The minidriver handler function
        Adding your minidriver to the system
        Build startup
        Testing your minidriver
        Sample timings
      Renesas Biscayne minidriver
        The minidriver handler function
        Adding your minidriver to the system
        Build startup
        Testing your minidriver
        Sample Timings
      OMAP minidriver
        Adding your minidriver to the system
        Build startup
        Testing your minidriver
        Sample timings
    Hardware Interaction within the Minidriver
  Persistent Publish/Subscribe Developer's Guide
    QNX PPS service
      Running PPS
    Objects and their attributes
      Object files
        Special objects
        Object and directory sizes
      Change notification
      Object syntax
      Attribute syntax
    Persistence
      Persistent storage
      Saving objects
      Loading objects
    Publishing
      Creating, modifying, and deleting objects and attributes
      Multiple Publishers
    Subscribing
      Blocking and nonblocking reads
      Getting notifications of data on a file descriptor
        io_notify() functionality
      Subscription Modes
        Full mode
        Delta mode
      Subscribing to multiple objects
        Subscribe to all objects in a directory
        Notification groups
          Creating notification groups
          Using notification groups
    Options and qualifiers
      Pathname open options
        Critical option
        Filtering notifications
      Object and attribute qualifiers
        Nonpersistence qualifier
        Item qualifier
      Reading and writing from the command line
    Server objects
      Working with server objects
        Sending messages through PPS server objects
          Sending a message
          Replying to a message
          Supporting cancellation of requests
    PPS encoding and decoding API
      Encoding PPS data
      Decoding PPS data
        Handling unknown data
        Dealing with errors
      Other features of PPS
    PPS API reference
      pps_attrib_flags_t
      pps_attrib_t
      pps_decoder_cleanup()
      pps_decoder_dump_tree()
      pps_decoder_error_t
      pps_decoder_flags()
      pps_decoder_get_bool()
      pps_decoder_get_double()
      pps_decoder_get_int()
      pps_decoder_get_int64()
      pps_decoder_get_state()
      pps_decoder_get_string()
      pps_decoder_goto_index()
      pps_decoder_initialize()
      pps_decoder_is_integer()
      pps_decoder_length()
      pps_decoder_name()
      pps_decoder_next()
      pps_decoder_parse_json_str()
      pps_decoder_parse_pps_str()
      pps_decoder_pop()
      pps_decoder_push()
      pps_decoder_push_array()
      pps_decoder_push_object()
      pps_decoder_reset()