2002-06-19  Steven Munroe  <sjmunroe@vnet.ibm.com>

	* Examples/ex9.c (main):  Use list of children and join them.
	(thread): Do not call exit.
This commit is contained in:
Ulrich Drepper 2002-06-30 04:04:20 +00:00
parent 8b8cc76fa4
commit 95fdc6a0f6
16 changed files with 134 additions and 41 deletions

View File

@ -1,3 +1,8 @@
2002-06-19 Steven Munroe <sjmunroe@vnet.ibm.com>
* Examples/ex9.c (main): Use list of children and join them.
(thread): Do not call exit.
2002-06-20 Ulrich Drepper <drepper@redhat.com> 2002-06-20 Ulrich Drepper <drepper@redhat.com>
* spinlock.c (wait_node_alloc): We cannot use compare-and-exchange. * spinlock.c (wait_node_alloc): We cannot use compare-and-exchange.

View File

@ -32,7 +32,8 @@ static pthread_barrier_t barrier;
int int
main (void) main (void)
{ {
pthread_t th; pthread_t th;
pthread_t thread_list[NUM_THREADS];
int i; int i;
if (pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1) != 0) if (pthread_barrier_init (&barrier, NULL, NUM_THREADS + 1) != 0)
@ -40,12 +41,17 @@ main (void)
for (i = 0; i < NUM_THREADS; i++) for (i = 0; i < NUM_THREADS; i++)
{ {
if (pthread_create (&th, NULL, thread, NULL) != 0) if (pthread_create (&thread_list[i], NULL, thread, NULL) != 0)
error (EXIT_FAILURE, 0, "cannot create thread"); error (EXIT_FAILURE, 0, "cannot create thread");
} }
(void) thread (NULL); (void) thread (NULL);
/* notreached */
for (i = 0; i < NUM_THREADS; i++)
{
pthread_join(thread_list[i], NULL);
}
return 0; return 0;
} }
@ -87,7 +93,7 @@ thread (void *arg)
printf ("%04d: last serial thread %lu terminating process\n", printf ("%04d: last serial thread %lu terminating process\n",
++linecount, (unsigned long) self); ++linecount, (unsigned long) self);
funlockfile (stdout); funlockfile (stdout);
exit (0); return;
} }
pthread_exit(NULL); pthread_exit(NULL);

View File

@ -1,5 +1,8 @@
2002-06-29 Ulrich Drepper <drepper@redhat.com> 2002-06-29 Ulrich Drepper <drepper@redhat.com>
* locales/mt_MT: Add locale-specific collation info.
Patch by Ramon Casha <ramon.casha@linux.org.mt> [PR libc/3701].
* locales/en_AU: Add am/pm support. * locales/en_AU: Add am/pm support.
Patch partly by maffew@cat.org.au [PR libc/3911]. Patch partly by maffew@cat.org.au [PR libc/3911].

View File

