]> ncurses.scripts.mit.edu Git - ncurses.git/blob - doc/html/man/curs_threads.3x.html
ncurses 6.4 - patch 20230917
[ncurses.git] / doc / html / man / curs_threads.3x.html
1 <!--
2   * t
3   ****************************************************************************
4   * Copyright 2021-2022,2023 Thomas E. Dickey                                *
5   * Copyright 2008-2015,2017 Free Software Foundation, Inc.                  *
6   *                                                                          *
7   * Permission is hereby granted, free of charge, to any person obtaining a  *
8   * copy of this software and associated documentation files (the            *
9   * "Software"), to deal in the Software without restriction, including      *
10   * without limitation the rights to use, copy, modify, merge, publish,      *
11   * distribute, distribute with modifications, sublicense, and/or sell       *
12   * copies of the Software, and to permit persons to whom the Software is    *
13   * furnished to do so, subject to the following conditions:                 *
14   *                                                                          *
15   * The above copyright notice and this permission notice shall be included  *
16   * in all copies or substantial portions of the Software.                   *
17   *                                                                          *
18   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
19   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
20   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
21   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
22   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
23   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
24   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
25   *                                                                          *
26   * Except as contained in this notice, the name(s) of the above copyright   *
27   * holders shall not be used in advertising or otherwise to promote the     *
28   * sale, use or other dealings in this Software without prior written       *
29   * authorization.                                                           *
30   ****************************************************************************
31   * @Id: curs_threads.3x,v 1.41 2023/09/16 23:37:03 tom Exp @
32   * ***************************************************************************
33   * ***************************************************************************
34 -->
35 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
36 <HTML>
37 <HEAD>
38 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
39 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
40 <TITLE>curs_threads 3x 2023-09-16 ncurses 6.4 Library calls</TITLE>
41 <link rel="author" href="mailto:bug-ncurses@gnu.org">
42
43 </HEAD>
44 <BODY>
45 <H1 class="no-header">curs_threads 3x 2023-09-16 ncurses 6.4 Library calls</H1>
46 <PRE>
47 <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
48
49
50
51
52 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
53        <STRONG>curs_threads</STRONG> - <EM>curses</EM> thread support
54
55
56 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
57        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
58
59        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
60        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
61
62        <STRONG>int</STRONG> <STRONG>get_escdelay(void);</STRONG>
63        <STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
64        <STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <EM>cols</EM><STRONG>);</STRONG>
65
66        <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*</STRONG><EM>scr</EM><STRONG>,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG>
67        <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG>
68
69
70 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
71        This  implementation  can  be configured to provide rudimentary support
72        for  multi-threaded  applications.   This  makes  a  different  set  of
73        libraries, e.g., <STRONG>libncursest</STRONG> since the binary interfaces are different.
74
75        Rather  than  modify  the interfaces to pass a thread specifier to each
76        function,  it  adds  a  few  functions  which  can  be  used   in   any
77        configuration  which  hide the mutex's needed to prevent concurrent use
78        of the global variables when configured for threading.
79
80        In addition to forcing access to members of the <STRONG>WINDOW</STRONG> structure to  be
81        via  functions  (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it makes functions of the common
82        global variables, e.g., COLORS,  COLOR_PAIRS,  COLS,  ESCDELAY,  LINES,
83        TABSIZE  curscr, newscr and ttytype.  Those variables are maintained as
84        read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
85
86        Even this is not enough to make a thread-safe application using curses.
87        A multi-threaded application would be expected to have threads updating
88        separate windows (within the same  device),  or  updating  on  separate
89        screens  (on  different  devices).  Also, a few of the global variables
90        are considered writable by some applications.  The functions  described
91        here address these special situations.
92
93        The  ESCDELAY  and  TABSIZE  global  variables  are  modified  by  some
94        applications.   To  modify  them  in   any   configuration,   use   the
95        <STRONG>set_escdelay</STRONG>  or <STRONG>set_tabsize</STRONG> functions.  Other global variables are not
96        modifiable.
97
98        The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
99
100        The <STRONG>use_window</STRONG> and  <STRONG>use_screen</STRONG>  functions  provide  coarse  granularity
101        mutexes  for  their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> parameters, and call a
102        user-supplied function, passing it a <EM>data</EM> parameter, and returning  the
103        value from the user-supplied function to the application.
104
105
106 </PRE><H3><a name="h3-USAGE">USAGE</a></H3><PRE>
107        All  of  the  ncurses  library  functions assume that the locale is not
108        altered  during  operation.   In  addition,  they  use  data  which  is
109        maintained within a hierarchy of scopes.
110
111           <STRONG>o</STRONG>   global  data,  e.g.,  used  in the low-level terminfo or termcap
112               interfaces.
113
114           <STRONG>o</STRONG>   terminal data, e.g., associated with a call to <STRONG>set_curterm</STRONG>.  The
115               terminal data are initialized when screens are created.
116
117           <STRONG>o</STRONG>   screen data, e.g., associated with a call to <STRONG>newterm</STRONG> or <STRONG>initscr</STRONG>.
118
119           <STRONG>o</STRONG>   window  data,  e.g., associated with a call to <STRONG>newwin</STRONG> or <STRONG>subwin</STRONG>.
120               Windows are associated with screens.  Pads are  not  necessarily
121               associated with a particular screen.
122
123               Most curses applications operate on one or more windows within a
124               single screen.
125
126           <STRONG>o</STRONG>   reentrant, i.e., it uses only the data passed as parameters.
127
128        This table lists the scope of data used for each symbol in the  ncurses
129        library when it is configured to support threading:
130
131             Symbol                  Scope
132             -------------------------------------------------------------
133             BC                      global
134             COLORS                  screen (readonly)
135             COLOR_PAIR              reentrant
136             COLOR_PAIRS             screen (readonly)
137             COLS                    screen (readonly)
138             ESCDELAY                screen (readonly, see <STRONG>set_escdelay</STRONG>)
139             LINES                   screen (readonly)
140             PAIR_NUMBER             reentrant
141             PC                      global
142             SP                      global
143             TABSIZE                 screen (readonly)
144             UP                      global
145             acs_map                 screen (readonly)
146             add_wch                 window (stdscr)
147             add_wchnstr             window (stdscr)
148             add_wchstr              window (stdscr)
149             addch                   window (stdscr)
150             addchnstr               window (stdscr)
151             addchstr                window (stdscr)
152             addnstr                 window (stdscr)
153             addnwstr                window (stdscr)
154             addstr                  window (stdscr)
155             addwstr                 window (stdscr)
156             assume_default_colors   screen
157             attr_get                window (stdscr)
158             attr_off                window (stdscr)
159             attr_on                 window (stdscr)
160             attr_set                window (stdscr)
161             attroff                 window (stdscr)
162             attron                  window (stdscr)
163             attrset                 window (stdscr)
164             baudrate                screen
165             beep                    screen
166             bkgd                    window (stdscr)
167             bkgdset                 window (stdscr)
168             bkgrnd                  window (stdscr)
169             bkgrndset               window (stdscr)
170             boolcodes               global (readonly)
171             boolfnames              global (readonly)
172             boolnames               global (readonly)
173             border                  window (stdscr)
174             border_set              window (stdscr)
175             box                     window (stdscr)
176             box_set                 window (stdscr)
177             can_change_color        terminal
178             cbreak                  screen
179             chgat                   window (stdscr)
180             clear                   window (stdscr)
181             clearok                 window
182
183             clrtobot                window (stdscr)
184             clrtoeol                window (stdscr)
185             color_content           screen
186             color_set               window (stdscr)
187             copywin                 window locks(source, target)
188             cur_term                terminal
189             curs_set                screen
190             curscr                  screen (readonly)
191             curses_version          global (readonly)
192             def_prog_mode           terminal
193             def_shell_mode          terminal
194             define_key              screen
195             del_curterm             screen
196             delay_output            screen
197             delch                   window (stdscr)
198             deleteln                window (stdscr)
199             delscreen               global locks(screenlist, screen)
200             delwin                  global locks(windowlist)
201             derwin                  screen
202             doupdate                screen
203             dupwin                  screen locks(window)
204             echo                    screen
205             echo_wchar              window (stdscr)
206             echochar                window (stdscr)
207             endwin                  screen
208             erase                   window (stdscr)
209             erasechar               window (stdscr)
210             erasewchar              window (stdscr)
211             filter                  global
212             flash                   terminal
213             flushinp                screen
214             get_wch                 screen (input-operation)
215             get_wstr                screen (input-operation)
216             getattrs                window
217             getbegx                 window
218             getbegy                 window
219             getbkgd                 window
220             getbkgrnd               window
221             getcchar                reentrant
222             getch                   screen (input-operation)
223             getcurx                 window
224             getcury                 window
225             getmaxx                 window
226             getmaxy                 window
227             getmouse                screen (input-operation)
228             getn_wstr               screen (input-operation)
229             getnstr                 screen (input-operation)
230             getparx                 window
231             getpary                 window
232             getstr                  screen (input-operation)
233             getwin                  screen (input-operation)
234             halfdelay               screen
235             has_colors              terminal
236             has_ic                  terminal
237             has_il                  terminal
238             has_key                 screen
239             hline                   window (stdscr)
240             hline_set               window (stdscr)
241             idcok                   window
242             idlok                   window
243             immedok                 window
244             in_wch                  window (stdscr)
245             in_wchnstr              window (stdscr)
246             in_wchstr               window (stdscr)
247             inch                    window (stdscr)
248
249             inchnstr                window (stdscr)
250             inchstr                 window (stdscr)
251             init_color              screen
252             init_pair               screen
253             initscr                 global locks(screenlist)
254             innstr                  window (stdscr)
255             innwstr                 window (stdscr)
256             ins_nwstr               window (stdscr)
257             ins_wch                 window (stdscr)
258             ins_wstr                window (stdscr)
259             insch                   window (stdscr)
260             insdelln                window (stdscr)
261             insertln                window (stdscr)
262             insnstr                 window (stdscr)
263             insstr                  window (stdscr)
264             instr                   window (stdscr)
265             intrflush               terminal
266             inwstr                  window (stdscr)
267             is_cleared              window
268             is_idcok                window
269             is_idlok                window
270             is_immedok              window
271             is_keypad               window
272             is_leaveok              window
273             is_linetouched          window
274             is_nodelay              window
275             is_notimeout            window
276             is_scrollok             window
277             is_syncok               window
278             is_term_resized         terminal
279             is_wintouched           window
280             isendwin                screen
281             key_defined             screen
282             key_name                global (static data)
283             keybound                screen
284             keyname                 global (static data)
285             keyok                   screen
286             keypad                  window
287             killchar                terminal
288             killwchar               terminal
289             leaveok                 window
290             longname                screen
291             mcprint                 terminal
292             meta                    screen
293             mouse_trafo             window (stdscr)
294             mouseinterval           screen
295             mousemask               screen
296             move                    window (stdscr)
297             mvadd_wch               window (stdscr)
298             mvadd_wchnstr           window (stdscr)
299             mvadd_wchstr            window (stdscr)
300             mvaddch                 window (stdscr)
301             mvaddchnstr             window (stdscr)
302             mvaddchstr              window (stdscr)
303             mvaddnstr               window (stdscr)
304             mvaddnwstr              window (stdscr)
305             mvaddstr                window (stdscr)
306             mvaddwstr               window (stdscr)
307             mvchgat                 window (stdscr)
308             mvcur                   screen
309             mvdelch                 window (stdscr)
310             mvderwin                window (stdscr)
311             mvget_wch               screen (input-operation)
312             mvget_wstr              screen (input-operation)
313             mvgetch                 screen (input-operation)
314
315             mvgetn_wstr             screen (input-operation)
316             mvgetnstr               screen (input-operation)
317             mvgetstr                screen (input-operation)
318             mvhline                 window (stdscr)
319             mvhline_set             window (stdscr)
320             mvin_wch                window (stdscr)
321             mvin_wchnstr            window (stdscr)
322             mvin_wchstr             window (stdscr)
323             mvinch                  window (stdscr)
324             mvinchnstr              window (stdscr)
325             mvinchstr               window (stdscr)
326             mvinnstr                window (stdscr)
327             mvinnwstr               window (stdscr)
328             mvins_nwstr             window (stdscr)
329             mvins_wch               window (stdscr)
330             mvins_wstr              window (stdscr)
331             mvinsch                 window (stdscr)
332             mvinsnstr               window (stdscr)
333             mvinsstr                window (stdscr)
334             mvinstr                 window (stdscr)
335             mvinwstr                window (stdscr)
336             mvprintw                window (stdscr)
337             mvscanw                 screen
338             mvvline                 window (stdscr)
339             mvvline_set             window (stdscr)
340             mvwadd_wch              window
341             mvwadd_wchnstr          window
342             mvwadd_wchstr           window
343             mvwaddch                window
344             mvwaddchnstr            window
345             mvwaddchstr             window
346             mvwaddnstr              window
347             mvwaddnwstr             window
348             mvwaddstr               window
349             mvwaddwstr              window
350             mvwchgat                window
351             mvwdelch                window
352             mvwget_wch              screen (input-operation)
353             mvwget_wstr             screen (input-operation)
354             mvwgetch                screen (input-operation)
355             mvwgetn_wstr            screen (input-operation)
356             mvwgetnstr              screen (input-operation)
357             mvwgetstr               screen (input-operation)
358             mvwhline                window
359             mvwhline_set            window
360             mvwin                   window
361             mvwin_wch               window
362             mvwin_wchnstr           window
363             mvwin_wchstr            window
364             mvwinch                 window
365             mvwinchnstr             window
366             mvwinchstr              window
367             mvwinnstr               window
368             mvwinnwstr              window
369             mvwins_nwstr            window
370             mvwins_wch              window
371             mvwins_wstr             window
372             mvwinsch                window
373             mvwinsnstr              window
374             mvwinsstr               window
375             mvwinstr                window
376             mvwinwstr               window
377             mvwprintw               window
378             mvwscanw                screen
379             mvwvline                window
380
381             mvwvline_set            window
382             napms                   reentrant
383             newpad                  global locks(windowlist)
384             newscr                  screen (readonly)
385             newterm                 global locks(screenlist)
386             newwin                  global locks(windowlist)
387             nl                      screen
388             nocbreak                screen
389             nodelay                 window
390             noecho                  screen
391             nofilter                global
392             nonl                    screen
393             noqiflush               terminal
394             noraw                   screen
395             notimeout               window
396             numcodes                global (readonly)
397             numfnames               global (readonly)
398             numnames                global (readonly)
399             ospeed                  global
400             overlay                 window locks(source, target)
401             overwrite               window locks(source, target)
402             pair_content            screen
403             pecho_wchar             screen
404             pechochar               screen
405             pnoutrefresh            screen
406             prefresh                screen
407             printw                  window
408             putp                    global
409             putwin                  window
410             qiflush                 terminal
411             raw                     screen
412             redrawwin               window
413             refresh                 screen
414             reset_prog_mode         screen
415             reset_shell_mode        screen
416             resetty                 terminal
417             resize_term             screen locks(windowlist)
418             resizeterm              screen
419             restartterm             screen
420             ripoffline              global (static data)
421             savetty                 terminal
422             scanw                   screen
423             scr_dump                screen
424             scr_init                screen
425             scr_restore             screen
426             scr_set                 screen
427             scrl                    window (stdscr)
428             scroll                  window
429             scrollok                window
430             set_curterm             screen
431             set_escdelay            screen
432             set_tabsize             screen
433             set_term                global locks(screenlist, screen)
434             setcchar                reentrant
435             setscrreg               window (stdscr)
436             setupterm               global
437             slk_attr                screen
438             slk_attr_off            screen
439             slk_attr_on             screen
440             slk_attr_set            screen
441             slk_attroff             screen
442             slk_attron              screen
443             slk_attrset             screen
444             slk_clear               screen
445             slk_color               screen
446
447             slk_init                screen
448             slk_label               screen
449             slk_noutrefresh         screen
450             slk_refresh             screen
451             slk_restore             screen
452             slk_set                 screen
453             slk_touch               screen
454             slk_wset                screen
455             standend                window
456             standout                window
457             start_color             screen
458             stdscr                  screen (readonly)
459             strcodes                global (readonly)
460             strfnames               global (readonly)
461             strnames                global (readonly)
462             subpad                  window
463             subwin                  window
464             syncok                  window
465             term_attrs              screen
466             termattrs               screen
467             termname                terminal
468             tgetent                 global
469             tgetflag                global
470             tgetnum                 global
471             tgetstr                 global
472             tgoto                   global
473             tigetflag               terminal
474             tigetnum                terminal
475             tigetstr                terminal
476             timeout                 window (stdscr)
477             touchline               window
478             touchwin                window
479             tparm                   global (static data)
480             tputs                   screen
481             trace                   global (static data)
482             ttytype                 screen (readonly)
483             typeahead               screen
484             unctrl                  screen
485             unget_wch               screen (input-operation)
486             ungetch                 screen (input-operation)
487             ungetmouse              screen (input-operation)
488             untouchwin              window
489             use_default_colors      screen
490             use_env                 global (static data)
491             use_extended_names      global (static data)
492             use_legacy_coding       screen
493             use_screen              global locks(screenlist, screen)
494             use_window              global locks(windowlist, window)
495             vid_attr                screen
496             vid_puts                screen
497             vidattr                 screen
498             vidputs                 screen
499             vline                   window (stdscr)
500             vline_set               window (stdscr)
501             vw_printw               window
502             vw_scanw                screen
503             vwprintw                window
504             vwscanw                 screen
505             wadd_wch                window
506             wadd_wchnstr            window
507             wadd_wchstr             window
508             waddch                  window
509             waddchnstr              window
510             waddchstr               window
511             waddnstr                window
512
513             waddnwstr               window
514             waddstr                 window
515             waddwstr                window
516             wattr_get               window
517             wattr_off               window
518             wattr_on                window
519             wattr_set               window
520             wattroff                window
521             wattron                 window
522             wattrset                window
523             wbkgd                   window
524             wbkgdset                window
525             wbkgrnd                 window
526             wbkgrndset              window
527             wborder                 window
528             wborder_set             window
529             wchgat                  window
530             wclear                  window
531             wclrtobot               window
532             wclrtoeol               window
533             wcolor_set              window
534             wcursyncup              screen (affects window plus parents)
535             wdelch                  window
536             wdeleteln               window
537             wecho_wchar             window
538             wechochar               window
539             wenclose                window
540             werase                  window
541             wget_wch                screen (input-operation)
542             wget_wstr               screen (input-operation)
543             wgetbkgrnd              window
544             wgetch                  screen (input-operation)
545             wgetdelay               window
546             wgetn_wstr              screen (input-operation)
547             wgetnstr                screen (input-operation)
548             wgetparent              window
549             wgetscrreg              window
550             wgetstr                 screen (input-operation)
551             whline                  window
552             whline_set              window
553             win_wch                 window
554             win_wchnstr             window
555             win_wchstr              window
556             winch                   window
557             winchnstr               window
558             winchstr                window
559             winnstr                 window
560             winnwstr                window
561             wins_nwstr              window
562             wins_wch                window
563             wins_wstr               window
564             winsch                  window
565             winsdelln               window
566             winsertln               window
567             winsnstr                window
568             winsstr                 window
569             winstr                  window
570             winwstr                 window
571             wmouse_trafo            window
572             wmove                   window
573             wnoutrefresh            screen
574             wprintw                 window
575             wredrawln               window
576             wrefresh                screen
577             wresize                 window locks(windowlist)
578
579             wscanw                  screen
580             wscrl                   window
581             wsetscrreg              window
582             wstandend               window
583             wstandout               window
584             wsyncdown               screen (affects window plus parents)
585             wsyncup                 screen (affects window plus parents)
586             wtimeout                window
587             wtouchln                window
588             wunctrl                 global (static data)
589             wvline                  window
590             wvline_set              window
591
592
593 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
594        These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
595
596
597 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
598        Both a macro and a function are provided for each name.
599
600
601 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
602        These  routines  are  specific  to ncurses.  They were not supported on
603        Version 7, BSD or System V implementations.  It is recommended that any
604        code   depending   on   ncurses   extensions   be   conditioned   using
605        NCURSES_VERSION.
606
607
608 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
609        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
610
611
612
613 ncurses 6.4                       2023-09-16                  <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
614 </PRE>
615 <div class="nav">
616 <ul>
617 <li><a href="#h2-NAME">NAME</a></li>
618 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
619 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
620 <ul>
621 <li><a href="#h3-USAGE">USAGE</a></li>
622 </ul>
623 </li>
624 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
625 <li><a href="#h2-NOTES">NOTES</a></li>
626 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
627 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
628 </ul>
629 </div>
630 </BODY>
631 </HTML>