<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ALSA project - the C library reference: Global defines and functions</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.2-20100208 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> </div> <div class="contents"> <h1>Global defines and functions</h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafefcb2bb4a877727b16de5c56e09055b"></a><!-- doxytag: member="Global::__SND_DLSYM_VERSION" ref="gafefcb2bb4a877727b16de5c56e09055b" args="(name, version)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gafefcb2bb4a877727b16de5c56e09055b">__SND_DLSYM_VERSION</a>(name, version)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Helper macro for <a class="el" href="group___global.html#ga355c462c8c5dee0aeadae17d096ba531" title="Appends the build version to the name of a versioned dynamic symbol.">SND_DLSYM_BUILD_VERSION</a>. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga355c462c8c5dee0aeadae17d096ba531"></a><!-- doxytag: member="Global::SND_DLSYM_BUILD_VERSION" ref="ga355c462c8c5dee0aeadae17d096ba531" args="(name, version)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga355c462c8c5dee0aeadae17d096ba531">SND_DLSYM_BUILD_VERSION</a>(name, version)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Appends the build version to the name of a versioned dynamic symbol. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga375c4dc9f0fb338999de81aab826f9d6"></a><!-- doxytag: member="Global::__STRING" ref="ga375c4dc9f0fb338999de81aab826f9d6" args="(x)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga375c4dc9f0fb338999de81aab826f9d6">__STRING</a>(x) #x</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return 'x' argument as string. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7bba39703a3275de48b3e919a2849c4b"></a><!-- doxytag: member="Global::SND_DLSYM_VERSION" ref="ga7bba39703a3275de48b3e919a2849c4b" args="(version)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga7bba39703a3275de48b3e919a2849c4b">SND_DLSYM_VERSION</a>(version) __STRING(version)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the version of a dynamic symbol as a string. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d723ca68908f9c4eb7c6e9eb03cff3f"></a><!-- doxytag: member="Global::__snd_alloca" ref="ga0d723ca68908f9c4eb7c6e9eb03cff3f" args="(ptr, type)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga0d723ca68908f9c4eb7c6e9eb03cff3f">__snd_alloca</a>(ptr, type) do { *ptr = (type##_t *) alloca(type##_sizeof()); memset(*ptr, 0, type##_sizeof()); } while (0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">alloca helper macro. <br/></td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_async_handler </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for an async notification client handler. <a href="#ga8cd9a1d441e9219ca5f2ff04094c7c6d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a> )(<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Async notification callback. <a href="#gaa0501fb0c332e2009977bb29f194200b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct timeval </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gadd377862d568809fb0e32c9faddf99a4">snd_timestamp_t</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct timespec </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga3a3f5b65c40f498cdbc26944bd9855cf">snd_htimestamp_t</a></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga1b8d6e2acb0a62de5c23bd8aef3ec225">snd_asoundlib_version</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the ALSA sound library version in ASCII format. <a href="#ga1b8d6e2acb0a62de5c23bd8aef3ec225"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga40fa4f69aa58fd0086a43baef8e685b8">snd_dlopen</a> (const char *file, int mode)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Opens a dynamic library - ALSA wrapper for <code>dlopen</code>. <a href="#ga40fa4f69aa58fd0086a43baef8e685b8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gae865f293c8771998b2b6a9f25a135408">snd_dlsym</a> (void *handle, const char *name, const char *version)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Resolves a symbol from a dynamic library - ALSA wrapper for <code>dlsym</code>. <a href="#gae865f293c8771998b2b6a9f25a135408"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga7cc0866a9d1fbce4e34a8b342674836e">snd_dlclose</a> (void *handle)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Closes a dynamic library - ALSA wrapper for <code>dlclose</code>. <a href="#ga7cc0866a9d1fbce4e34a8b342674836e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gafd936c40505997bb659b74bd368636b8">snd_async_add_handler</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> **handler, int fd, <a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a> callback, void *private_data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Registers an async handler. <a href="#gafd936c40505997bb659b74bd368636b8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga1c0bd4d123e9581a749b80e2df48b4e1">snd_async_del_handler</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Deletes an async handler. <a href="#ga1c0bd4d123e9581a749b80e2df48b4e1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gad601f70e0405a8522860edb15db6350c">snd_async_handler_get_fd</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the file descriptor assigned to an async handler. <a href="#gad601f70e0405a8522860edb15db6350c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gab32c9afe265784634c78e7a6b5d27abe">snd_async_handler_get_signo</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the signal number assigned to an async handler. <a href="#gab32c9afe265784634c78e7a6b5d27abe"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gad9c76588a87918901c6273e6bc98a1bc">snd_async_handler_get_callback_private</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the private data assigned to an async handler. <a href="#gad9c76588a87918901c6273e6bc98a1bc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct snd_shm_area * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga4141de7b343dd6e5af12df97f98c6caf">snd_shm_area_create</a> (int shmid, void *ptr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a shm area record. <a href="#ga4141de7b343dd6e5af12df97f98c6caf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct snd_shm_area * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga9dbf4bcf38bb7cc054accbbbf3a33df2">snd_shm_area_share</a> (struct snd_shm_area *area)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Increase the reference counter of shm area record. <a href="#ga9dbf4bcf38bb7cc054accbbbf3a33df2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#ga59f424fb93a72226e642dbb04b870c45">snd_shm_area_destroy</a> (struct snd_shm_area *area)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Release the shared area record. <a href="#ga59f424fb93a72226e642dbb04b870c45"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___global.html#gaade4b91c735abcec70101b9d83b11126">snd_user_file</a> (const char *file, char **result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the full file name. <a href="#gaade4b91c735abcec70101b9d83b11126"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Global defines and functions. </p> <dl class="user"><dt><b></b></dt><dd>The ALSA library implementation uses these macros and functions. Most applications probably do not need them. </dd></dl> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="gaa0501fb0c332e2009977bb29f194200b"></a><!-- doxytag: member="global.h::snd_async_callback_t" ref="gaa0501fb0c332e2009977bb29f194200b" args=")(snd_async_handler_t *handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* <a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a>)(<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td> </tr> </table> </div> <div class="memdoc"> <p>Async notification callback. </p> <p>See the <a class="el" href="group___global.html#gafd936c40505997bb659b74bd368636b8" title="Registers an async handler.">snd_async_add_handler</a> function for details. </p> </div> </div> <a class="anchor" id="ga8cd9a1d441e9219ca5f2ff04094c7c6d"></a><!-- doxytag: member="global.h::snd_async_handler_t" ref="ga8cd9a1d441e9219ca5f2ff04094c7c6d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct _snd_async_handler <a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Internal structure for an async notification client handler. </p> <p>The ALSA library uses a pointer to this structure as a handle to an async notification object. Applications don't access its contents directly. </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a43">/test/pcm.c</a>, and <a class="el" href="_2test_2timer_8c-example.html#a14">/test/timer.c</a>.</dd> </dl> </div> </div> <a class="anchor" id="ga3a3f5b65c40f498cdbc26944bd9855cf"></a><!-- doxytag: member="global.h::snd_htimestamp_t" ref="ga3a3f5b65c40f498cdbc26944bd9855cf" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct timespec <a class="el" href="group___global.html#ga3a3f5b65c40f498cdbc26944bd9855cf">snd_htimestamp_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Hi-res timestamp </p> </div> </div> <a class="anchor" id="gadd377862d568809fb0e32c9faddf99a4"></a><!-- doxytag: member="global.h::snd_timestamp_t" ref="gadd377862d568809fb0e32c9faddf99a4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct timeval <a class="el" href="group___global.html#gadd377862d568809fb0e32c9faddf99a4">snd_timestamp_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Timestamp </p> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a33">/test/latency.c</a>.</dd> </dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga1b8d6e2acb0a62de5c23bd8aef3ec225"></a><!-- doxytag: member="global.h::snd_asoundlib_version" ref="ga1b8d6e2acb0a62de5c23bd8aef3ec225" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* snd_asoundlib_version </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the ALSA sound library version in ASCII format. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>The ASCII description of the used ALSA sound library. </dd></dl> </div> </div> <a class="anchor" id="gafd936c40505997bb659b74bd368636b8"></a><!-- doxytag: member="global.h::snd_async_add_handler" ref="gafd936c40505997bb659b74bd368636b8" args="(snd_async_handler_t **handler, int fd, snd_async_callback_t callback, void *private_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_async_add_handler </td> <td>(</td> <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> ** </td> <td class="paramname"> <em>handler</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a> </td> <td class="paramname"> <em>callback</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>private_data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Registers an async handler. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>The function puts the pointer to the new async handler object at the address specified by <code>handler</code>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>fd</em> </td><td>The file descriptor to be associated with the callback. </td></tr> <tr><td valign="top"></td><td valign="top"><em>callback</em> </td><td>The async callback function. </td></tr> <tr><td valign="top"></td><td valign="top"><em>private_data</em> </td><td>Private data for the async callback function. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function associates the callback function with the given file, and saves this association in a <code>snd_async_handler_t</code> object.</p> <p>Whenever the <code>SIGIO</code> signal is raised for the file <code>fd</code>, the callback function will be called with its parameter pointing to the async handler object returned by this function.</p> <p>The ALSA <code>sigaction</code> handler for the <code>SIGIO</code> signal automatically multiplexes the notifications to the registered async callbacks. However, the application is responsible for instructing the device driver to generate the <code>SIGIO</code> signal.</p> <p>The <code>SIGIO</code> signal may have been replaced with another signal, see <a class="el" href="group___global.html#gab32c9afe265784634c78e7a6b5d27abe" title="Returns the signal number assigned to an async handler.">snd_async_handler_get_signo</a>.</p> <p>When the async handler isn't needed anymore, you must delete it with <a class="el" href="group___global.html#ga1c0bd4d123e9581a749b80e2df48b4e1" title="Deletes an async handler.">snd_async_del_handler</a>.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___p_c_m.html#ga5a0c0da6d0d35a3ac9f6a97567ac3b63" title="Add an async handler for a PCM.">snd_async_add_pcm_handler</a>, <a class="el" href="group___control.html#ga23813430fb81fecb0e95d1dfd688337d" title="Add an async handler for a CTL.">snd_async_add_ctl_handler</a> </dd></dl> </div> </div> <a class="anchor" id="ga1c0bd4d123e9581a749b80e2df48b4e1"></a><!-- doxytag: member="global.h::snd_async_del_handler" ref="ga1c0bd4d123e9581a749b80e2df48b4e1" args="(snd_async_handler_t *handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_async_del_handler </td> <td>(</td> <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> * </td> <td class="paramname"> <em>handler</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Deletes an async handler. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Handle of the async handler to delete. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="gad9c76588a87918901c6273e6bc98a1bc"></a><!-- doxytag: member="global.h::snd_async_handler_get_callback_private" ref="gad9c76588a87918901c6273e6bc98a1bc" args="(snd_async_handler_t *handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* snd_async_handler_get_callback_private </td> <td>(</td> <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> * </td> <td class="paramname"> <em>handler</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the private data assigned to an async handler. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Handle to an async handler. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The <code>private_data</code> value registered with the async handler. </dd></dl> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a45">/test/pcm.c</a>, and <a class="el" href="_2test_2timer_8c-example.html#a17">/test/timer.c</a>.</dd> </dl> </div> </div> <a class="anchor" id="gad601f70e0405a8522860edb15db6350c"></a><!-- doxytag: member="global.h::snd_async_handler_get_fd" ref="gad601f70e0405a8522860edb15db6350c" args="(snd_async_handler_t *handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_async_handler_get_fd </td> <td>(</td> <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> * </td> <td class="paramname"> <em>handler</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the file descriptor assigned to an async handler. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Handle to an async handler. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The file descriptor if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="gab32c9afe265784634c78e7a6b5d27abe"></a><!-- doxytag: member="global.h::snd_async_handler_get_signo" ref="gab32c9afe265784634c78e7a6b5d27abe" args="(snd_async_handler_t *handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_async_handler_get_signo </td> <td>(</td> <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> * </td> <td class="paramname"> <em>handler</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the signal number assigned to an async handler. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Handle to an async handler. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The signal number if successful, otherwise a negative error code.</dd></dl> <p>The signal number for async handlers usually is <code>SIGIO</code>, but wizards can redefine it to a realtime signal when compiling the ALSA library. </p> </div> </div> <a class="anchor" id="ga7cc0866a9d1fbce4e34a8b342674836e"></a><!-- doxytag: member="global.h::snd_dlclose" ref="ga7cc0866a9d1fbce4e34a8b342674836e" args="(void *handle)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_dlclose </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>handle</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Closes a dynamic library - ALSA wrapper for <code>dlclose</code>. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handle</em> </td><td>Library handle, similar to <code>dlclose</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise an error code.</dd></dl> <p>This function can emulate dynamic linking for the static build of the alsa-lib library. </p> </div> </div> <a class="anchor" id="ga40fa4f69aa58fd0086a43baef8e685b8"></a><!-- doxytag: member="global.h::snd_dlopen" ref="ga40fa4f69aa58fd0086a43baef8e685b8" args="(const char *file, int mode)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* snd_dlopen </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>mode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Opens a dynamic library - ALSA wrapper for <code>dlopen</code>. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name of the library, similar to <code>dlopen</code>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>mode flags, similar to <code>dlopen</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Library handle if successful, otherwise <code>NULL</code>.</dd></dl> <p>This function can emulate dynamic linking for the static build of the alsa-lib library. In that case, <code>name</code> is set to <code>NULL</code>. </p> </div> </div> <a class="anchor" id="gae865f293c8771998b2b6a9f25a135408"></a><!-- doxytag: member="global.h::snd_dlsym" ref="gae865f293c8771998b2b6a9f25a135408" args="(void *handle, const char *name, const char *version)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* snd_dlsym </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>version</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Resolves a symbol from a dynamic library - ALSA wrapper for <code>dlsym</code>. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handle</em> </td><td>Library handle, similar to <code>dlsym</code>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>Symbol name. </td></tr> <tr><td valign="top"></td><td valign="top"><em>version</em> </td><td>Version of the symbol.</td></tr> </table> </dd> </dl> <p>This function can emulate dynamic linking for the static build of the alsa-lib library.</p> <p>This special version of the <code>dlsym</code> function checks also the version of the symbol. A versioned symbol should be defined using the <a class="el" href="group___global.html#ga355c462c8c5dee0aeadae17d096ba531" title="Appends the build version to the name of a versioned dynamic symbol.">SND_DLSYM_BUILD_VERSION</a> macro. </p> </div> </div> <a class="anchor" id="ga4141de7b343dd6e5af12df97f98c6caf"></a><!-- doxytag: member="global.h::snd_shm_area_create" ref="ga4141de7b343dd6e5af12df97f98c6caf" args="(int shmid, void *ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct snd_shm_area* snd_shm_area_create </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>shmid</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a shm area record. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>shmid</em> </td><td>IPC SHM ID </td></tr> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>the shared area pointer </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The allocated shm area record, NULL if fail</dd></dl> <p>Allocates a shared area record with the given SHM ID and pointer. The record has a reference counter, which is initialized to 1 by this function. </p> </div> </div> <a class="anchor" id="ga59f424fb93a72226e642dbb04b870c45"></a><!-- doxytag: member="global.h::snd_shm_area_destroy" ref="ga59f424fb93a72226e642dbb04b870c45" args="(struct snd_shm_area *area)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_shm_area_destroy </td> <td>(</td> <td class="paramtype">struct snd_shm_area * </td> <td class="paramname"> <em>area</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Release the shared area record. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>area</em> </td><td>the shared are record </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 if successful, or a negative error code</dd></dl> <p>Decreases the reference counter of the given shared area record, and releases the resources automaticall if it reaches to 0. </p> </div> </div> <a class="anchor" id="ga9dbf4bcf38bb7cc054accbbbf3a33df2"></a><!-- doxytag: member="global.h::snd_shm_area_share" ref="ga9dbf4bcf38bb7cc054accbbbf3a33df2" args="(struct snd_shm_area *area)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct snd_shm_area* snd_shm_area_share </td> <td>(</td> <td class="paramtype">struct snd_shm_area * </td> <td class="paramname"> <em>area</em></td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Increase the reference counter of shm area record. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>area</em> </td><td>shm area record </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the shm area record (identical with the argument)</dd></dl> <p>Increases the reference counter of the given shared area record. </p> </div> </div> <a class="anchor" id="gaade4b91c735abcec70101b9d83b11126"></a><!-- doxytag: member="global.h::snd_user_file" ref="gaade4b91c735abcec70101b9d83b11126" args="(const char *file, char **result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_user_file </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>result</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the full file name. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The file name string to parse </td></tr> <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The pointer to store the resultant file name </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 if successful, or a negative error code</dd></dl> <p>Parses the given file name with POSIX-Shell-like expansion and stores the first matchine one. The returned string is strdup'ed. </p> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr size="1"><address style="text-align: right;"><small> Generated for ALSA project - the C library reference by <a href="http://www.doxygen.org/ index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.6.2-20100208</small></address> </body> </html>