Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Update.
	* Versions.def: Add libanl definition.
	* shlig-versions: Add entry for libanl.
	* resolv/Makefile (distribute): Add gai_misc.h and ga_test.c.
	(routines): Add gai_sigqueue.
	(extra-libs): Add libanl.
	(libanl-routines): New variable.
	Add rules to build libanl and ga_test.
	* resolv/Versions [libc] (GLIBC_2.2.3): Add __gai_sigqueue.
	[libanl]: New library.
	* resolv/netdb.h: Add definitions for libanl.
	* resolv/getaddrinfo_a.c: New file.
	* resolv/gai_cancel.c: New file.
	* resolv/gai_error.c: New file.
	* resolv/gai_misc.c: New file.
	* resolv/gai_misc.h: New file.
	* resolv/gai_notify.c: New file.
	* resolv/gai_suspend.c: New file.
	* resolv/ga_test.c: New file.
	* sysdeps/generic/gai_sigqueue.c: New file.
	* sysdeps/unix/sysv/linux/gai_sigqueue.c: New file.
	* sysdeps/generic/bits/siginfo.h: Allow __need_sigevent_t being defined
	and provide only that definition.
	* sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/bits/siginfo.h: Likewise.

	* rt/aio_misc.c: Fix typos in comments.
	* rt/lio_listio.c: Pretty printing.  Little optimization in request
	list handling.

	* elf/rtld.c: Remove commented out code.
  • Loading branch information
Ulrich Drepper committed Mar 3, 2001
1 parent 28b2057 commit 2ace572
Show file tree
Hide file tree
Showing 28 changed files with 1,465 additions and 71 deletions.
35 changes: 35 additions & 0 deletions ChangeLog
@@ -1,5 +1,40 @@
2001-03-03 Ulrich Drepper <drepper@redhat.com>

* Versions.def: Add libanl definition.
* shlig-versions: Add entry for libanl.
* resolv/Makefile (distribute): Add gai_misc.h and ga_test.c.
(routines): Add gai_sigqueue.
(extra-libs): Add libanl.
(libanl-routines): New variable.
Add rules to build libanl and ga_test.
* resolv/Versions [libc] (GLIBC_2.2.3): Add __gai_sigqueue.
[libanl]: New library.
* resolv/netdb.h: Add definitions for libanl.
* resolv/getaddrinfo_a.c: New file.
* resolv/gai_cancel.c: New file.
* resolv/gai_error.c: New file.
* resolv/gai_misc.c: New file.
* resolv/gai_misc.h: New file.
* resolv/gai_notify.c: New file.
* resolv/gai_suspend.c: New file.
* resolv/ga_test.c: New file.
* sysdeps/generic/gai_sigqueue.c: New file.
* sysdeps/unix/sysv/linux/gai_sigqueue.c: New file.
* sysdeps/generic/bits/siginfo.h: Allow __need_sigevent_t being defined
and provide only that definition.
* sysdeps/unix/sysv/linux/alpha/bits/siginfo.h: Likewise.
* sysdeps/unix/sysv/linux/bits/siginfo.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/siginfo.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/siginfo.h: Likewise.

* rt/aio_misc.c: Fix typos in comments.
* rt/lio_listio.c: Pretty printing. Little optimization in request
list handling.

* elf/rtld.c: Remove commented out code.

* sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC):
Update for real 2.4 kernels.

