1 INTRO(3) Introduction to Library Functions INTRO(3) 2 3 4 5 NAME 6 Intro, intro - introduction to functions and libraries 7 8 DESCRIPTION 9 This section describes functions found in various Solaris libraries, 10 other than those functions described in Section 2 of this manual that 11 directly invoke UNIX system primitives. Function declarations can be 12 obtained from the #include files indicated on each page. Pages are 13 grouped by library and are identified by the library name (or an 14 abbreviation of the library name) after the section number. Collections 15 of related libraries are grouped into volumes as described below. The 16 first volume contains pages describing the contents of each shared 17 library and each header used by the functions, macros, and external 18 variables described in the remaining volumes. 19 20 Library Interfaces and Headers 21 This volume describes the contents of each shared library and each 22 header used by functions, macros, and external variables described in 23 the remaining volumes. 24 25 (3LIB) 26 27 The libraries described in this section are implemented as shared 28 objects. 29 30 Descriptions of shared objects can include a definition of the 31 global symbols that define the shared objects' public interface, 32 for example SUNW_1.1. Other interfaces can exist within the shared 33 object, for example SUNWprivate.1.1. The public interface provides 34 a stable, committed set of symbols for application development. The 35 private interfaces are for internal use only, and could change at 36 any time. 37 38 39 (3HEAD) 40 41 The headers described in this section are used by functions, 42 macros, and external variables. Headers contain function 43 prototypes, definitions of symbolic constants, common structures, 44 preprocessor macros, and defined types. Each function described in 45 the remaining five volumes specifies the headers that an 46 application must include in order to use that function. In most 47 cases only one header is required. These headers are present on an 48 application development system; they do have to be present on the 49 target execution system. 50 51 52 Basic Library Functions 53 The functions described in this volume are the core C library functions 54 that are basic to application development. 55 56 (3C) 57 58 These functions, together with those of Section 2, constitute the 59 standard C library, libc, which is automatically linked by the C 60 compilation system. The standard C library is implemented as a 61 shared object, libc.so. See libc(3LIB) and the "C Compilation 62 System" chapter of the ANSI C Programmer's Guide for a discussion. 63 Some functions behave differently in standard-conforming 64 environments. This behavior is noted on the individual manual 65 pages. See standards(5). 66 67 The libpthread and libthread libraries are filter libraries on libc 68 that are used for building multithreaded applications: libpthread 69 implements the POSIX (see standards(5)) threads interface, whereas 70 libthread implements the Solaris threads interface. See 71 MULTITHREADED APPLICATIONS, below. 72 73 74 (3C_DB) 75 76 These functions constitute the threads debugging library, libc_db. 77 This library is implemented as a shared object, libc_db.so, but is 78 not automatically linked by the C compilation system. Specify 79 -lc_db on the cc command line to link with this library. See 80 libc_db(3LIB). 81 82 83 (3MALLOC) 84 85 These functions constitute the various memory allocation libraries: 86 libmalloc, libbsdmalloc, libmapmalloc, libmtmalloc, and libumem. 87 Each of these libraries is implemented as a shared object 88 (libmalloc.so, libbsdmalloc.so, libmapmalloc.so, libmtmalloc.so, 89 and libumem.so). These libraries are not automatically linked by 90 the C compilation system. Specify -lmalloc, -lbsdmalloc, 91 -lmapmalloc, -lmtmalloc, and -lumem to link with, respectively, 92 libmalloc, libbsdmalloc, libmapmalloc, libmtmalloc, and libumem. 93 See libmalloc(3LIB), libbsdmalloc(3LIB), libmapmalloc(3LIB), 94 libmtmalloc(3LIB), and libumem(3LIB). 95 96 97 Networking Library Functions 98 The functions described in this volume comprise the various networking 99 libraries. 100 101 (3COMMPUTIL) 102 103 These functions constitute the communication protocol parser 104 utilities library, libcommputil. This library is implemented as a 105 shared object, libcommputil.so, but it is not automatically linked 106 by the C compilation system. Specify -lcommputil on the cc command 107 line to link with this library. See libcommputil(3LIB). 108 109 110 (3DLPI) 111 112 These functions constitute the data link provider interface 113 library, libdlpi. This library is implemented as a shared object, 114 libdlpi.so, but it is not automatically linked by the C compilation 115 system. Specify -ldlpi on the cc command line to link with this 116 library. See libdlpi(3LIB). 117 118 119 (3DNS_SD) 120 121 These functions constitute the DNS service discovery library, 122 libdns_sd. This library is implemented as a shared object, 123 libdns_sd.so, but it is not automatically linked by the C 124 compilation system. Specify -ldns_sd on the cc command line to link 125 with this library. See libdns_sd(3LIB). 126 127 128 (3GSS) 129 130 These functions constitute the generic security services library. 131 This library is implemented as a shared object, libgss.so, but it 132 is not automatically linked by the C compilation system. Specify 133 -lgss on the cc command line to link with this library. See 134 libgss(3LIB). 135 136 137 (3LDAP) 138 139 These functions constitute the lightweight directory access 140 protocol library, libldap. This library is implemented as a shared 141 object, libldap.so, but is not automatically linked by the C 142 compilation system. Specify -lldap on the cc command line to link 143 with this library. See ldap(3LDAP). 144 145 146 (3NSL) 147 148 These functions constitute the network service library, libnsl. 149 This library is implemented as a shared object, libnsl.so, but is 150 not automatically linked by the C compilation system. Specify -lnsl 151 on the cc command line to link with this library. See libnsl(3LIB). 152 153 Many base networking functions are also available in the X/Open 154 networking interfaces library, libxnet. See section (3XNET) below 155 for more information on the libxnet interfaces. 156 157 158 (3RESOLV) 159 160 These functions constitute the resolver library, libresolv. This 161 library is implemented as a shared object, libresolv.so, but is not 162 automatically linked by the C compilation system. Specify -lresolv 163 on the cc command line to link with this library. See 164 libresolv(3LIB). 165 166 167 (3RPC) 168 169 These functions constitute the remote procedure call libraries, 170 librpcsvc and librpcsoc. The latter is provided for compatibility 171 only; new applications should not link to it. Both libraries are 172 implemented as shared objects, librpcsvc.so and librpcsoc.so, 173 respectively. Neither library is automatically linked by the C 174 compilation system. Specify -lrpcsvc or -lrpcsoc on the cc command 175 line to link with these libraries. See librpcsvc(3LIB). 176 177 178 (3SASL) 179 180 These functions constitute the simple authentication and security 181 layer library, libsasl. This library is implemented as a shared 182 object, libsasl.so, but it is not automatically linked by the C 183 compilation system. Specify -lsasl on the cc command line to link 184 with this library. See libsasl(3LIB). 185 186 187 (3SIP) 188 189 These functions constitute the session initiation protocol library, 190 libsip. This library is implemented as a shared object, libsip.so, 191 but it is not automatically linked by the C compilation system. 192 Specify -lsip on the cc command line to link with this library. See 193 libsip(3LIB). 194 195 196 (3SLP) 197 198 These functions constitute the service location protocol library, 199 libslp. This library is implemented as a shared object, libslp.so, 200 but it is not automatically linked by the C compilation system. 201 Specify -lslp on the cc command line to link with this library. See 202 libslp(3LIB). 203 204 205 (3SOCKET) 206 207 These functions constitute the sockets library, libsocket. This 208 library is implemented as a shared object, libsocket.so, but is not 209 automatically linked by the C compilation system. Specify -lsocket 210 on the cc command line to link with this library. See 211 libsocket(3LIB). 212 213 214 (3XNET) 215 216 These functions constitute X/Open networking interfaces which 217 comply with the X/Open CAE Specification, Networking Services, 218 Issue 4 (September, 1994). This library is implemented as a shared 219 object, libxnet.so, but is not automatically linked by the C 220 compilation system. Specify -lxnet on the cc command line to link 221 with this library. See libxnet(3LIB) and standards(5) for 222 compilation information. 223 224 225 226 Under all circumstances, the use of the Sockets API is recommended over 227 the XTI and TLI APIs. If portability to other XPGV4v2 (see 228 standards(5)) systems is a requirement, the application must use the 229 libxnet interfaces. If portability is not required, the sockets 230 interfaces in libsocket and libnsl are recommended over those in 231 libxnet. Between the XTI and TLI APIs, the XTI interfaces (available 232 with libxnet) are recommended over the TLI interfaces (available with 233 libnsl). 234 235 Curses Library Functions 236 The functions described in this volume comprise the libraries that 237 provide graphics and character screen updating capabilities. 238 239 (3CURSES) 240 241 The functions constitute the following libraries: 242 243 libcurses 244 245 These functions constitute the curses library, libcurses. This 246 library is implemented as a shared object, libcurses.so, but is 247 not automatically linked by the C compilation system. Specify 248 -lcurses on the cc command line to link with this library. See 249 libcurses(3LIB). 250 251 252 libform 253 254 These functions constitute the forms library, libform. This 255 library is implemented as a shared object, libform.so, but is 256 not automatically linked by the C compilation system. Specify 257 -lform on the cc command line to link with this library. See 258 libform(3LIB). 259 260 261 libmenu 262 263 These functions constitute the menus library, libmenu. This 264 library is implemented as a shared object, libmenu.so, but is 265 not automatically linked by the C compilation system. Specify 266 -lmenu on the cc command line to link with this library. See 267 libmenu(3LIB). 268 269 270 libpanel 271 272 These functions constitute the panels library, libpanel. This 273 library is implemented as a shared object, libpanel.so, but is 274 not automatically linked by the C compilation system. Specify 275 -lpanel on the cc command line to link with this library. See 276 libpanel(3LIB). 277 278 279 280 (3XCURSES) 281 282 These functions constitute the X/Open curses library, located in 283 /usr/xpg4/lib/libcurses.so. This library provides a set of 284 internationalized functions and macros for creating and modifying 285 input and output to a terminal screen. Included in this library are 286 functions for creating windows, highlighting text, writing to the 287 screen, reading from user input, and moving the cursor. X/Open 288 Curses is designed to optimize screen update activities. The X/Open 289 Curses library conforms fully with Issue 4 of the X/Open Extended 290 Curses specification. See libcurses(3XCURSES). 291 292 293 Extended Library Functions 294 The functions described in this volume comprise the following 295 specialized libraries: 296 297 (3BSM) 298 299 These functions constitute the auditing library, libbsm. This 300 library is implemented as a shared object, libbsm.so, but is not 301 automatically linked by the C compilation system. Specify -lbsm on 302 the cc command line to link with this library. See libbsm(3LIB). 303 304 305 (3CFGADM) 306 307 These functions constitute the configuration administration 308 library, libcfgadm. This library is implemented as a shared object, 309 libcfgadm.so, but is not automatically linked by the C compilation 310 system. Specify -lcfgadm on the cc command line to link with this 311 library. See libcfgadm(3LIB). 312 313 314 (3CONTRACT) 315 316 These functions constitute the contract management library, 317 libcontract. This library is implemented as a shared object, 318 libcontract.so, but is not automatically linked by the C 319 compilation system. Specify -lcontract on the cc command line to 320 link with this library. See libcontract(3LIB). 321 322 323 (3CPC) 324 325 These functions constitute the CPU performance counter library, 326 libcpc, and the process context library, libpctx. These libraries 327 are implemented as shared objects, libcpc.so and libpctx.so, 328 respectively, but are not automatically linked by the C compilation 329 system. Specify -lcpc or -lpctx on the cc command line to link with 330 these libraries. See libcpc(3LIB) and libpctx(3LIB). 331 332 333 (3DAT) 334 335 These functions constitute the direct access transport library, 336 libdat. This library is implemented as a shared object, libdat.so, 337 but is not automatically linked by the C compilation system. 338 Specify -ldat on the cc command line to link with this library. See 339 libdat(3LIB). 340 341 342 (3DEVID) 343 344 These functions constitute the device ID library, libdevid. This 345 library is implemented as a shared object, libdevid.so, but is not 346 automatically linked by the C compilation system. Specify -ldevid 347 on the cc command line to link with this library. See 348 libdevid(3LIB). 349 350 351 (3DEVINFO) 352 353 These functions constitute the device information library, 354 libdevinfo. This library is implemented as a shared object, 355 libdevinfo.so, but is not automatically linked by the C compilation 356 system. Specify -ldevinfo on the cc command line to link with this 357 library. See libdevinfo(3LIB). 358 359 360 (3ELF) 361 362 These functions constitute the ELF access library, libelf, 363 (Extensible Linking Format). This library provides the interface 364 for the creation and analyses of "elf" files; executables, objects, 365 and shared objects. libelf is implemented as a shared object, 366 libelf.so, but is not automatically linked by the C compilation 367 system. Specify -lelf on the cc command line to link with this 368 library. See libelf(3LIB). 369 370 371 (3EXACCT) 372 373 These functions constitute the extended accounting access library, 374 libexacct, and the project database access library, libproject. 375 These libraries are implemented as shared objects, libexacct.so and 376 libproject.so, respectively, but are not automatically linked by 377 the C compilation system. Specify -lexacct or -lproject on the cc 378 command line to link with these libraries. See libexacct(3LIB) and 379 libproject(3LIB). 380 381 382 (3FCOE) 383 384 These functions constitute the Fibre Channel over Ethernet port 385 management library. This library is implemented as a shared object, 386 libfcoe.so, but is not automatically linked by the C compilation 387 system. Specify -lfcoe on the cc command line to link with this 388 library. See libfcoe(3LIB). 389 390 391 (3FSTYP) 392 393 These functions constitute the file system type identification 394 library. This library is implemented as a shared object, 395 libfstyp.so, but is not automatically linked by the C compilation 396 system. Specify -lfstyp on the cc command line to link with this 397 library. See libfstyp(3LIB). 398 399 400 (3GEN) 401 402 These functions constitute the string pattern-matching and pathname 403 manipulation library, libgen. This library is implemented as a 404 shared object, libgen.so, but is not automatically linked by the C 405 compilation system. Specify -lgen on the cc command line to link 406 with this library. See libgen(3LIB). 407 408 409 (3HBAAPI) 410 411 These functions constitute the common fibre channel HBA information 412 library, libhbaapi. This library is implemented as a shared object, 413 libhbaapi.so, but is not automatically linked by the C compilation 414 system. Specify -lhbaapi on the cc command line to link with this 415 library. See libhbaapi(3LIB). 416 417 418 (3ISCSIT) 419 420 These functions constitute the iSCSI Management library, libiscsit. 421 This library is implemented as a shared object, libiscsit.so, but 422 is not automatically linked by the C compilation system. Specify 423 -liscsit on the cc command line to link with this library. See 424 libiscsit(3LIB). 425 426 427 (3KSTAT) 428 429 These functions constitute the kernel statistics library, which is 430 implemented as a shared object, libkstat.so, but is not 431 automatically linked by the C compilation system. Specify -lkstat 432 on the cc command line to link with this library. See 433 libkstat(3LIB). 434 435 436 (3KVM) 437 438 These functions allow access to the kernel's virtual memory 439 library, which is implemented as a shared object, libkvm.so, but is 440 not automatically linked by the C compilation system. Specify -lkvm 441 on the cc command line to link with this library. See libkvm(3LIB). 442 443 444 (3LGRP) 445 446 These functions constitute the locality group library, which is 447 implemented as a shared object, liblgrp.so, but is not 448 automatically linked by the C compilation system. Specify -llgrp on 449 the cc command line to link with this library. See liblgrp(3LIB). 450 451 452 (3M) 453 454 These functions constitute the mathematical library, libm. This 455 library is implemented as a shared object, libm.so, but is not 456 automatically linked by the C compilation system. Specify -lm on 457 the cc command line to link with this library. See libm(3LIB). 458 459 460 (3MAIL) 461 462 These functions constitute the user mailbox management library, 463 libmail. This library is implemented as a shared object, 464 libmail.so, but is not automatically linked by the C compilation 465 system. Specify -lmail on the cc command line to link with this 466 library. See libmail(3LIB). 467 468 469 (3MP) 470 471 These functions constitute the integer mathematical library, libmp. 472 This library is implemented as a shared object, libmp.so, but is 473 not automatically linked by the C compilation system. Specify -lmp 474 on the cc command line to link with this library. See libmp(3LIB). 475 476 477 (3MPAPI) 478 479 These functions constitute the Common Multipath Management library, 480 libMPAPI. This library is implemented as a shared object, 481 libMPAPI.so, but is not automatically linked by the C compilation 482 system. Specify -lMPAPI on the cc command line to link with this 483 library. See libMPAPI(3LIB). 484 485 486 (3MVEC) 487 488 These functions constitute the vector mathematical library, 489 libmvec. This library is implemented as a shared object, 490 libmvec.so, but is not automatically linked by the C compilation 491 system. Specify -lmvec on the cc command line to link with this 492 library. See libmvec(3LIB). 493 494 495 (3NVPAIR) 496 497 These functions constitute the name-value pair library, libnvpair. 498 This library is implemented as a shared object, libnvpair.so, but 499 is not automatically linked by the C compilation system. Specify 500 -lnvpair on the cc command line to link with this library. See 501 libnvpair(3LIB). 502 503 504 (3PAM) 505 506 These functions constitute the pluggable authentication module 507 library, libpam. This library is implemented as a shared object, 508 libpam.so, but is not automatically linked by the C compilation 509 system. Specify -lpam on the cc command line to link with this 510 library. See libpam(3LIB). 511 512 513 (3PAPI) 514 515 These functions constitute the Free Standards Group Open Printing 516 API (PAPI) library, libpapi. This library is implemented as a 517 shared object, libpapi.so, but is not automatically linked by the C 518 compilation system. Specify -lpapi on the cc command line to link 519 with this library. See libpapi(3LIB). 520 521 522 (3PICL) 523 524 These functions constitute the PICL library, libpicl. This library 525 is implemented as a shared object, libpicl.so, but is not 526 automatically linked by the C compilation system. Specify -lpicl on 527 the cc command line to link with this library. See libpicl(3LIB) 528 and libpicl(3PICL). 529 530 531 (3PICLTREE) 532 533 These functions constitute the PICL plug-in library, libpicltree. 534 This library is implemented as a shared object, libpicltree.so, but 535 is not automatically linked by the C compilation system. Specify 536 -lpicltree on the cc command line to link with this library. See 537 libpicltree(3LIB) and libpicltree(3PICLTREE). 538 539 540 (3POOL) 541 542 These functions constitute the pool configuration manipulation 543 library, libpool. This library is implemented as a shared object, 544 libpool.so, but is not automatically linked by the C compilation 545 system. Specify -lpool on the cc command line to link with this 546 library. See libpool(3LIB). 547 548 549 (3PROC) 550 551 These functions constitute the process manipulation library, 552 libproc. This library is implemented as a shared object, 553 libproc.so, but it is not automatically linked by the C compilation 554 system. Specify -lproc on the cc command line to link with this 555 library. See libproc(3LIB). 556 557 558 (3PROJECT) 559 560 These functions constitute the project database access library, 561 libproject. This library is implemented as a shared object, 562 libproject.so, but is not automatically linked by the C compilation 563 system. Specify -lproject on the cc command line to link with this 564 library. See libproject(3LIB). 565 566 567 (3RSM) 568 569 These functions constitute the remote shared memory library, 570 librsm. This library is implemented as a shared object, librsm.so, 571 but is not automatically linked by the C compilation system. 572 Specify -lrsm on the cc command line to link with this library. See 573 librsm(3LIB). 574 575 576 (3SCF) 577 578 These functions constitute the service configuration facility 579 library, libscf. This library is implemented as a shared object, 580 libscf.so, but is not automatically linked by the C compilation 581 system. Specify -lscf on the cc command line to link with this 582 library. See libscf(3LIB). 583 584 585 (3SEC) 586 587 These functions constitute the file access control library, libsec. 588 This library is implemented as a shared object, libsec.so, but is 589 not automatically linked by the C compilation system. Specify -lsec 590 on the cc command line to link with this library. See libsec(3LIB). 591 592 593 (3SECDB) 594 595 These functions constitute the security attributes database 596 library, libsecdb. This library is implemented as a shared object, 597 libsecdb.so, but is not automatically linked by the C compilation 598 system. Specify -lsecdb on the cc command line to link with this 599 library. See libsecdb(3LIB). 600 601 602 (3STMF) 603 604 These functions constitute the SCSI Target Mode Framework library, 605 libstmf. This library is implemented as a shared object, 606 libstmf.so, but is not automatically linked by the C compilation 607 system. Specify -lstmf on the cc command line to link with this 608 library. See libstmf(3LIB). 609 610 611 (3SYSEVENT) 612 613 These functions constitute the system event library, libsysevent. 614 This library is implemented as a shared object, libsysevent.so, but 615 is not automatically linked by the C compilation system. Specify 616 -lsysevent on the cc command line to link with this library. See 617 libsysevent(3LIB). 618 619 620 (3TECLA) 621 622 These functions constitute the interactive command-line input 623 library, libtecla. This library is implemented as a shared object, 624 libtecla.so, but is not automatically linked by the C compilation 625 system. Specify -ltecla on the cc command line to link with this 626 library. See libtecla(3LIB). 627 628 629 (3TNF) 630 631 These functions constitute the TNF libraries, libtnf, libtnfctl, 632 and libtnfprobe. These libraries are implemented as shared objects, 633 libtnf.so, libtnfctl.so, and libtnfprobe.so, respectively, but are 634 not automatically linked by the C compilation system. Specify 635 -ltnf, -ltnfctl, or -ltnfprobe on the cc command line to link with 636 these libraries. See libtnfctl(3TNF) and libtnfctl(3LIB). 637 638 639 (3TSOL) 640 641 These functions constitute the Trusted Extensions library, libtsol, 642 and the Trusted Extensions network library, libtsnet. These 643 libraries are implemented as shared objects, libtsol.so and 644 libtsnet.so, but are not automatically linked by the C compilation 645 system. Specify -ltsol or -ltsnet on the cc command line to link 646 with these libraries. See libtsol(3LIB) and libtsnet(3LIB). 647 648 649 (3UUID) 650 651 These functions constitute the universally unique identifier 652 library, libuuid. This library is implemented as a shared object, 653 libuuid.so, but is not automatically linked by the C compilation 654 system. Specify -luuid on the cc command line to link with this 655 library. See libuuid(3LIB). 656 657 658 (3VOLMGT) 659 660 These functions constitute the volume management library, 661 libvolmgt. This library is implemented as a shared object, 662 libvolmgt.so, but is not automatically linked by the C compilation 663 system. Specify -lvolmgt on the cc command line to link with this 664 library. See libvolmgt(3LIB). 665 666 667 DEFINITIONS 668 A character is any bit pattern able to fit into a byte on the machine. 669 In some international languages, however, a "character" might require 670 more than one byte, and is represented in multi-bytes. 671 672 673 The null character is a character with value 0, conventionally 674 represented in the C language as \0. A character array is a sequence of 675 characters. A null-terminated character array (a string) is a sequence 676 of characters, the last of which is the null character. The null string 677 is a character array containing only the terminating null character. A 678 null pointer is the value that is obtained by casting 0 into a pointer. 679 C guarantees that this value will not match that of any legitimate 680 pointer, so many functions that return pointers return NULL to indicate 681 an error. The macro NULL is defined in <stdio.h>. Types of the form 682 size_t are defined in the appropriate headers. 683 684 MULTITHREADED APPLICATIONS 685 Both POSIX threads and Solaris threads can be used within the same 686 application. Their implementations are completely compatible with each 687 other; however, only POSIX threads guarantee portability to other 688 POSIX-conforming environments. 689 690 691 The libpthread(3LIB) and libthread(3LIB) libraries are implemented as 692 filters on libc(3LIB). 693 694 695 When compiling a multithreaded application, the -mt option must be 696 specified on the command line. 697 698 699 There is no need for a multithreaded application to link with -lthread. 700 An application must link with -lpthread only when POSIX semantics for 701 fork(2) are desired. When an application is linked with -lpthread, a 702 call to fork() assumes the behavior fork1(2) rather than the default 703 behavior that forks all threads. 704 705 706 When compiling a POSIX-conforming application, either the 707 _POSIX_C_SOURCE or _POSIX_PTHREAD_SEMANTICS option must be specified on 708 the command line. For POSIX.1c-conforming applications, define the 709 _POSIX_C_SOURCE flag to be >= 199506L: 710 711 cc -mt [ flag... ] file... -D_POSIX_C_SOURCE=199506L -lpthread 712 713 714 715 For POSIX behavior with the Solaris fork() and fork1() distinction, 716 compile as follows: 717 718 cc -mt [ flag... ] file... -D_POSIX_PTHREAD_SEMANTICS 719 720 721 722 For Solaris threads behavior, compile as follows: 723 724 cc -mt [ flag... ] file... 725 726 727 728 Unsafe interfaces should be called only from the main thread to ensure 729 the application's safety. 730 731 732 MT-Safe interfaces are denoted in the ATTRIBUTES section of the 733 functions and libraries manual pages (see attributes(5)). If a manual 734 page does not state explicitly that an interface is MT-Safe, the user 735 should assume that the interface is unsafe. 736 737 REALTIME APPLICATIONS 738 The environment variable LD_BIND_NOW must be set to a non-null value to 739 enable early binding. Refer to the "When Relocations are Processed" 740 chapter in Linker and Libraries Guide for additional information. 741 742 FILES 743 INCDIR 744 usually /usr/include 745 746 747 LIBDIR 748 usually either /lib or /usr/lib (32-bit) or either 749 /lib/64 or /usr/lib/64 (64-bit) 750 751 752 LIBDIR/*.so 753 shared libraries 754 755 756 ACKNOWLEDGMENTS 757 Sun Microsystems, Inc. gratefully acknowledges The Open Group for 758 permission to reproduce portions of its copyrighted documentation. 759 Original documentation from The Open Group can be obtained online at 760 http://www.opengroup.org/bookstore/. 761 762 763 The Institute of Electrical and Electronics Engineers and The Open 764 Group, have given us permission to reprint portions of their 765 documentation. 766 767 768 In the following statement, the phrase ``this text'' refers to portions 769 of the system documentation. 770 771 772 Portions of this text are reprinted and reproduced in electronic form 773 in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition, 774 Standard for Information Technology -- Portable Operating System 775 Interface (POSIX), The Open Group Base Specifications Issue 6, 776 Copyright (C) 2001-2004 by the Institute of Electrical and Electronics 777 Engineers, Inc and The Open Group. In the event of any discrepancy 778 between these versions and the original IEEE and The Open Group 779 Standard, the original IEEE and The Open Group Standard is the referee 780 document. The original Standard can be obtained online at 781 http://www.opengroup.org/unix/online.html. 782 783 784 This notice shall appear on any product containing this material. 785 786 SEE ALSO 787 ar(1), ld(1), fork(2), stdio(3C), attributes(5), standards(5) 788 789 790 Linker and Libraries Guide 791 792 793 Performance Profiling Tools 794 795 796 ANSI C Programmer's Guide 797 798 DIAGNOSTICS 799 For functions that return floating-point values, error handling varies 800 according to compilation mode. Under the -Xt (default) option to cc, 801 these functions return the conventional values 0, +-HUGE, or NaN when 802 the function is undefined for the given arguments or when the value is 803 not representable. In the -Xa and -Xc compilation modes, +-HUGE_VAL is 804 returned instead of +-HUGE. (HUGE_VAL and HUGE are defined in math.h to 805 be infinity and the largest-magnitude single-precision number, 806 respectively.) 807 808 NOTES 809 None of the functions, external variables, or macros should be 810 redefined in the user's programs. Any other name can be redefined 811 without affecting the behavior of other library functions, but such 812 redefinition might conflict with a declaration in an included header. 813 814 815 The headers in INCDIR provide function prototypes (function 816 declarations including the types of arguments) for most of the 817 functions listed in this manual. Function prototypes allow the compiler 818 to check for correct usage of these functions in the user's program. 819 The lint program checker can also be used and will report discrepancies 820 even if the headers are not included with #include statements. 821 Definitions for Sections 2 and 3C are checked automatically. Other 822 definitions can be included by using the -l option to lint. (For 823 example, -lm includes definitions for libm.) Use of lint is highly 824 recommended. See the lint chapter in Performance Profiling Tools 825 826 827 Users should carefully note the difference between STREAMS and stream. 828 STREAMS is a set of kernel mechanisms that support the development of 829 network services and data communication drivers. It is composed of 830 utility routines, kernel facilities, and a set of data structures. A 831 stream is a file with its associated buffering. It is declared to be a 832 pointer to a type FILE defined in <stdio.h>. 833 834 835 In detailed definitions of components, it is sometimes necessary to 836 refer to symbolic names that are implementation-specific, but which are 837 not necessarily expected to be accessible to an application program. 838 Many of these symbolic names describe boundary conditions and system 839 limits. 840 841 842 In this section, for readability, these implementation-specific values 843 are given symbolic names. These names always appear enclosed in curly 844 brackets to distinguish them from symbolic names of other 845 implementation-specific constants that are accessible to application 846 programs by headers. These names are not necessarily accessible to an 847 application program through a header, although they can be defined in 848 the documentation for a particular system. 849 850 851 In general, a portable application program should not refer to these 852 symbolic names in its code. For example, an application program would 853 not be expected to test the length of an argument list given to a 854 routine to determine if it was greater than {ARG_MAX}. 855 856 857 858 August 19, 2019 INTRO(3)