@ -3,6 +3,9 @@ escape_char /
% Maltese language locale for Malta. % Maltese language locale for Malta.
% Contributed by Kentaroh Noji <knoji@jp.ibm.com> and % Contributed by Kentaroh Noji <knoji@jp.ibm.com> and
% Tetsuji Orita <orita@jp.ibm.com>. % Tetsuji Orita <orita@jp.ibm.com>.
%
% collating order changes by Ramon Casha <ramon.casha@linux.org.mt>
% and Pablo Saratxaga <pablo@mandrakesoft.com> -- 2002-05-08
LC_IDENTIFICATION LC_IDENTIFICATION
title "Maltese language locale for Malta" title "Maltese language locale for Malta"
@ -37,9 +40,85 @@ END LC_CTYPE
LC_COLLATE LC_COLLATE
% a b c c. d e f g. g gh/ h h/ i ie j k l m n o p q r s t u v w x y z. z
% Copy the template from ISO/IEC 14651 % Copy the template from ISO/IEC 14651
copy "iso14651_t1" copy "iso14651_t1"
collating-symbol <c.>
collating-symbol <g.>
collating-symbol <h->
collating-symbol <z.>
collating-symbol <g-h--mt>
collating-element <G-H-> from "<U0047><U0126>"
collating-element <g-h-> from "<U0067><U0127>"
collating-element <G-h-> from "<U0047><U0127>"
collating-element <g-H-> from "<U0067><U0126>"
collating-symbol <i-e-mt>
collating-element <I-E> from "<U0049><U0045>"
collating-element <i-e> from "<U0069><U0065>"
collating-element <I-e> from "<U0049><U0065>"
collating-element <i-E> from "<U0069><U0045>"
collating-symbol <CAP-MIN>
collating-symbol <MIN-CAP>
reorder-after <MIN>
<MIN-CAP>
reorder-after <CAP>
<CAP-MIN>
reorder-after <c>
<c.>
reorder-after <f>
<g.>
reorder-after <g>
<g-h--mt>
reorder-after <h>
<h->
reorder-after <i>
<i-e-mt>
reorder-after <y>
<z.>
reorder-after <U0063>
<U010B> <c.>;<PCT>;<MIN>;IGNORE
reorder-after <U0043>
<U010A> <c.>;<PCT>;<CAP>;IGNORE
reorder-after <U0066>
<U0121> <g.>;<PCT>;<MIN>;IGNORE
reorder-after <U0046>
<U0120> <g.>;<PCT>;<CAP>;IGNORE
reorder-after <U0067>
<g-h-> <g-h--mt>;<PCL>;<MIN>;IGNORE
<g-H-> <g-h--mt>;<PCL>;<MIN-CAP>;IGNORE
reorder-after <U0047>
<G-H-> <g-h--mt>;<PCL>;<CAP>;IGNORE
<G-h-> <g-h--mt>;<PCL>;<CAP-MIN>;IGNORE
reorder-after <U0068>
<U0127> <h->;<OBL>;<MIN>;IGNORE
reorder-after <U0048>
<U0126> <h->;<OBL>;<CAP>;IGNORE
reorder-after <U0069>
<i-e> <i-e-mt>;<PCL>;<MIN>;IGNORE
<i-E> <i-e-mt>;<PCL>;<MIN-CAP>;IGNORE
reorder-after <U0049>
<I-E> <i-e-mt>;<PCL>;<CAP>;IGNORE
<I-e> <i-e-mt>;<PCL>;<CAP-MIN>;IGNORE
reorder-after <U0079>
<U017C> <z.>;<PCT>;<MIN>;IGNORE
reorder-after <U0059>
<U017B> <z.>;<PCT>;<CAP>;IGNORE
reorder-end
END LC_COLLATE END LC_COLLATE
LC_MONETARY LC_MONETARY

View File

@ -467,7 +467,7 @@ Here's an example that uses both, for different args:
@smallexample @smallexample
... @dots{}
case ARGP_KEY_ARG: case ARGP_KEY_ARG:
if (@var{state}->arg_num == 0) if (@var{state}->arg_num == 0)
/* First argument */ /* First argument */

View File

@ -755,9 +755,9 @@ is a simple example of the way to use @code{fetestexcept}:
feclearexcept (FE_ALL_EXCEPT); feclearexcept (FE_ALL_EXCEPT);
f = compute (); f = compute ();
raised = fetestexcept (FE_OVERFLOW | FE_INVALID); raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
if (raised & FE_OVERFLOW) @{ /* ... */ @} if (raised & FE_OVERFLOW) @{ /* @dots{} */ @}
if (raised & FE_INVALID) @{ /* ... */ @} if (raised & FE_INVALID) @{ /* @dots{} */ @}
/* ... */ /* @dots{} */
@} @}
@end smallexample @end smallexample
@ -2396,8 +2396,8 @@ or to the largest representable value if the floating-point format
doesn't support infinities. You can prepend a @code{"+"} or @code{"-"} doesn't support infinities. You can prepend a @code{"+"} or @code{"-"}
to specify the sign. Case is ignored when scanning these strings. to specify the sign. Case is ignored when scanning these strings.
The strings @code{"nan"} and @code{"nan(@var{chars...})"} are converted The strings @code{"nan"} and @code{"nan(@var{chars@dots{}})"} are converted
to NaN. Again, case is ignored. If @var{chars...} are provided, they to NaN. Again, case is ignored. If @var{chars@dots{}} are provided, they
are used in some unspecified fashion to select a particular are used in some unspecified fashion to select a particular
representation of NaN (there can be several). representation of NaN (there can be several).

