Print this page
Minor markup tweaks (Sy instead of Nm).


 376 Documents error handling in sections 2, 3, and 9.
 377 .Pp
 378 See
 379 .Sx \&Er .
 380 .It Em ARCHITECTURE
 381 This section is usually absent, but will be present when the
 382 interface is specific to one or more architectures.
 383 .It Em CODE SET INDEPENDENCE
 384 Indicates whether the interface operates correctly with various different
 385 code sets.  True independent code sets will support not only ASCII and
 386 Extended UNIX Codesets (EUC), but also other multi-byte encodings such as
 387 UTF-8 and GB2312.
 388 .Pp
 389 Generally there will be some limitations that are fairly standard.  See
 390 .Xr standards 5 for more information about some of these.  Most interfaces
 391 should support at least UTF-8 in addition to ASCII.
 392 .It Em INTERFACE STABILITY
 393 Indicates the level of commitment to the interface. Interfaces can be described
 394 with in the following ways:
 395 .Bl -tag -width Ds
 396 .It Nm Standard
 397 Indicates that the interface is defined by one or more standards bodies.
 398 Generally, changes to the interface will be carefully managed to conform
 399 to the relevant standards.  These interfaces are generally the most suitable
 400 for use in portable programs.
 401 .It Nm Committed
 402 Indicates that the interface is intended to be preserved for the long-haul, and
 403 will rarely, if ever change, and never without notification (barring
 404 extraordinary and extenuating circumstances). These interfaces are
 405 preferred over other interfaces with the exeception of
 406 .Nm Standard
 407 interfaces.
 408 .It Nm Uncommitted
 409 Indicates that the interface may change.  Generally, changes to these interfaces
 410 should be infrequent, and some effort will be made to address compatibility
 411 considerations when changing or removing such interfaces.  However, there is
 412 no firm commitment to the preservation of the interface.  Most often this
 413 is applied to interfaces where operational experience with the interface
 414 is still limited and some need to change may be anticipated.
 415 .Pp
 416 Consumers should expect to revalidate any
 417 .Nm Uncommitted
 418 interfaces when crossing release boundaries.  Products intended for
 419 use on many releases or intended to support compatibility with future
 420 releases should avoid these interfaces.
 421 .It Nm Volatile
 422 The interface can change at any time for any reason. Often this relates to
 423 interfaces that are part of external software components that are still evolving
 424 rapidly.  Consumers should not expect that the interface (either binary or
 425 source level) will be unchanged from one release to the next.
 426 .It Nm Not-an-Interface
 427 Describes something that is specifically not intended for programmatic
 428 consumption.  For example, specific human-readable output, or the layout
 429 of graphical items on a user interface, may be described this way.  Generally
 430 programmatic alternatives to these will be available, and should be used
 431 when programmatic consumption is needed.
 432 .It Nm Private
 433 This is an internal interface.  Generally these interfaces should only be
 434 used within the project, and should not be used by other programs or modules.
 435 The interface can and will change without notice as the project needs, at
 436 any time.
 437 .Pp
 438 Most often, Private interfaces will lack any documentation whatsoever, and
 439 generally any undocumented interface can be assumed to be Private.
 440 .It Nm Obsolete
 441 The interface is not intended for use in new projects or programs, and may
 442 be removed at a future date.  The
 443 .Nm Obsolete
 444 word is a modifier that can
 445 be applied to other commitment levels. For example an
 446 .Nm Obsolete Committed
 447 interface is unlikely to be removed or changed, but nonetheless new use
 448 is discouraged (perhaps a better newer alternative is present).
 449 .El
 450 .It Em MT-LEVEL
 451 This section describes considerations for the interface when used within
 452 programs that use multiple threads.  More discussion of these considerations
 453 is made in the MT-Level section of
 454 .Xr attributes 5 .
 455 The interface can be described in the following ways.
 456 .Bl -tag -width Ds
 457 .It Nm Safe
 458 Indicates the interface is safe for use within multiple threads.  There
 459 may be additional caveats that apply, in which case those will be
 460 described.  Note that some interfaces have semantics which may affect
 461 other threads, but these should be an intrinsic part of the interface
 462 rather than an unexpected side effect.  For example, closing a file in
 463 one thread will cause that file to be closed in all threads.
 464 .It Nm Unsafe
 465 Indicates the interface is unsuitable for concurrent use within multiple
 466 threads.  A threaded application may still make use of the interface, but
 467 will be required to provide external synchronization means to ensure that
 468 only a single thread calls the interface at a time.
 469 .It Nm MT-Safe
 470 Indicates that the interface is not only safe for concurrent use, but is
 471 designed for such use.  For example, a
 472 .Nm Safe
 473 interface may make use of a global lock to provide safety, but at reduced
 474 internal concurrency, whereas an
 475 .Nm MT-Safe
 476 interface will be designed to be efficient even when used concurrently.
 477 .It Nm Async-Signal-Safe
 478 Indicates that the library is safe for use within a signal handler.  An
 479 .Nm MT-Safe
 480 interface can be made
 481 .Nm Async-Signal-Safe
 482 by ensuring that it blocks signals when acquiring locks.
 483 .It Nm Safe with Exections
 484 As for
 485 .Nm Safe
 486 but with specific exceptions noted.
 487 .It Nm MT-Safe with Exections
 488 As for
 489 .Nm MT-Safe
 490 but with specific exceptions noted.
 491 .El
 492 .It Em SECURITY
 493 Documents any security precautions that operators should consider.
 494 .It Em SEE ALSO
 495 References other manuals with related topics.
 496 This section should exist for most manuals.
 497 Cross-references should conventionally be ordered first by section, then
 498 alphabetically.
 499 .Pp
 500 References to other documentation concerning the topic of the manual page,
 501 for example authoritative books or journal articles, may also be
 502 provided in this section.
 503 .Pp
 504 See
 505 .Sx \&Rs
 506 and
 507 .Sx \&Xr .
 508 .It Em STANDARDS
 509 References any standards implemented or used.




 376 Documents error handling in sections 2, 3, and 9.
 377 .Pp
 378 See
 379 .Sx \&Er .
 380 .It Em ARCHITECTURE
 381 This section is usually absent, but will be present when the
 382 interface is specific to one or more architectures.
 383 .It Em CODE SET INDEPENDENCE
 384 Indicates whether the interface operates correctly with various different
 385 code sets.  True independent code sets will support not only ASCII and
 386 Extended UNIX Codesets (EUC), but also other multi-byte encodings such as
 387 UTF-8 and GB2312.
 388 .Pp
 389 Generally there will be some limitations that are fairly standard.  See
 390 .Xr standards 5 for more information about some of these.  Most interfaces
 391 should support at least UTF-8 in addition to ASCII.
 392 .It Em INTERFACE STABILITY
 393 Indicates the level of commitment to the interface. Interfaces can be described
 394 with in the following ways:
 395 .Bl -tag -width Ds
 396 .It Sy Standard
 397 Indicates that the interface is defined by one or more standards bodies.
 398 Generally, changes to the interface will be carefully managed to conform
 399 to the relevant standards.  These interfaces are generally the most suitable
 400 for use in portable programs.
 401 .It Sy Committed
 402 Indicates that the interface is intended to be preserved for the long-haul, and
 403 will rarely, if ever change, and never without notification (barring
 404 extraordinary and extenuating circumstances). These interfaces are
 405 preferred over other interfaces with the exeception of
 406 .Sy Standard
 407 interfaces.
 408 .It Sy Uncommitted
 409 Indicates that the interface may change.  Generally, changes to these interfaces
 410 should be infrequent, and some effort will be made to address compatibility
 411 considerations when changing or removing such interfaces.  However, there is
 412 no firm commitment to the preservation of the interface.  Most often this
 413 is applied to interfaces where operational experience with the interface
 414 is still limited and some need to change may be anticipated.
 415 .Pp
 416 Consumers should expect to revalidate any
 417 .Sy Uncommitted
 418 interfaces when crossing release boundaries.  Products intended for
 419 use on many releases or intended to support compatibility with future
 420 releases should avoid these interfaces.
 421 .It Sy Volatile
 422 The interface can change at any time for any reason. Often this relates to
 423 interfaces that are part of external software components that are still evolving
 424 rapidly.  Consumers should not expect that the interface (either binary or
 425 source level) will be unchanged from one release to the next.
 426 .It Sy Not-an-Interface
 427 Describes something that is specifically not intended for programmatic
 428 consumption.  For example, specific human-readable output, or the layout
 429 of graphical items on a user interface, may be described this way.  Generally
 430 programmatic alternatives to these will be available, and should be used
 431 when programmatic consumption is needed.
 432 .It Sy Private
 433 This is an internal interface.  Generally these interfaces should only be
 434 used within the project, and should not be used by other programs or modules.
 435 The interface can and will change without notice as the project needs, at
 436 any time.
 437 .Pp
 438 Most often, Private interfaces will lack any documentation whatsoever, and
 439 generally any undocumented interface can be assumed to be Private.
 440 .It Sy Obsolete
 441 The interface is not intended for use in new projects or programs, and may
 442 be removed at a future date.  The
 443 .Sy Obsolete
 444 word is a modifier that can
 445 be applied to other commitment levels. For example an
 446 .Sy Obsolete Committed
 447 interface is unlikely to be removed or changed, but nonetheless new use
 448 is discouraged (perhaps a better newer alternative is present).
 449 .El
 450 .It Em MT-LEVEL
 451 This section describes considerations for the interface when used within
 452 programs that use multiple threads.  More discussion of these considerations
 453 is made in the MT-Level section of
 454 .Xr attributes 5 .
 455 The interface can be described in the following ways.
 456 .Bl -tag -width Ds
 457 .It Sy Safe
 458 Indicates the interface is safe for use within multiple threads.  There
 459 may be additional caveats that apply, in which case those will be
 460 described.  Note that some interfaces have semantics which may affect
 461 other threads, but these should be an intrinsic part of the interface
 462 rather than an unexpected side effect.  For example, closing a file in
 463 one thread will cause that file to be closed in all threads.
 464 .It Sy Unsafe
 465 Indicates the interface is unsuitable for concurrent use within multiple
 466 threads.  A threaded application may still make use of the interface, but
 467 will be required to provide external synchronization means to ensure that
 468 only a single thread calls the interface at a time.
 469 .It Sy MT-Safe
 470 Indicates that the interface is not only safe for concurrent use, but is
 471 designed for such use.  For example, a
 472 .Sy Safe
 473 interface may make use of a global lock to provide safety, but at reduced
 474 internal concurrency, whereas an
 475 .Sy MT-Safe
 476 interface will be designed to be efficient even when used concurrently.
 477 .It Sy Async-Signal-Safe
 478 Indicates that the library is safe for use within a signal handler.  An
 479 .Sy MT-Safe
 480 interface can be made
 481 .Sy Async-Signal-Safe
 482 by ensuring that it blocks signals when acquiring locks.
 483 .It Sy Safe with Exections
 484 As for
 485 .Sy Safe
 486 but with specific exceptions noted.
 487 .It Sy MT-Safe with Exections
 488 As for
 489 .Sy MT-Safe
 490 but with specific exceptions noted.
 491 .El
 492 .It Em SECURITY
 493 Documents any security precautions that operators should consider.
 494 .It Em SEE ALSO
 495 References other manuals with related topics.
 496 This section should exist for most manuals.
 497 Cross-references should conventionally be ordered first by section, then
 498 alphabetically.
 499 .Pp
 500 References to other documentation concerning the topic of the manual page,
 501 for example authoritative books or journal articles, may also be
 502 provided in this section.
 503 .Pp
 504 See
 505 .Sx \&Rs
 506 and
 507 .Sx \&Xr .
 508 .It Em STANDARDS
 509 References any standards implemented or used.