You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

_005f_005fenv_005flock.html 3.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>__env_lock (The Red Hat newlib C Library)</title>
  7. <meta name="description" content="__env_lock (The Red Hat newlib C Library)">
  8. <meta name="keywords" content="__env_lock (The Red Hat newlib C Library)">
  9. <meta name="resource-type" content="document">
  10. <meta name="distribution" content="global">
  11. <meta name="Generator" content="makeinfo">
  12. <link href="index.html#Top" rel="start" title="Top">
  13. <link href="Document-Index.html#Document-Index" rel="index" title="Document Index">
  14. <link href="Document-Index.html#SEC_Contents" rel="contents" title="Table of Contents">
  15. <link href="Stdlib.html#Stdlib" rel="up" title="Stdlib">
  16. <link href="exit.html#exit" rel="next" title="exit">
  17. <link href="ecvtbuf.html#ecvtbuf" rel="prev" title="ecvtbuf">
  18. <style type="text/css">
  19. <!--
  20. a.summary-letter {text-decoration: none}
  21. blockquote.indentedblock {margin-right: 0em}
  22. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  23. blockquote.smallquotation {font-size: smaller}
  24. div.display {margin-left: 3.2em}
  25. div.example {margin-left: 3.2em}
  26. div.lisp {margin-left: 3.2em}
  27. div.smalldisplay {margin-left: 3.2em}
  28. div.smallexample {margin-left: 3.2em}
  29. div.smalllisp {margin-left: 3.2em}
  30. kbd {font-style: oblique}
  31. pre.display {font-family: inherit}
  32. pre.format {font-family: inherit}
  33. pre.menu-comment {font-family: serif}
  34. pre.menu-preformatted {font-family: serif}
  35. pre.smalldisplay {font-family: inherit; font-size: smaller}
  36. pre.smallexample {font-size: smaller}
  37. pre.smallformat {font-family: inherit; font-size: smaller}
  38. pre.smalllisp {font-size: smaller}
  39. span.nolinebreak {white-space: nowrap}
  40. span.roman {font-family: initial; font-weight: normal}
  41. span.sansserif {font-family: sans-serif; font-weight: normal}
  42. ul.no-bullet {list-style: none}
  43. -->
  44. </style>
  45. </head>
  46. <body lang="en">
  47. <a name="g_t_005f_005fenv_005flock"></a>
  48. <div class="header">
  49. <p>
  50. Next: <a href="exit.html#exit" accesskey="n" rel="next">exit</a>, Previous: <a href="ecvtbuf.html#ecvtbuf" accesskey="p" rel="prev">ecvtbuf</a>, Up: <a href="Stdlib.html#Stdlib" accesskey="u" rel="up">Stdlib</a> &nbsp; [<a href="Document-Index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Document-Index.html#Document-Index" title="Index" rel="index">Index</a>]</p>
  51. </div>
  52. <hr>
  53. <a name="g_t_005f_005fenv_005flock_002c-_005f_005fenv_005funlock_002d_002d_002dlock-environ-variable"></a>
  54. <h3 class="section">2.16 <code>__env_lock</code>, <code>__env_unlock</code>&mdash;lock environ variable</h3>
  55. <a name="index-_005f_005fenv_005flock"></a>
  56. <a name="index-_005f_005fenv_005funlock"></a>
  57. <p><strong>Synopsis</strong>
  58. </p><div class="example">
  59. <pre class="example">#include &lt;envlock.h&gt;
  60. void __env_lock (struct _reent *<var>reent</var>);
  61. void __env_unlock (struct _reent *<var>reent</var>);
  62. </pre></div>
  63. <p><strong>Description</strong><br>
  64. The <code>setenv</code> family of routines call these functions when they need to
  65. modify the environ variable. The version of these routines supplied in the
  66. library use the lock API defined in sys/lock.h. If multiple threads of
  67. execution can call <code>setenv</code>, or if <code>setenv</code> can be called reentrantly,
  68. then you need to define your own versions of these functions in order to
  69. safely lock the memory pool during a call. If you do not, the memory pool
  70. may become corrupted.
  71. </p>
  72. <p>A call to <code>setenv</code> may call <code>__env_lock</code> recursively; that is,
  73. the sequence of calls may go <code>__env_lock</code>, <code>__env_lock</code>,
  74. <code>__env_unlock</code>, <code>__env_unlock</code>. Any implementation of these
  75. routines must be careful to avoid causing a thread to wait for a lock
  76. that it already holds.
  77. </p>
  78. <br>
  79. </body>
  80. </html>