Documentation Home
> Programming Interfaces Guide
Programming Interfaces Guide
Book Information
Index
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
R
S
T
U
V
X
Z
Preface
Chapter 1 Memory Management
Memory Management Interfaces
Creating and Using Mappings
Removing Mappings
Cache Control
Using mincore
Using mlock and munlock
Using mlockall and munlockall
Using msync
Library-Level Dynamic Memory
Dynamic Memory Allocation
Dynamic Memory Debugging
check -access
check -leaks [-frames n] [-match m]
check -memuse [-frames n] [-match m]
check -all [-frames n] [-match m]
check [funcs] [files] [loadobjects]
Other Memory Control Interfaces
Using sysconf
Using mprotect
Using brk and sbrk
Chapter 2 Remote Shared Memory API for Solaris Clusters
Overview of the Shared Memory Model
API Framework
API Library Functions
Interconnect Controller Operations
rsm_get_controller
rsm_release_controller
rsm_get_controller_attr
Cluster Topology Operations
rsm_get_interconnect_topology
rsm_free_interconnect_topology
Data Structures
Administrative Operations
Memory Segment Operations
Export-Side Memory Segment Operations
Memory Segment Creation and Destruction
Memory Segment Publish, Republish, and Unpublish
Memory Segment Rebind
Import-Side Memory Segment Operations
Memory Segment Connection and Disconnection
Memory Access Primitives
Scatter-Gather Access
Segment Mapping
Barrier Operations
Event Operations
RSMAPI General Usage Notes
Segment Allocation and File Descriptor Usage
Export-Side Considerations
Import-Side Considerations
RSM Configurable Parameters
RSMAPI Usage Example
Chapter 3 Process Scheduler
Overview of the Scheduler
Time-Sharing Class
System Class
Real-time Class
Interactive Class
Fair-Share Class
Fixed-Priority Class
Commands and Interfaces
priocntl Usage
priocntl Interface
Interactions With Other Interfaces
Kernel Processes
Using fork and exec
Using nice
init(1M)
Scheduling and System Performance
Process State Transition
Chapter 4 Locality Group APIs
Locality Groups Overview
Verifying the Interface Version
Using lgrp_version()
Initializing the Locality Group Interface
Using lgrp_init()
Using lgrp_fini()
Locality Group Hierarchy
Using lgrp_cookie_stale()
Using lgrp_view()
Using lgrp_nlgrps()
Using lgrp_root()
Using lgrp_parents()
Using lgrp_children()
Locality Group Contents
Using lgrp_cpus()
Using lgrp_mem_size()
Locality Group Characteristics
Using lgrp_latency()
Locality Groups and Thread and Memory Placement
Using lgrp_home()
Using madvise()
Using madv.so.1
madv.so.1 Usage Examples
Using meminfo()
Locality Group Affinity
Using lgrp_affinity_get()
Using lgrp_affinity_set()
Examples of API usage
Chapter 5 Input/Output Interfaces
Files and I/O Interfaces
Basic File I/O
Advanced File I/O
File System Control
Using File and Record Locking
Choosing a Lock Type
Selecting Advisory or Mandatory Locking
Cautions About Mandatory Locking
Supported File Systems
Opening a File for Locking
Setting a File Lock
Setting and Removing Record Locks
Getting Lock Information
Process Forking and Locks
Deadlock Handling
Terminal I/O Functions
Chapter 6 Interprocess Communication
Pipes Between Processes
Named Pipes
Sockets Overview
POSIX Interprocess Communication
POSIX Messages
POSIX Semaphores
POSIX Shared Memory
System V IPC
Permissions for Messages, Semaphores, and Shared Memory
IPC Interfaces, Key Arguments, and Creation Flags
System V Messages
Initializing a Message Queue
Controlling Message Queues
Sending and Receiving Messages
System V Semaphores
Initializing a Semaphore Set
Controlling Semaphores
Semaphore Operations
System V Shared Memory
Accessing a Shared Memory Segment
Controlling a Shared Memory Segment
Attaching and Detaching a Shared Memory Segment
Chapter 7 Socket Interfaces
SunOS 4 Binary Compatibility
Overview of Sockets
Socket Libraries
Socket Types
Interface Sets
Socket Basics
Socket Creation
Binding Local Names
Connection Establishment
Connection Errors
Data Transfer
Closing Sockets
Connecting Stream Sockets
Input/Output Multiplexing
Datagram Sockets
Standard Routines
Host and Service Names
Host Names – hostent
Network Names – netent
Protocol Names – protoent
Service Names – servent
Other Routines
Client-Server Programs
Sockets and Servers
Sockets and Clients
Connectionless Servers
Advanced Socket Topics
Out-of-Band Data
Nonblocking Sockets
Asynchronous Socket I/O
Interrupt-Driven Socket I/O
Signals and Process Group ID
Selecting Specific Protocols
Address Binding
Zero Copy and Checksum Off-load
Socket Options
inetd Daemon
Broadcasting and Determining Network Configuration
Using Multicast
Sending IPv4 Multicast Datagrams
Receiving IPv4 Multicast Datagrams
Sending IPv6 Multicast Datagrams
Receiving IPv6 Multicast Datagrams
Chapter 8 Programming With XTI and TLI
What Are XTI and TLI?
XTI/TLI Read/Write Interface
Write Data
Read Data
Close Connection
Advanced XTI/TLI Topics
Asynchronous Execution Mode
Advanced XTI/TLI Programming Example
Asynchronous Networking
Networking Programming Models
Asynchronous Connectionless-Mode Service
Making the Endpoint Asynchronous
Asynchronous Network Transfers
Asynchronous Connection-Mode Service
Asynchronously Establishing a Connection
Asynchronous Use of a Connection
Asynchronous Open
Transferring a File Descriptor
State Transitions
XTI/TLI States
Outgoing Events
Incoming Events
State Tables
Guidelines to Protocol Independence
XTI/TLI Versus Socket Interfaces
Socket-to-XTI/TLI Equivalents
Additions to the XTI Interface
Chapter 9 Transport Selection and Name-to-Address Mapping
Transport Selection
Name-to-Address Mapping
straddr.so Library
Using the Name-to-Address Mapping Routines
Chapter 10 Real-time Programming and Administration
Basic Rules of Real-time Applications
Factors that Degrade Response Time
Synchronous I/O Calls
Interrupt Servicing
Shared Libraries
Priority Inversion
Sticky Locks
Runaway Real-time Processes
Asynchronous I/O Behavior
Real-time Files
The Real-Time Scheduler
Dispatch Latency
Scheduling Classes
Dispatch Queue
Dispatching Processes
Process Pre-emption
Kernel Priority Inversion
User Priority Inversion
Interface Calls That Control Scheduling
Using priocntl
Other interface calls
Utilities That Control Scheduling
priocntl(1)
dispadmin(1M)
Configuring Scheduling
Dispatcher Parameter Table
Reconfiguring config_rt_dptbl
Memory Locking
Locking a Page
Unlocking a Page
Locking All Pages
Recovering Sticky Locks
High Performance I/O
POSIX Asynchronous I/O
Solaris Asynchronous I/O
Notification (SIGIO)
Using aioread
Using aiowrite
Using aiocancel
Using aiowait
Using poll()
Using the poll Driver
Using close
Synchronized I/O
Synchronization Modes
Synchronizing a File
Interprocess Communication
Processing Signals
Pipes, Named Pipes, and Message Queues
Using Semaphores
Shared Memory
Asynchronous Network Communication
Modes of Networking
Timing Facilities
Timestamp Interfaces
Interval Timer Interfaces
Chapter 11 The Solaris ABI and ABI Tools
What is the Solaris ABI?
Defining the Solaris ABI
Symbol Versioning in Solaris Libraries
Using Symbol Versioning to Label the Solaris ABI
Solaris ABI Tools
appcert Utility
What appcert Checks
Private Symbol Usage
Static Linking
Unbound Symbols
What appcert Does Not Check
Working with appcert
appcert Options
Using appcert for Application Triage
appcert Results
Correcting Problems Reported by appcert
Using apptrace for Application Verification
Application Verification
Running apptrace
Interpreting apptrace Output
Appendix A UNIX Domain Sockets
Creating Sockets
Local Name Binding
Establishing a Connection
© 2010, Oracle Corporation and/or its affiliates