View File

@ -177,9 +177,9 @@ code like
@smallexample @smallexample
@{ @{
int c; int c;
... @dots{}
while ((c = getc (fp)) < 0) while ((c = getc (fp)) < 0)
... @dots{}
@} @}
@end smallexample @end smallexample
@ -190,9 +190,9 @@ are used:
@smallexample @smallexample
@{ @{
wint_t c; wint_t c;
... @dots{}
while ((c = wgetc (fp)) != WEOF) while ((c = wgetc (fp)) != WEOF)
... @dots{}
@} @}
@end smallexample @end smallexample
@ -437,7 +437,7 @@ problem:
while (! feof (fp)) while (! feof (fp))
@{ @{
fread (&buf[len], 1, MB_CUR_MAX - len, fp); fread (&buf[len], 1, MB_CUR_MAX - len, fp);
/* @r{... process} buf */ /* @r{@dots{} process} buf */
len -= used; len -= used;
@} @}
@} @}
@ -491,7 +491,7 @@ clearing the whole variable with code such as follows:
mbstate_t state; mbstate_t state;
memset (&state, '\0', sizeof (state)); memset (&state, '\0', sizeof (state));
/* @r{from now on @var{state} can be used.} */ /* @r{from now on @var{state} can be used.} */
... @dots{}
@} @}
@end smallexample @end smallexample
@ -523,7 +523,7 @@ Code using @code{mbsinit} often looks similar to this:
mbstate_t state; mbstate_t state;
memset (&state, '\0', sizeof (state)); memset (&state, '\0', sizeof (state));
/* @r{Use @var{state}.} */ /* @r{Use @var{state}.} */
... @dots{}
if (! mbsinit (&state)) if (! mbsinit (&state))
@{ @{
/* @r{Emit code to return to initial state.} */ /* @r{Emit code to return to initial state.} */
@ -531,7 +531,7 @@ Code using @code{mbsinit} often looks similar to this:
const wchar_t *srcp = empty; const wchar_t *srcp = empty;
wcsrtombs (outbuf, &srcp, outbuflen, &state); wcsrtombs (outbuf, &srcp, outbuflen, &state);
@} @}
... @dots{}
@} @}
@end smallexample @end smallexample
@ -911,7 +911,7 @@ this solution is unsuitable, there is a very slow but more accurate
solution. solution.
@smallexample @smallexample
... @dots{}
if (len < MB_CUR_LEN) if (len < MB_CUR_LEN)
@{ @{
mbstate_t temp_state; mbstate_t temp_state;
@ -925,7 +925,7 @@ solution.
return NULL; return NULL;
@} @}
@} @}
... @dots{}
@end smallexample @end smallexample
Here we perform the conversion that might overflow the buffer so that Here we perform the conversion that might overflow the buffer so that
@ -2395,7 +2395,7 @@ The @code{int __internal_use} element is mostly used together with
if (!data->__internal_use if (!data->__internal_use
&& data->__invocation_counter == 0) && data->__invocation_counter == 0)
/* @r{Emit prolog.} */ /* @r{Emit prolog.} */
... @dots{}
@end smallexample @end smallexample
This element must never be modified. This element must never be modified.
@ -2708,7 +2708,7 @@ gconv (struct __gconv_step *step, struct __gconv_step_data *data,
@{ @{
struct __gconv_step *next_step = step + 1; struct __gconv_step *next_step = step + 1;
struct __gconv_step_data *next_data = data + 1; struct __gconv_step_data *next_data = data + 1;
... @dots{}
@end smallexample @end smallexample
The @code{next_step} pointer references the next step information and The @code{next_step} pointer references the next step information and

View File

@ -625,7 +625,7 @@ is_in_class (int c, const char *class)
return isalpha (c); return isalpha (c);
if (strcmp (class, "cntrl") == 0) if (strcmp (class, "cntrl") == 0)
return iscntrl (c); return iscntrl (c);
... @dots{}
return 0; return 0;
@} @}
@end smallexample @end smallexample

View File

@ -453,7 +453,7 @@ Code to call @code{readdir_r} could look like this:
@} u; @} u;
if (readdir_r (dir, &u.d, &res) == 0) if (readdir_r (dir, &u.d, &res) == 0)
... @dots{}
@end smallexample @end smallexample
@end deftypefun @end deftypefun
@ -1501,7 +1501,7 @@ modify the attributes of a file.
and what their values mean. and what their values mean.
* Reading Attributes:: How to read the attributes of a file. * Reading Attributes:: How to read the attributes of a file.
* Testing File Type:: Distinguishing ordinary files, * Testing File Type:: Distinguishing ordinary files,
directories, links... directories, links@dots{}
* File Owner:: How ownership for new files is determined, * File Owner:: How ownership for new files is determined,
and how to change it. and how to change it.
* Permission Bits:: How information about a file's access * Permission Bits:: How information about a file's access

