Introduction to Library Functions Intro(3) NAME Intro, intro - introduction to functions and libraries DESCRIPTION This section describes functions found in various Solaris libraries, other than those functions described in Section 2 of this manual that directly invoke UNIX system primitives. Function declarations can be obtained from the #include files indicated on each page. Pages are grouped by library and are identified by the library name (or an abbreviation of the library name) after the section number. Collections of related libraries are grouped into five volumes as described below. A sixth volume (listed first) contains pages describing the contents of each shared library and each header used by the functions, macros, and external variables described in the remaining five volumes. Library Interfaces and Headers This volume describes the contents of each shared library and each header used by functions, macros, and external variables described in the remaining five volumes. (3LIB) The libraries described in this section are imple- mented as shared objects. Descriptions of shared objects may include a defini- tion of the global symbols that define the shared objects' public interface, for example SUNW_1.1. Other interfaces may exist within the shared object, for example SUNW_private.1.1. The public interface pro- vides a stable, committed set of symbols for applica- tion development. The private interfaces are for internal use only, and may change at any time. For many shared objects, an archive library is pro- vided for backward compatibility on 32-bit systems only. Use of these libraries may restrict an applica- tions ability to migrate between different Solaris releases. As dynamic linking is the preferred compila- tion method on Solaris, the use of these libraries is discouraged. (3LIBUCB) The SunOS/BSD Compatibility libraries described in this section are implemented as a shared object. See (3LIB) above. (3HEAD) The headers described in this section are used by functions, macros, and external variables. Headers contain function prototypes, definitions of symbolic SunOS 5.8 Last change: 8 Dec 2003 1 Introduction to Library Functions Intro(3) constants, common structures, preprocessor macros, and defined types. Each function described in the remain- ing five volumes specifies the headers that an appli- cation must include in order to use that function. In most cases only one header is required. These headers are present on an application development system; they do have to be present on the target execution system. Basic Library Functions The functions described in this volume are the core C library functions that are basic to application development. (3C) These functions, together with those of Section 2, constitute the standard C library, libc, which is automatically linked by the C compilation system. The standard C library is implemented as a shared object, libc.so, and as an archive, libc.a. C programs are linked with the shared object version of the standard C library by default. Specify -Bstatic or -dn on the cc command line to link with the archive version. See libc(3LIB), cc(1B) for other overrides, and the "C Compilation System" chapter of the _A_N_S_I _C _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e for a discussion. Some functions behave dif- ferently in standard-conforming environments. This behavior is noted on the individual manual pages. See standards(5). (3DL) These functions constitute the dynamic linking library, libdl. This library is implemented as a shared object, libdl.so, but is not automatically linked by the C compilation system. Specify -ldl on the cc command line to link with this library. See libdl(3LIB). (3MALLOC) These functions constitute the various memory alloca- tion libraries: libmalloc, libbsdmalloc, libmapmalloc, and libmtmalloc. Each of these libraries is imple- mented as a shared object (libmalloc.so, libbsdmalloc.so, libmapmalloc.so, and libmtmalloc.so) and all except libmtmalloc are implemented as archives (libmalloc.a, libbsdmalloc.a, libmapmalloc.a). These libraries are not automatically linked by the C compi- lation system. Specify -lmalloc, -lbsdmalloc, -lmap- malloc, and -lmtmalloc to link with, respectively, libmalloc, libbsdmalloc, libmapmalloc, and libmtmal- loc. See libmalloc(3LIB), libbsdmalloc(3LIB), libmapmalloc(3LIB), and libmtmalloc(3LIB). (3UCB) These functions constitute the Source Compatibility (with BSD functions) library. It is implemented as a SunOS 5.8 Last change: 8 Dec 2003 2 Introduction to Library Functions Intro(3) shared object, libucb.so, and as an archive, libucb.a, but is not automatically linked by the C compilation system. Specify -lucb on the cc command line to link with this library, which is located in the /usr/ucb subdirectory. Headers for this library are located within /usr/ucbinclude. See libucb(3LIB). Networking Library Functions The functions described in this volume comprise the various networking libraries. (3GSS) The functions in this library are the routines that comprise the Generic Security Services API library. This library is implemented as a shared object, libgss.so.1, but it is not automatically linked by the C compilation system. Specify -lgss on the cc command line to link with this library. See libgss(3LIB). (3LDAP) These functions constitute the Lightweight Directory Access Protocol library, libldap. This library is implemented as a shared object, libldap.so, but is not automatically linked by the C compilation system. Specify -lldap on the cc command line to link with this library. See ldap(3LDAP). (3NSL) These functions constitute the Network Service Library, libnsl. This library is implemented as a shared object, libnsl.so, and as an archive, libnsl.a, but is not automatically linked by the C compilation system. Specify -lnsl on the cc command line to link with this library. See libnsl(3LIB). Many base networking functions are also available in the X/Open Networking Interfaces library, libxnet. See section (3XNET) below for more information on the libxnet interfaces. (3RAC) These functions constitute the remote asynchronous calls library, librac. This library is implemented as a shared object, librac.so, and as an archive, librac.a, but is not automatically linked by the C compilation system. Specify -lrac on the cc command line to link with this library. See librac(3LIB). (3RESOLV) These functions constitute the resolver library, libresolv. This library is implemented as a shared object, libresolv.so, and as an archive, libresolv.a, SunOS 5.8 Last change: 8 Dec 2003 3 Introduction to Library Functions Intro(3) but is not automatically linked by the C compilation system. Specify -lresolv on the cc command line to link with this library. See libresolv(3LIB). (3RPC) These functions constitute the remote procedure call libraries, librpcsvc and librpcsoc. The latter is pro- vided for compatibility only; new applications should not link to it. Both libraries are implemented as shared objects, librpcsvc.so and librpcsoc.so, respec- tively, and librpcsvc is implemented as an archive, librpcsvc.a. librt(3LIB). Neither library is automat- ically linked by the C compilation system. Specify -lrpcsvc or -lrpcsoc on the cc command line to link with these libraries. See librpcsvc(3LIB) and librpcsoc(3LIB). (3SLP) These functions constitute the Service Location Proto- col library, libslp. This library is implemented as a shared object, libslp.so.1, but it is not automati- cally linked by the C compilation system. See libslp(3LIB) (3SOCKET) These functions constitute the sockets library, lib- socket. This library is implemented as a shared object, libsocket.so, and as an archive, libsocket.a, but is not automatically linked by the C compilation system. Specify -lsocket on the cc command line to link with this library. See libsocket(3LIB). (3XFN) These functions constitute the X/Open Federated Naming library, libxfn. This library is implemented as a shared object, libxfn.so, but is not automatically linked by the C compilation system. Specify -lxfn on the cc command line to link with this library. See libxfn(3LIB), xfn(3XFN), fns(5), and standards(5). (3XNET) These functions constitute X/Open networking inter- faces which comply with the X/Open CAE Specification, Networking Services, Issue 4 (September, 1994). This library is implemented as a shared object, libxnet.so, but is not automatically linked by the C compilation system. Specify -lxnet on the cc command line to link with this library. See libxnet(3LIB) and standards(5) for compilation information. Under all circumstances, the use of the Sockets API is recommended over the XTI and TLI APIs. If portability to SunOS 5.8 Last change: 8 Dec 2003 4 Introduction to Library Functions Intro(3) other XPGV4v2 (see standards(5)) systems is a requirement, the application must use the libxnet interfaces. If porta- bility is not required, the sockets interfaces in libsocket and libnsl are recommended over those in libxnet. Between the XTI and TLI APIs, the XTI interfaces (available with libxnet) are recommended over the TLI interfaces (available with libnsl). Curses Library Functions The functions described in this volume comprise the libraries that provide graphics and character screen updat- ing capabilities. (3CURSES) The functions constitute the following libraries: libcurses These functions constitute the curses library, libcurses. This library is implemented as a shared object, libcurses.so, and as an archive, libcurses.a, but is not automatically linked by the C compilation system. Specify -lcurses on the cc command line to link with this library. See libcurses(3LIB). libform These functions constitute the forms library, libform. This library is implemented as a shared object, libform.so, and as an archive, libforms.a, but is not automatically linked by the C compilation system. Specify -lform on the cc command line to link with this library. See libform(3LIB). libmenu These functions constitute the menus library, libmenu. This library is implemented as a shared object, libmenu.so, and as an archive, libmenu.a, but is not automatically linked by the C compilation system. Specify -lmenu on the cc command line to link with this library. See libmenu(3LIB). libpanel These functions constitute the panels library, libpanel. This library is implemented as a shared object, libpanel.so, and as an archive, libpanel.a, but is not automatically linked by the C compilation system. Specify -lpanel on the cc command line to link with this library. See libpanel(3LIB). SunOS 5.8 Last change: 8 Dec 2003 5 Introduction to Library Functions Intro(3) (3PLOT) These functions constitute the grapnics library, lib- plot. This library is implemented as a shared object, libplot.so, and as an archive, libplot.a, but is not automatically linked by the C compilation system. Specify -lplot on the cc command line to link with this library. See libplot(3LIB). (3XCURSES) These functions constitute the X/Open Curses library, located in /usr/xpg4/lib/libcurses.so.1. This library provides a set of internationalized functions and mac- ros for creating and modifying input and output to a terminal screen. Included in this library are func- tions for creating windows, highlighting text, writing to the screen, reading from user input, and moving the cursor. X/Open Curses is designed to optimize screen update activities. The X/Open Curses library conforms fully with Issue 4 of the X/Open Extended Curses specification. Threads and Realtime Library Functions The functions described in this volume constitute the threads and realtime libraries. (3AIO) These functions constitute the asynchronous I/O library, liaio. This library is implemented as a shared object, libaio.so, but is not automatically linked by the C compilation system. Specify -laio on the cc command line to link with this library. See libaio(3LIB). (3DOOR) These functions constitute the doors library, libdoor. This library is implemented as a shared object, libdoor.so, but is not automatically linked by the C compilation system. Specify -ldoor on the cc command line to link with this library. (3RT) These functions constitute the POSIX.4 Realtime library, librt. It is implemented as a shared object, librt.so, but is not automatically linked by the C compilation system. Specify -lrt on the cc command line to link with this library. Note that the former name for this library, libposix4, is maintained for backward compatibility but should be avoided. See librt(3LIB) (3SCHED) These functions constitute the LWP scheduling library, libsched. This library is implemented as a shared SunOS 5.8 Last change: 8 Dec 2003 6 Introduction to Library Functions Intro(3) object, libsched.so, but is not automatically linked by the C compilation system. Specify -lsched on the cc command line to link with this library. . (3THR) These functions constitute the threads libraries, libpthread, libthread, and libthread_db. The libpthread and libthread libraries are used for build- ing multithreaded applications: libpthread implements the POSIX (see standards(5)) threads interface, whereas libthread implements the Solaris threads interface. The libthread_db library is useful for building debuggers for multithreaded applications. Both POSIX threads and Solaris threads can be used within the same application. Their implementations are completely compatible with each other; however, only POSIX threads guarantee portability to other POSIX- conforming environments. When POSIX and Solaris threads are used in the same application, if there are calls with the same name but different semantics, the POSIX semantic supersedes the Solaris threads semantic. For example, the call to fork() will imply the fork1() semantic in a program linked with the POSIX threads library, whether or not it is also linked with -lthread (Solaris threads). The libpthread, libthread, and libthread_db libraries are implemented as shared objects, libpthread.so, libthread_db.so, and libthread.so, respectively, but only libthread_db is implememted as an archive library, libthread_db.a. These libraries are not automatically linked by the C compilation system. Specify -lpthread, -lthread, or -lthread_db on the cc command line to link with these libraries. See libpthread(3LIB), libthread(3LIB), and libthread_db(3LIB). The following functions are optional under POSIX and are not supported in the current Solaris release. int pthread_mutexattr_setprotocol(pthread_mutexattr_t *_a_t_t_r, int _p_r_o_t_o_c_o_l); int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *_a_t_t_r, int *_p_r_o_t_o_c_o_l); int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *_a_t_t_r, int _p_r_i_o_c_e_i_l_i_n_g); int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *_a_t_t_r, SunOS 5.8 Last change: 8 Dec 2003 7 Introduction to Library Functions Intro(3) int *_p_r_i_o_c_e_i_l_i_n_g); Extended Library Functions The functions described in this volume comprise various spe- cialized libraries that are not limited to the following: (3BSM) These functions constitute the basic security library, libbsm. This library is implemented as a shared object, libbsm.so, and as an archive, libbsm.a, but is not automatically linked by the C compilation system. Specify -lbsm on the cc command line to link with this library. See libbsm(3LIB). (3CFGADM) These functions constitute the configuration adminis- tration library, libcfgadm. This library is imple- mented as a shared object, libcfgadm.so, but is not automatically linked by the C compilation system. Specify -lcfgadm on the cc command line to link with this library. See libcfgadm(3LIB). (3CPC) These functions constitute the CPU performance counter library, libcpc, and the process context library, libpctx. These libraries are implemented as shared objects, libcpc.so and libpctx.so, respectively, but are not automatically linked by the C compilation sys- tem. Specify -lcpc or -lpctx on the cc command line to link with these libraries. See libcpc(3LIB) and libpctx(3LIB). (3DEVID) These functions constitute the device ID library, libdevid. This library is implemented as a shared object, libdevid.so, but is not automatically linked by the C compilation system. Specify -ldevid on the cc command line to link with this library. See libdevid(3LIB). (3DEVINFO) These functions constitute the device information library, libbsm. This library is implemented as a shared object, libdevinfo.so, and as an archive, libdevinfo.a, but is not automatically linked by the C compilation system. Specify -ldevinfo on the cc com- mand line to link with this library. See libdevinfo(3LIB). (3DMI) These functions constitute the DMI libraries, libdmi, SunOS 5.8 Last change: 8 Dec 2003 8 Introduction to Library Functions Intro(3) libdmici, and libdmimi. These libraries are imple- mented as shared objects, libdmi.so, libdmici.so, and libdmimi.so, respectively, but are not automatically linked by the C compilation system. Specify -ldmi, -ldmici, or -ldmimi on the cc command line to link with these libraries. See libdmi(3LIB), libdmici(3LIB), and libdmimi(3LIB). (3ELF) These functions constitute the ELF access library, libelf, (Extensible Linking Format). This library pro- vides the interface for the creation and analyses of "elf" files; executables, objects, and shared objects. libelf is implemented as a shared object, libelf.so, and as an archive, libelf.a, but is not automatically linked by the C compilation system. Specify -lelf on the cc command line to link with this library. See libelf(3LIB). (3EXACCT) These functions constitute the extended accounting access library, libexacct, and the project database access library, libproject. These libraries are imple- mented as shared objects, libexacct.so and libproject.so, respectively, but are not automatically linked by the C compilation system. Specify -lexacct or -lproject on the cc command line to link with these libraries. See libexacct(3LIB) and libproject(3LIB). (3GEN) These functions constitute the string pattern-matching and pathname manipulation library, libgen. This library is implemented as a shared object, libgen.so, and as an archive, libgen.a, but is not automatically linked by the C compilation system. Specify -lgen on the cc command line to link with this library. See libgen(3LIB). (3KSTAT) These functions constitute the kernel statistics library, which is implemented as a shared object, libkstat.so, and as an archive, libkstat.a, but is not automatically linked by the C compilation system. Specify -lkstat on the cc command line to link with this library. See libkstat(3LIB). (3KVM) These functions allow access to the kernel's virtual memory library, which is implemented as a shared object, libkvm.so, and as an archive, libkvm.a, but is not automatically linked by the C compilation system. Specify -lkvm on the cc command line to link with this SunOS 5.8 Last change: 8 Dec 2003 9 Introduction to Library Functions Intro(3) library. See libkvm(3LIB). (3LAYOUT) These functions constitute the layout service library, which is implemented as a shared object, liblayout.so, but is not automatically linked by the C compilation system. Specify -llayout on the cc command line to link with this library. See liblayout(3LIB). (3M) These functions constitute the mathematical library, libm. This library is implemented as a shared object, libm.so, and as an archive, libm.a, but is not automatically linked by the C compilation system. Specify -lm on the cc command line to link with this library. (3MAIL) These functions constitute the user mailbox management library, libmail. This library is implemented as a shared object, libmail.so, and as an archive, libmail.a, but is not automatically linked by the C compilation system. Specify -lmail on the cc command line to link with this library. (3MP) These functions constitute the integer mathematical library, libmp. This library is implemented as a shared object, libmp.so, and as an archive, libmp.a, but is not automatically linked by the C compilation system. Specify -lmp on the cc command line to link with this library. See libmp(3LIB). (3NVPAIR) These functions constitute the name-value pair library, libnvpair. This library is implemented as a shared object, libnvpair.so, but is not automatically linked by the C compilation system. Specify -lnvpair on the cc command line to link with this library. See libnvpair(3LIB). (3PAM) These functions constitute the Pluggable Authentica- tion Module (PAM) library, libpam. This library is implemented as a shared object, libpam.so, and as an archive, libpam.a, but is not automatically linked by the C compilation system. Specify -lpam on the cc com- mand line to link with this library. See libpam(3LIB). (3PICL) These functions constitute the PICL library, libpicl. This library is implemented as a shared object, libpicl.so, but is not automatically linked by the C compilation system. Specify -lpicl on the cc command SunOS 5.8 Last change: 8 Dec 2003 10 Introduction to Library Functions Intro(3) line to link with this library. See libpicl(3LIB) and libpicl(3PICL). (3PICLTREE) These functions constitute the PICL plug-in library, libpicltree. This library is implemented as a shared object, libpicltree.so, but is not automatically linked by the C compilation system. Specify -lpicltree on the cc command line to link with this library. See libpicltree(3LIB) and libpicltree(3PICLTREE). (3RSM) These functions constitute the remote shared memory library, librsm. This library is implemented as a shared object, librsm.so, but is not automatically linked by the C compilation system. Specify -lrsm on the cc command line to link with this library. See librsm(3LIB). (3SEC) These functions constitute the file access control library, libsec. This library is implemented as a shared object, libsec.so, and as an archive, libsec.a, but is not automatically linked by the C compilation system. Specify -lsec on the cc command line to link with this library. See libsec(3LIB). (3SECDB) These functions constitute the security attributes database library, libsecdb. This library is imple- mented as a shared object, libsecdb.so, but is not automatically linked by the C compilation system. Specify -lsecdb on the cc command line to link with this library. See libsecdb(3LIB). (3SMARTCARD) These functions constitute the smartcard library, libsmartcard. This library is implemented as a shared object, libsmartcard.so, but is not automatically linked by the C compilation system. Specify -lsmartcard on the cc command line to link with this library. See libmartcard(3LIB). (3SNMP) These functions constitute the SNMP libraries, libdssagent and libdssasnmp. These libraries are implemented as shared objects, libssagent.so and libssasnmp.so, respectively, but are not automatically linked by the C compilation system. Specify -lssagent or -lssasnmp on the cc command line to link with these libraries. See libssagent(3LIB) and libssasnmp(3LIB). SunOS 5.8 Last change: 8 Dec 2003 11 Introduction to Library Functions Intro(3) (3SYSEVENT) These functions constitute the system event library, libsysevent. This library is implemented as a shared object, libsysevent.so, but is not automatically linked by the C compilation system. Specify -lsysevent on the cc command line to link with this library. See libsysevent(3LIB). (3TNF) These functions constitute the TNF libraries, libtnf, libtnfctl, and libtnfprobe. These libraries are imple- mented as shared objects, libtnf.so, libtnfctl.so, and libtnfprobe.so, respectively, but are not automati- cally linked by the C compilation system. Specify -ltnf, -ltnfctl, or -ltnfprobe on the cc command line to link with these libraries. See libtnfctl(3TNF) and libtnfctl(3LIB). (3VOLMGT) These functions constitute the volume management library, libvolmgt. This library is implemented as a shared object, libvolmgt.so, and as an archive, libvolmgt.a, but is not automatically linked by the C compilation system. Specify -lvolmgt on the cc command line to link with this library. See libvolmgt(3LIB). (3WSREG) These functions constitute the product install regis- try library, libwsreg. This library is implemented as a shared object, libwsreg.so, but is not automatically linked by the C compilation system. Specify -lwsreg on the cc command line to link with this library. See libwsreg(3LIB). DEFINITIONS A character is any bit pattern able to fit into a byte on the machine. In some international languages, however, a "character" may require more than one byte, and is represented in multi-bytes. The null character is a character with value 0, convention- ally represented in the C language as \0. A character array is a sequence of characters. A null-terminated character array (a _s_t_r_i_n_g) is a sequence of characters, the last of which is the null character. The null string is a character array containing only the terminating null character. A null pointer is the value that is obtained by casting 0 into a pointer. C guarantees that this value will not match that of any legitimate pointer, so many functions that return pointers return _N_U_L_L to indicate an error. The macro _N_U_L_L is defined in . Types of the form size_t are defined in the appropriate headers. SunOS 5.8 Last change: 8 Dec 2003 12 Introduction to Library Functions Intro(3) MT-Level of Libraries See attributes(5) for descriptions of library MT-Levels. FILES _I_N_C_D_I_R usually /usr/include _L_I_B_D_I_R usually /usr/lib (32-bit) or /usr/lib/sparcv9(64-bit) _L_I_B_D_I_R/libc.so _L_I_B_D_I_R/libc.a _L_I_B_D_I_R/libgen.a _L_I_B_D_I_R/libm.a _L_I_B_D_I_R/libsfm.sa /usr/lib/libc.so.1 SEE ALSO ar(1), cc(1B), ld(1), fork(2), intro(3), stdio(3C), attri- butes (5), standards(5) _L_i_n_k_e_r _a_n_d _L_i_b_r_a_r_i_e_s _G_u_i_d_e _P_r_o_f_i_l_i_n_g _T_o_o_l_s _A_N_S_I _C _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e DIAGNOSTICS For functions that return floating-point values, error han- dling varies according to compilation mode. Under the -Xt (default) option to cc, these functions return the conven- tional values 0, +_HUGE, or NaN when the function is unde- fined for the given arguments or when the value is not representable. In the -Xa and -Xc compilation modes, +_HUGE_VAL is returned instead of +_HUGE. (HUGE_VAL and HUGE are defined in math.h to be infinity and the largest- magnitude single-precision number, respectively.) NOTES ON MULTITHREADED APPLICATIONS When compiling a multithreaded application, either the _POSIX_C_SOURCE, _POSIX_PTHREAD_SEMANTICS, or _REENTRANT flag must be defined on the command line. This enables spe- cial definitions for functions only applicable to mul- tithreaded applications. For POSIX.1c-conforming applica- tions, define the _POSIX_C_SOURCE flag to be >= 199506L: SunOS 5.8 Last change: 8 Dec 2003 13 Introduction to Library Functions Intro(3) cc [_f_l_a_g_s] file... -D_POSIX_C_SOURCE=199506L -lpthread For POSIX behavior with the Solaris fork() and fork1() dis- tinction, compile as follows: cc [_f_l_a_g_s] file... -D_POSIX_PTHREAD_SEMANTICS -lthread For Solaris threads behavior, compile as follows: cc [_f_l_a_g_s] _f_i_l_e... -D_REENTRANT -lthread When building a singlethreaded application, the above flags should be undefined. This generates a binary that is execut- able on previous Solaris releases, which do not support mul- tithreading. Unsafe interfaces should be called only from the main thread to ensure the application's safety. MT-Safe interfaces are denoted in the ATTRIBUTES section of the functions and libraries manual pages (see attri- butes(5)). If a manual page does not state explicitly that an interface is MT-Safe, the user should assume that the interface is unsafe. REALTIME APPLICATIONS Be sure to have set the environment variable LD_BIND_NOW to a non-null value to enable early binding. Refer to the "When Relocations are Processed" chapter in _L_i_n_k_e_r _a_n_d _L_i_b_r_a_r_i_e_s _G_u_i_d_e for additional information. NOTES None of the functions, external variables, or macros should be redefined in the user's programs. Any other name may be redefined without affecting the behavior of other library functions, but such redefinition may conflict with a declaration in an included header. The headers in _I_N_C_D_I_R provide function prototypes (function declarations including the types of arguments) for most of the functions listed in this manual. Function prototypes allow the compiler to check for correct usage of these func- tions in the user's program. The lint program checker may also be used and will report discrepancies even if the headers are not included with #include statements. Defini- tions for Sections 2, 3C, and 3S are checked automatically. Other definitions can be included by using the -l option to lint. (For example, -lm includes definitions for libm.) Use of lint is highly recommended. See the lint chapter in SunOS 5.8 Last change: 8 Dec 2003 14 Introduction to Library Functions Intro(3) _P_e_r_f_o_r_m_a_n_c_e _P_r_o_f_i_l_i_n_g _T_o_o_l_s. Users should carefully note the difference between STREAMS and _s_t_r_e_a_m. STREAMS is a set of kernel mechanisms that sup- port the development of network services and data communica- tion drivers. It is composed of utility routines, kernel facilities, and a set of data structures. A _s_t_r_e_a_m is a file with its associated buffering. It is declared to be a pointer to a type FILE defined in . In detailed definitions of components, it is sometimes necessary to refer to symbolic names that are implementation-specific, but which are not necessarily expected to be accessible to an application program. Many of these symbolic names describe boundary conditions and system limits. In this section, for readability, these implementation- specific values are given symbolic names. These names always appear enclosed in curly brackets to distinguish them from symbolic names of other implementation-specific constants that are accessible to application programs by headers. These names are not necessarily accessible to an application program through a header, although they may be defined in the documentation for a particular system. In general, a portable application program should not refer to these symbolic names in its code. For example, an appli- cation program would not be expected to test the length of an argument list given to a routine to determine if it was greater than {ARG_MAX}. SunOS 5.8 Last change: 8 Dec 2003 15