/* -*- C -*- */

/**@MODULEPAGE "su" - OS Services and Utilities
 *
 * @section su_meta Module Information
 *
 * The @b su module contains a simple, portable socket/timing/synchronizing
 * library developed for Sofia communications software.
 *
 * @CONTACT Pekka Pessi <Pekka.Pessi@nokia.com>
 *
 * @STATUS @SofiaSIP Core library
 *
 * @LICENSE LGPL
 *
 * @section su_overview Overview
 *
 * The @b su module provides following interfaces for application programs:
 *
 * - <sofia-sip/su_types.h> - integral types
 * - <sofia-sip/su_alloc.h> - @ref su_alloc memory management
 * - <sofia-sip/su.h> - @ref su_socket
 *   - <sofia-sip/su_localinfo.h> - get list of local IP addresses
 * - <sofia-sip/su_wait.h> - @ref su_wait
 * - <sofia-sip/su_time.h> - @ref su_time
 * - <sofia-sip/su_log.h> - @ref su_log
 * - <sofia-sip/su_tag.h> - @ref su_tag
 * - <sofia-sip/su_md5.h> - @ref su_md5
 * - <sofia-sip/su_uniqueid.h> - @ref su_uniqueid Unique ID and random number generators
 *
 * The @b su library also contains some collection datatypes:
 * - <sofia-sip/htable.h> - @ref su_htable
 * - <sofia-sip/rbtree.h> - balanced red-black trees
 * - <sofia-sip/su_strlst.h> - @ref su_strlst list of strings
 * - <sofia-sip/su_vector.h> - @ref su_vector dynamic arrays of pointers
 *
 * There are also some convenience macros for unit test programs:
 * - sofia-sip/tstdef.h - macros for unit tests
 *
 * @author Pekka Pessi <Pekka.Pessi@nokia.com>
 * @author Jari Selin <Jari.Selin@nokia.com>
 *
 * @par SU Debug Log
 *
 * The debugging output from @b su module is controlled by #su_log_global
 * log object. The environment variable #SU_DEBUG sets the default log
 * level.
 */

/**@maindefgroup su OS Utilities
 *
 * The "su" module contains OS utilies for Sofia.
 *
 * The @b su is a simple, portable socket/timing/synchronizing library
 * developed for Sofia communications software. Currently, interface to
 * it consists of following parts:
 *
 * - <sofia-sip/su_types.h> - basic integer types
 * - <a href=group_su_socket.html>su_socket</a> - socket functions
 * - <a href=group_su_wait.html>su_wait</a> - synchronization functions
 * - <a href=group_su_time.html>su_time</a> - time functions
 * - <a href=group_su_alloc.html>su_alloc</a> - memory management functions
 * - <a href=group_su_log.html>su_log</a> - generic logging functions
 * - <a href=group_su_tag.html>su_tag</a> - tag list function
 * - <a href=group_su_md5.html>su_md5</a> - MD5 hashing
 */

/**@defgroup su_programs Shell Programs
 *
 * The @b su module provides few shell utilities:
 * - @ref localinfo (localinfo.c)
 * - @ref addrinfo (addrinfo.c)
 */

/**@defgroup su_socket Socket Functions
 *
 *  @brief The <sofia-sip/su.h> contains the portable socket functions.
 *
 *  The <sofia-sip/su.h> contains following functions, macros, and types:
 *    - su_init(): initializes sockets
 *    - su_deinit(): deinitializes sockets
 *    - su_socket(): creates a socket
 *    - su_close(): closes a socket
 *    - su_ioctl(): ioctl to a socket
 *    - su_setreuseaddr(): set/reset reusing the addresses/ports for a socket
 *    - su_setblocking(): enables/disables blocking
 *    - su_is_blocking(): checks if the previous call failed because it
 *  	would have blocked
 *    - su_errno(): the latest socket error
 *    - su_perror(): prints the latest socket error message to stderr
 *    - su_strerror(): returns the given socket error message
 *    - su_perror2(): prints the  given socket error message to stderr
 *    - su_soerror(): returns the error code associated with the socket
 *    - su_getmsgsize(): return the number of bytes that can be recv()ed from
 *  	a socket
 *    - su_getlocalip(): return an IP address belonging to the local host
 *    - su_send(), su_sendto(): type-compatible send()
 *    - su_recv(), su_recvfrom(): type-compatible recv()
 *    - su_vsend(): scatter-gather send
 *    - su_vrecv(): scatter-gather receive
 *    - #su_iovec_t: structure holding scatter-gather IO vector
 */

/**@defgroup su_htable Hash tables
 *
 * Hash tables.
 *
 * The hash table interface and implementation is defined in
 * <sofia-sip/htable.h>. Example code and tests for the implementation is in
 * test_htable.c.
 */