Expand Down
12 changes: 11 additions & 1 deletion NEWS
@@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 2001-2-9
GNU C Library NEWS -- history of user-visible changes. 2001-3-3

Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc.
See the end for copying conditions.
Expand All @@ -7,6 +7,16 @@ Please send GNU C library bug reports using the `glibcbug' script to
<bugs@gnu.org>. Questions and suggestions should be send to
<bug-glibc@gnu.org>.

Version 2.2.3

* Intel's IA-64 math library is large integrated. It provides fast and
accurate implementatations for most basic and standard math functions
in float, double, and long double format.

* An asynchronous name lookup library was added. The interface is designed
after POSIX AIO. The proposal was circulated beforehand to get comments.
No negative ones came in. Implemented by Ulrich Drepper.

Version 2.2.2

* Lots of headers were cleaned up. Using the tool in the conform/ subdir
Expand Down
3 changes: 3 additions & 0 deletions Versions.def
Expand Up @@ -95,3 +95,6 @@ ld {
libthread_db {
GLIBC_2.1.3
}
libanl {
GLIBC_2.2.3
}
20 changes: 14 additions & 6 deletions bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Stub version.
Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 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
Expand All @@ -17,20 +17,27 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */

#if !defined _SIGNAL_H && !defined __need_siginfo_t
#if !defined _SIGNAL_H && !defined __need_siginfo_t \
&& !defined __need_sigevent_t
# error "Never include this file directly. Use <signal.h> instead"
#endif

#if (!defined __have_siginfo_t \
&& (defined _SIGNAL_H || defined __need_siginfo_t))
# define __have_siginfo_t 1
#if (!defined __have_sigval_t \
&& (defined _SIGNAL_H || defined __need_siginfo_t \
|| defined __need_sigevent_t))
# define __have_sigval_t 1

/* Type for data associated with a signal. */
typedef union sigval
{
int sival_int;
void *sival_ptr;
} sigval_t;
#endif

#if (!defined __have_siginfo_t \
&& (defined _SIGNAL_H || defined __need_siginfo_t))
# define __have_siginfo_t 1

typedef struct siginfo
{
Expand Down Expand Up @@ -173,7 +180,8 @@ enum
#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */


#if defined _SIGNAL_H && !defined __have_sigevent_t
#if (defined _SIGNAL_H || defined __need_sigevent_t) \
&& !defined __have_sigevent_t
# define __have_sigevent_t 1

/* Structure to transport application-defined values with signals. */
Expand Down
3 changes: 1 addition & 2 deletions elf/rtld.c
Expand Up @@ -251,8 +251,7 @@ _dl_start_final (void *arg, struct link_map *bootstrap_map_p,
}
#endif

if (//__builtin_expect (_dl_debug_statistics, 0))
__builtin_expect (_dl_debug_mask & DL_DEBUG_STATISTICS, 0))
if (__builtin_expect (_dl_debug_mask & DL_DEBUG_STATISTICS, 0))
print_statistics ();

return *start_addr;
Expand Down
20 changes: 16 additions & 4 deletions resolv/Makefile
@@ -1,4 +1,4 @@
# Copyright (C) 1994,95,96,97,98,99,2000 Free Software Foundation, Inc.
# Copyright (C) 1994,95,96,97,98,99,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
Expand Down Expand Up @@ -26,23 +26,26 @@ headers := resolv.h \
arpa/nameser.h arpa/nameser_compat.h \
sys/bitypes.h
distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h \
Banner res_hconf.h res_debug.h README
Banner res_hconf.h res_debug.h README gai_misc.h ga_test.c

routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init \
res_hconf res_libc
res_hconf res_libc gai_sigqueue

tests = tst-aton

include ../Makeconfig

extra-libs := libresolv libnss_dns
extra-libs := libresolv libanl libnss_dns
extra-libs-others = $(extra-libs)
libresolv-routines := gethnamaddr res_comp res_debug \
res_data res_mkquery res_query res_send \
inet_net_ntop inet_net_pton inet_neta base64 \
ns_parse ns_name ns_netint ns_ttl ns_print \
ns_samedomain

libanl-routines := gai_cancel gai_error gai_misc gai_notify gai_suspend \
getaddrinfo_a

subdir-dirs = nss_dns
vpath %.c nss_dns

Expand All @@ -51,6 +54,10 @@ ifneq ($(build-static-nss),yes)
libnss_dns-inhibit-o = $(filter-out .os,$(object-suffixes))
endif

ifeq (yes,$(build-shared))
tests: $(objpfx)ga_test
endif

include ../Rules

CPPFLAGS += -Dgethostbyname=res_gethostbyname \
Expand All @@ -69,3 +76,8 @@ $(objpfx)libresolv.so: $(common-objpfx)libc.so

# The DNS NSS modules needs the resolver.
$(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so

# The asynchronous name lookup code needs the thread library.
$(objpfx)libanl.so: $(common-objpfx)libc.so $(shared-thread-library)

$(objpfx)ga_test: $(objpfx)libanl.so $(shared-thread-library)
9 changes: 9 additions & 0 deletions resolv/Versions
Expand Up @@ -22,6 +22,9 @@ libc {
# r*
__res_state; __res_init; __res_nclose; __res_ninit; _res_hconf;
}
GLIBC_2.2.3 {
__gai_sigqueue;
}
}

libresolv {
Expand Down Expand Up @@ -66,3 +69,9 @@ libnss_dns {
_nss_dns_getnetbyname_r;
}
}

libanl {
GLIBC_2.2.3 {
getaddrinfo_a; gai_cancel; gai_error; gai_suspend;
}
}
99 changes: 99 additions & 0 deletions resolv/ga_test.c
@@ -0,0 +1,99 @@
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>


int
main (void)
{
#define N 10
struct gaicb reqmem[N];
struct gaicb *req[N];
int n;

for (n = 0; n < N; ++n)
{
asprintf (&reqmem[n].ar_name, "test%d.test.redhat.com", 140 + n);
reqmem[n].ar_service = NULL;
reqmem[n].ar_request = NULL;
reqmem[n].ar_result = NULL;
req[n] = &reqmem[n];
}

if (getaddrinfo_a (GAI_NOWAIT, req, N, NULL) != 0)
{
puts ("queue call failed");
exit (1);
}
else
puts ("queue call successful");

while (1)
{
int any = 0;

for (n = 0; n < N; ++n)
if (req[n] != NULL && gai_error (req[n]) != EAI_INPROGRESS)
{
if (gai_error (req[n]) == 0)
{
struct addrinfo *runp = req[n]->ar_result;

while (runp != NULL)
{
switch (runp->ai_family)
{
case PF_INET:
{
struct sockaddr_in *sinp;

sinp = (struct sockaddr_in *) runp->ai_addr;
printf ("%2d: %s = %s\n", n,
req[n]->ar_name, inet_ntoa (sinp->sin_addr));
}
break;
default:
printf ("%2d: family %d\n", n, runp->ai_family);
break;
}
runp = runp->ai_next;
}
}
else
printf ("error for %d: %s\n", n,
gai_strerror (gai_error (req[n])));
req[n] = NULL;
break;
}
else if (req[n] != NULL)
any = 1;

if (n == N)
{
if (any)
gai_suspend (req, N, NULL);
else
break;
}
}

__libc_write(1,"got all\n", 8);

for (n = 0; n < N; ++n)
if (gai_error (&reqmem[n]) == 0)
{
struct addrinfo *runp = reqmem[n].ar_result;

while (runp != NULL)
{
struct addrinfo *oldp = runp;
runp = runp->ai_next;
freeaddrinfo (oldp);
}
}

return 0;
}
48 changes: 48 additions & 0 deletions resolv/gai_cancel.c
@@ -0,0 +1,48 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */

#include <netdb.h>
#include <pthread.h>

#include "gai_misc.h"


int
gai_cancel (struct gaicb *gaicbp)
{
int result = 0;
int status;

/* Request the mutex. */
pthread_mutex_lock (&__gai_requests_mutex);

/* Find the request among those queued but not yet running. */
status = __gai_remove_request (gaicbp);
if (status == 0)
result = EAI_CANCELED;
else if (status > 0)
result = EAI_NOTCANCELED;
else
result = EAI_ALLDONE;

/* Release the mutex. */
pthread_mutex_unlock (&__gai_requests_mutex);

return result;
}
28 changes: 28 additions & 0 deletions resolv/gai_error.c
@@ -0,0 +1,28 @@
/* Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */

#include <netdb.h>

#include "gai_misc.h"

int
gai_error (struct gaicb *req)
{
return req->__return;
}

0 comments on commit 2ace572

Please sign in to comment.