View File

@ -45,7 +45,7 @@ GNU Make, and possibly others. @xref{Tools for Compilation}, below.
GNU libc can be compiled in the source directory, but we strongly advise GNU libc can be compiled in the source directory, but we strongly advise
building it in a separate build directory. For example, if you have building it in a separate build directory. For example, if you have
unpacked unpacked
the glibc sources in @file{/src/gnu/glibc-2.2.0}, create a directory the glibc sources in @file{/src/gnu/glibc-2.3}, create a directory
@file{/src/gnu/glibc-build} to put the object files in. This allows @file{/src/gnu/glibc-build} to put the object files in. This allows
removing the whole build directory in case an error occurs, which is the removing the whole build directory in case an error occurs, which is the
safest way to get a fresh start and should always be done. safest way to get a fresh start and should always be done.
@ -54,7 +54,7 @@ From your object directory, run the shell script @file{configure} located
at the top level of the source tree. In the scenario above, you'd type at the top level of the source tree. In the scenario above, you'd type
@smallexample @smallexample
$ ../glibc-2.2.0/configure @var{args...} $ ../glibc-2.3/configure @var{args@dots{}}
@end smallexample @end smallexample
Please note that even if you're building in a separate build directory, Please note that even if you're building in a separate build directory,
@ -64,9 +64,9 @@ directory, especially some files in the manual subdirectory.
@noindent @noindent
@code{configure} takes many options, but you can get away with knowing @code{configure} takes many options, but you can get away with knowing
only two: @samp{--prefix} and @samp{--enable-add-ons}. The only two: @samp{--prefix} and @samp{--enable-add-ons}. The
@code{--prefix} option tells @code{configure} where you want glibc @code{--prefix} option tells @code{configure} where you want glibc
installed. This defaults to @file{/usr/local}. The installed. This defaults to @file{/usr/local}. The
@samp{--enable-add-ons} option tells @code{configure} to use all the @samp{--enable-add-ons} option tells @code{configure} to use all the
add-on bundles it finds in the source directory. Since important add-on bundles it finds in the source directory. Since important
functionality is provided in add-ons, you should always specify this functionality is provided in add-ons, you should always specify this
option. option.

View File

@ -1201,7 +1201,7 @@ least also in the IBM AIX library.
This function would normally be used like this: This function would normally be used like this:
@smallexample @smallexample
... @dots{}
/* @r{Use a safe default.} */ /* @r{Use a safe default.} */
_Bool doit = false; _Bool doit = false;

View File

@ -751,7 +751,7 @@ End with a line saying just "end".
>call mcheck(0) >call mcheck(0)
>continue >continue
>end >end
(gdb) ... (gdb) @dots{}
@end smallexample @end smallexample
This will however only work if no initialization function of any object This will however only work if no initialization function of any object
@ -1003,7 +1003,7 @@ my_free_hook (void *ptr, const void *caller)
main () main ()
@{ @{
... @dots{}
@} @}
@end smallexample @end smallexample

