* manager.c (__pthread_manager): Add noreturn
	attribute.
	(pthread_start_thread): Likewise, remove return statement.
	(pthread_start_thread_event): Likewise.
	Add noreturn attribute for pthread_handle_exit.
	* weaks.c: Add noreturn attribute for pthread_exit.
This commit is contained in:
Andreas Jaeger 2001-04-21 18:41:05 +00:00
parent e6dcf35202
commit 159a2e1a65
7 changed files with 29 additions and 11 deletions

View File

@ -1,5 +1,12 @@
2001-04-21 Andreas Jaeger <aj@suse.de>
* manager.c (__pthread_manager): Add noreturn
attribute.
(pthread_start_thread): Likewise, remove return statement.
(pthread_start_thread_event): Likewise.
Add noreturn attribute for pthread_handle_exit.
* weaks.c: Add noreturn attribute for pthread_exit.
* internals.h: Add __pthread_clock_gettime and
__pthread_clock_settime prototypes.

View File

@ -96,13 +96,16 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
int report_events,
td_thr_events_t *event_maskp);
static void pthread_handle_free(pthread_t th_id);
static void pthread_handle_exit(pthread_descr issuing_thread, int exitcode);
static void pthread_handle_exit(pthread_descr issuing_thread, int exitcode)
__attribute__ ((noreturn));
static void pthread_reap_children(void);
static void pthread_kill_all_threads(int sig, int main_thread_also);
/* The server thread managing requests for thread creation and termination */
int __pthread_manager(void *arg)
int
__attribute__ ((noreturn))
__pthread_manager(void *arg)
{
int reqfd = (int) (long int) arg;
struct pollfd ufd;
@ -220,7 +223,9 @@ int __pthread_manager_event(void *arg)
/* Process creation */
static int pthread_start_thread(void *arg)
static int
__attribute__ ((noreturn))
pthread_start_thread(void *arg)
{
pthread_descr self = (pthread_descr) arg;
struct pthread_request request;
@ -270,10 +275,11 @@ static int pthread_start_thread(void *arg)
p_start_args.arg));
/* Exit with the given return value */
__pthread_do_exit(outcome, CURRENT_STACK_FRAME);
return 0;
}
static int pthread_start_thread_event(void *arg)
static int
__attribute__ ((noreturn))
pthread_start_thread_event(void *arg)
{
pthread_descr self = (pthread_descr) arg;
@ -289,7 +295,7 @@ static int pthread_start_thread_event(void *arg)
__pthread_unlock (THREAD_GETMEM(self, p_lock));
/* Continue with the real function. */
return pthread_start_thread (arg);
pthread_start_thread (arg);
}
static int pthread_allocate_stack(const pthread_attr_t *attr,

View File

@ -1,5 +1,5 @@
/* The weak pthread functions for Linux.
Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -26,7 +26,8 @@
extern int __pthread_return_0 (void);
extern int __pthread_return_1 (void);
extern void __pthread_return_void (void);
extern void weak_function pthread_exit (void *__retval);
extern void weak_function pthread_exit (void *__retval)
__attribute__ ((noreturn));
/* Those are pthread functions which return 0 if successful. */
weak_alias (__pthread_return_0, BP_SYM (__libc_pthread_attr_init_2_1))

View File

@ -1,5 +1,5 @@
/* Standard debugging hooks for `malloc'.
Copyright (C) 1990-1997, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1990-1997, 1999, 2000, 2001 Free Software Foundation, Inc.
Written May 1989 by Mike Haertel.
This library is free software; you can redistribute it and/or
@ -270,7 +270,8 @@ reallochook (ptr, size, caller)
return (__ptr_t) (hdr + 1);
}
static void mabort __P ((enum mcheck_status status));
static void mabort __P ((enum mcheck_status status))
__attribute__ ((noreturn));
static void
mabort (status)
enum mcheck_status status;

View File

@ -1,5 +1,5 @@
/* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988-1994,96,97,98,99,2000 Free Software Foundation, Inc.
Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
@ -472,6 +472,7 @@ _obstack_memory_used (h)
#endif
static void
__attribute__ ((noreturn))
print_and_abort ()
{
fputs (_("memory exhausted"), stderr);

View File

@ -281,6 +281,7 @@ __gai_enqueue_request (struct gaicb *gaicbp)
static void *
__attribute__ ((noreturn))
handle_requests (void *arg)
{
struct requestlist *runp = (struct requestlist *) arg;

View File

@ -454,6 +454,7 @@ __aio_enqueue_request (aiocb_union *aiocbp, int operation)
static void *
__attribute__ ((noreturn))
handle_fildes_io (void *arg)
{
pthread_t self = pthread_self ();