View File

@ -546,7 +546,7 @@ any one time is equal to the number of CPUs, you can easily extrapolate
the information. the information.
The functions described in this section are all defined by the POSIX.1 The functions described in this section are all defined by the POSIX.1
and POSIX.1b standards (the @code{sched...} functions are POSIX.1b). and POSIX.1b standards (the @code{sched@dots{}} functions are POSIX.1b).
However, POSIX does not define any semantics for the values that these However, POSIX does not define any semantics for the values that these
functions get and set. In this chapter, the semantics are based on the functions get and set. In this chapter, the semantics are based on the
Linux kernel's implementation of the POSIX standard. As you will see, Linux kernel's implementation of the POSIX standard. As you will see,
@ -656,7 +656,7 @@ the high priority process group. All the priority in the world won't
stop an interrupt handler from running and delivering a signal to the stop an interrupt handler from running and delivering a signal to the
process if you hit Control-C. process if you hit Control-C.
Some systems use absolute priority as a means of allocating a fixed Some systems use absolute priority as a means of allocating a fixed
percentage of CPU time to a process. To do this, a super high priority percentage of CPU time to a process. To do this, a super high priority
privileged process constantly monitors the process' CPU usage and raises privileged process constantly monitors the process' CPU usage and raises
its absolute priority when the process isn't getting its entitled share its absolute priority when the process isn't getting its entitled share

View File

@ -657,7 +657,7 @@ Example:
#include <sys/syscall.h> #include <sys/syscall.h>
#include <errno.h> #include <errno.h>
... @dots{}
int rc; int rc;
@ -677,7 +677,7 @@ following preferable code:
#include <sys/stat.h> #include <sys/stat.h>
#include <errno.h> #include <errno.h>
... @dots{}
int rc; int rc;

View File

@ -497,7 +497,7 @@ sometimes not possible):
@smallexample @smallexample
FILE *fp; FILE *fp;
@{ @{
... @dots{}
flockfile (fp); flockfile (fp);
fputs ("This is test number ", fp); fputs ("This is test number ", fp);
fprintf (fp, "%d\n", test); fprintf (fp, "%d\n", test);
@ -2450,7 +2450,7 @@ For example:
@smallexample @smallexample
#define myprintf(a, b, c, d, e, rest...) \ #define myprintf(a, b, c, d, e, rest...) \
printf (mytemplate , ## rest...) printf (mytemplate , ## rest)
@end smallexample @end smallexample
@noindent @noindent
@ -5295,7 +5295,7 @@ the following in the environment before calling the @code{fmtmsg} function
the first time: the first time:
@smallexample @smallexample
MSGVERB=@var{keyword}[:@var{keyword}[:...]] MSGVERB=@var{keyword}[:@var{keyword}[:@dots{}]]
@end smallexample @end smallexample
Valid @var{keyword}s are @code{label}, @code{severity}, @code{text}, Valid @var{keyword}s are @code{label}, @code{severity}, @code{text},
@ -5314,7 +5314,7 @@ described above are available. Any other numeric value would make
If the user puts @code{SEV_LEVEL} with a format like If the user puts @code{SEV_LEVEL} with a format like
@smallexample @smallexample
SEV_LEVEL=[@var{description}[:@var{description}[:...]]] SEV_LEVEL=[@var{description}[:@var{description}[:@dots{}]]]
@end smallexample @end smallexample
@noindent @noindent

View File

@ -1435,7 +1435,7 @@ character, not the number of bytes.
Also the format string @var{template} is a wide character string. Since Also the format string @var{template} is a wide character string. Since
all characters needed to specify the format string are in the basic all characters needed to specify the format string are in the basic
character set it is portably possible to write format strings in the C character set it is portably possible to write format strings in the C
source code using the @code{L"..."} notation. The parameter source code using the @code{L"@dots{}"} notation. The parameter
@var{brokentime} has the same meaning as in the @code{strftime} call. @var{brokentime} has the same meaning as in the @code{strftime} call.
The @code{wcsftime} function supports the same flags, modifiers, and The @code{wcsftime} function supports the same flags, modifiers, and