about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--PROJECTS24
-rw-r--r--include/sys/sysinfo.h4
-rw-r--r--manual/filesys.texi70
-rw-r--r--manual/resource.texi19
-rw-r--r--manual/sysinfo.texi21
-rw-r--r--manual/syslog.texi50
-rw-r--r--sysdeps/generic/getsysstats.c6
-rw-r--r--sysdeps/generic/sys/sysinfo.h8
-rw-r--r--sysdeps/unix/sysv/linux/getsysstats.c14
-rw-r--r--sysdeps/unix/sysv/linux/sys/sysinfo.h8
11 files changed, 142 insertions, 89 deletions
diff --git a/ChangeLog b/ChangeLog
index 1fd695dbfa..67f9e59e9a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2001-02-11  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/generic/getsysstat.c: Change return value of get_phys_pages
+	and get_avphys_page to long int.
+	* sysdeps/unix/sysv/linux/getsysstat.c: Likewise.
+	* include/sys/sysinfo.h: Likewise.
+	* sysdeps/generic/sys/sysinfo.h: Likewise.
+	* sysdeps/unix/sysv/linux/sys/sysinfo.h: Likewise.
+
 	* sysdeps/unix/sysv/linux/getloadavg.c (getloadavg): Fail if we
 	cannot return as many values as the user asked for.
 
diff --git a/PROJECTS b/PROJECTS
index 19694637c2..3898571fe7 100644
--- a/PROJECTS
+++ b/PROJECTS
@@ -1,6 +1,6 @@
 Open jobs for finishing GNU libc:
 ---------------------------------
-Status: December 1998
+Status: February 2001
 
 If you have time and talent to take over any of the jobs below please
 contact <bug-glibc@gnu.org>.
@@ -77,6 +77,9 @@ contact <bug-glibc@gnu.org>.
 
      It is planned to do a complete rewrite.
 
+***  We have no multibyte character support.  But a rewrite is still
+     necessary.
+
 
 [11] Write access function for netmasks, bootparams, and automount
      databases for nss_files and nss_db module.
@@ -84,24 +87,20 @@ contact <bug-glibc@gnu.org>.
      hard and not all services must be supported at once.
 
 
-[14] We need to write a library for on-the-fly transformation of streams
-     of text.  In fact, this would be a recode-library (you know, GNU recode).
-     This is needed in several places in the GNU libc and I already have
-     rather concrete plans but so far no possibility to start this.
-
-***  The library is available, now it remains to be used in the streams.
-
-
 [15] Cleaning up the header files.  Ideally, each header style should
      follow the "good examples".  Each variable and function should have
      a short description of the function and its parameters.  The prototypes
      should always contain variable names which can help to identify their
      meaning; better than
 
-		int foo __P ((int, int, int, int));
+		int foo (int, int, int, int);
 
      Blargh!
 
+***  The conformtest.pl tool helps cleaning the namespace.  As far as
+     known the prototypes all contain parameter names.  But maybe some
+     comments can be improved.
+
 
 [16] The libio stream file functions should be extended in a way to use
      mmap to map the file and use it as the buffer to user sees.  For
@@ -194,7 +193,4 @@ contact <bug-glibc@gnu.org>.
      user should be preferred even if the last user spent more time.
 
 
-[26] Improve the AIO implementation so that threads do not immediately
-     terminate if no more requests are available.  Let them sleep for a
-     while and wake them up on demand.  If after a while no request arrived
-     they really can die.
+[26] ...done
diff --git a/include/sys/sysinfo.h b/include/sys/sysinfo.h
index 69e904523b..e126bcb0e9 100644
--- a/include/sys/sysinfo.h
+++ b/include/sys/sysinfo.h
@@ -10,9 +10,9 @@ extern int __get_nprocs_conf (void);
 extern int __get_nprocs (void);
 
 /* Return number of physical pages of memory in the system.  */
-extern int __get_phys_pages (void);
+extern long int __get_phys_pages (void);
 
 /* Return number of available physical pages of memory in the system.  */
-extern int __get_avphys_pages (void);
+extern long int __get_avphys_pages (void);
 
 #endif /* sys/sysinfo.h */
diff --git a/manual/filesys.texi b/manual/filesys.texi
index c550d72f1b..84c9f6b8a3 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -140,6 +140,34 @@ syntax errors (@pxref{File Name Errors}), plus @code{ENOTDIR} if the
 file @var{filename} is not a directory.
 @end deftypefun
 
+@comment unistd.h
+@comment XPG
+@deftypefun int fchdir (int @var{filedes})
+This function is used to set the process's working directory to
+directory associated with the file descriptor @var{filedes}.
+
+The normal, successful return value from @code{fchdir} is @code{0}.  A
+value of @code{-1} is returned to indicate an error.  The following
+@code{errno} error conditions are defined for this function:
+
+@table @code
+@item EACCES
+Read permission is denied for the directory named by @code{dirname}.
+
+@item EBADF
+The @var{filedes} argument is not a valid file descriptor.
+
+@item ENOTDIR
+The file descriptor @var{filedes} is not associated with a directory.
+
+@item EINTR
+The function call was interrupt by a signal.
+
+@item EIO
+An I/O error occurred.
+@end table
+@end deftypefun
+
 
 @node Accessing Directories
 @section Accessing Directories
@@ -206,7 +234,7 @@ type of the appropriate size
 This is the type of the file, possibly unknown.  The following constants
 are defined for its value:
 
-@table @code
+@vtable @code
 @item DT_UNKNOWN
 The type is unknown.  On some systems this is the only value returned.
 
@@ -227,24 +255,34 @@ A character device.
 
 @item DT_BLK
 A block device.
-@end table
+@end vtable
 
-This member is a BSD extension.  On systems where it is used, it
+This member is a BSD extension.  The symbol @code{_DIRENT_HAVE_D_TYPE}
+is defined if this member is available.  On systems where it is used, it
 corresponds to the file type bits in the @code{st_mode} member of
-@code{struct statbuf}.  On other systems it will always be DT_UNKNOWN.
-These two macros convert between @code{d_type} values and @code{st_mode}
-values:
+@code{struct statbuf}.  If the value cannot be determine the member
+value is DT_UNKNOWN.  These two macros convert between @code{d_type}
+values and @code{st_mode} values:
 
+@comment dirent.h
+@comment BSD
 @deftypefun int IFTODT (mode_t @var{mode})
 This returns the @code{d_type} value corresponding to @var{mode}.
 @end deftypefun
 
+@comment dirent.h
+@comment BSD
 @deftypefun mode_t DTTOIF (int @var{dtype})
 This returns the @code{st_mode} value corresponding to @var{dtype}.
 @end deftypefun
 @end table
 
-This structure may contain additional members in the future.
+This structure may contain additional members in the future.  Their
+availability is always announced in the compilation environment by a
+macro names @code{_DIRENT_HAVE_D_xxx} where @code{xxx} is replaced by
+the name of the new member.  For instance, the member @code{d_reclen}
+available on some systems is announced through the macro
+@code{_DIRENT_HAVE_D_RECLEN}.
 
 When a file has multiple names, each name has its own directory entry.
 The only way you can tell that the directory entries belong to a
@@ -304,6 +342,24 @@ and the @code{opendir} function in terms of the @code{open} function.
 file descriptors are closed on @code{exec} (@pxref{Executing a File}).
 @end deftypefun
 
+In some situations it can be desirable to get hold of the file
+descriptor which is created by the @code{opendir} call.  For instance,
+to switch the current working directory to the directory just read the
+@code{fchdir} function could be used.  Historically the @code{DIR} type
+was exposed and programs could access the fields.  This does not happen
+in the GNU C library.  Instead a separate function is provided to allow
+access.
+
+@comment dirent.h
+@comment GNU
+@deftypefun int dirfd (DIR *@var{dirstream})
+The function @code{dirfd} returns the file descriptor associated with
+the directory stream @var{dirstream}.  This descriptor can be used until
+the directory is closed with @code{closedir}.  If the directory stream
+implementation is not using file descriptors the return value is
+@code{-1}.
+@end deftypefun
+
 @node Reading/Closing Directory
 @subsection Reading and Closing a Directory Stream
 
diff --git a/manual/resource.texi b/manual/resource.texi
index 48e0ac0b72..9fc8b6494b 100644
--- a/manual/resource.texi
+++ b/manual/resource.texi
@@ -1401,3 +1401,22 @@ processors and so the call
 @noindent
 returns the number of processors which are currently inline (i.e.,
 available).
+
+@cindex load average
+Before starting more threads it should be checked whether the processors
+are not already overused.  Unix systems calculate something called the
+@dfn{load average}.  This is a number indicating how many processes were
+running.  This number is average over different periods of times
+(normally 1, 5, and 15 minutes).
+
+@comment stdlib.h
+@comment BSD
+@deftypefun int getloadavg (double @var{loadavg}[], int @var{nelem})
+This function gets the 1, 5 and 15 minute load averages of the
+system. The values are placed in @var{loadavg}.  @code{getloadavg} will
+place at most @var{nelem} elements into the array but never more than
+three elements.  The return value is the number of elements written to
+@var{loadavg}, or -1 on error.
+
+This function is declared in @file{stdlib.h}.
+@end deftypefun
diff --git a/manual/sysinfo.texi b/manual/sysinfo.texi
index 346a28cb25..7f82bb8db0 100644
--- a/manual/sysinfo.texi
+++ b/manual/sysinfo.texi
@@ -15,7 +15,6 @@ can make changes.
                                   machine type
 * Filesystem Handling::         Controlling/querying mounts
 * System Parameters::           Getting and setting various system parameters
-* Load Average::                Getting the system load average
 @end menu
 
 To get information on parameters of the system that are built into the
@@ -1193,23 +1192,3 @@ parameters are:
 @item
 @code{bdflush}
 @end itemize
-
-@node Load Average
-@section Getting the system load average
-
-This section describes the @code{getloadavg} function, which gets the 1, 5
-and 15 minute load averages of the system. The load average is the number of
-processes in the system run queue, averaged over various periods of time
-(1, 5 and 15 minutes in this case).
-
-The symbols used in this section are declared in the file @file{stdlib.h}.
-
-@comment stdlib.h
-@comment BSD
-@deftypefun int getloadavg (double @var{loadavg}[], int @var{nelem})
-This function gets the 1, 5 and 15 minute load averages of the system. The
-values are placed in @var{loadavg}. The function will place at most
-@var{nelem} elements into the array, @var{loadavg}. Never are there more
-than three elements returned and possibly less than @var{nelem}. The return
-value is the number of elements written to @var{loadavg}, or -1 on error.
-@end deftypefun
diff --git a/manual/syslog.texi b/manual/syslog.texi
index 4c190d3239..49f599d93f 100644
--- a/manual/syslog.texi
+++ b/manual/syslog.texi
@@ -59,7 +59,7 @@ Pass to another daemon
 Discard
 @end itemize
 
-Syslogd can also handle messages from other systems.  It listens on the 
+Syslogd can also handle messages from other systems.  It listens on the
 @code{syslog} UDP port as well as the local socket for messages.
 
 Syslog can handle messages from the kernel itself.  But the kernel
@@ -158,7 +158,7 @@ to identify the source of the message, and people conventionally set it
 to the name of the program that will submit the messages.
 
 @code{openlog} may or may not open the @file{/dev/log} socket, depending
-on @var{option}.  If it does, it tries to open it and connect it as a 
+on @var{option}.  If it does, it tries to open it and connect it as a
 stream socket.  If that doesn't work, it tries to open it and connect it
 as a datagram socket.  The socket has the ``Close on Exec'' attribute,
 so the kernel will close it if the process performs an exec.
@@ -166,7 +166,7 @@ so the kernel will close it if the process performs an exec.
 You don't have to use @code{openlog}.  If you call @code{syslog} without
 having called @code{openlog}, @code{syslog} just opens the connection
 implicitly and uses defaults for the information in @var{ident} and
-@var{options}.  
+@var{options}.
 
 @var{options} is a bit string, with the bits as defined by the following
 single bit masks:
@@ -243,7 +243,7 @@ writing to the Unix domain socket @code{/dev/log}.
 
 @code{syslog} submits the message with the facility and priority indicated
 by @var{facility_priority}.  The macro @code{LOG_MAKEPRI} generates a
-facility/priority from a facility and a priority, as in the following 
+facility/priority from a facility and a priority, as in the following
 example:
 
 @smallexample
@@ -255,7 +255,7 @@ The possible values for the facility code are (macros):
 @c Internally, there is also LOG_KERN, but LOG_KERN == 0, which means
 @c if you try to use it here, just selects default.
 
-@table @code
+@vtable @code
 @item LOG_USER
 A miscellaneous user process
 @item LOG_MAIL
@@ -294,15 +294,15 @@ Locally defined
 Locally defined
 @item LOG_LOCAL7
 Locally defined
-@end table
+@end vtable
 
 Results are undefined if the facility code is anything else.
 
-@strong{note:} Syslog recognizes one other facility code: that of the
-kernel.  But you can't specify that facility code with these functions.
-If you try, it looks the same to @code{syslog} as if you are requesting
-the default facility.  But you wouldn't want to anyway, because any
-program that uses the GNU C library is not the kernel.
+@strong{note:} @code{syslog} recognizes one other facility code: that of
+the kernel.  But you can't specify that facility code with these
+functions.  If you try, it looks the same to @code{syslog} as if you are
+requesting the default facility.  But you wouldn't want to anyway,
+because any program that uses the GNU C library is not the kernel.
 
 You can use just a priority code as @var{facility_priority}.  In that
 case, @code{syslog} assumes the default facility established when the
@@ -310,7 +310,7 @@ Syslog connection was opened.  @xref{Syslog Example}.
 
 The possible values for the priority code are (macros):
 
-@table @code
+@vtable @code
 @item LOG_EMERG
 The message says the system is unusable.
 @item LOG_ALERT
@@ -327,7 +327,7 @@ The message describes a normal but important event.
 The message is purely informational.
 @item LOG_DEBUG
 The message is only for debugging purposes.
-@end table
+@end vtable
 
 Results are undefined if the priority code is anything else.
 
@@ -354,8 +354,8 @@ Example:
 @smallexample
 
 #include <syslog.h>
-syslog(LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR), 
-       "Unable to make network connection to %s.  Error=%m", host);
+syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
+        "Unable to make network connection to %s.  Error=%m", host);
 
 @end smallexample
 
@@ -364,8 +364,7 @@ syslog(LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
 
 @comment syslog.h
 @comment BSD
-@deftypefun void vsyslog (int @var{facility_priority}, char *@var{format},
-         __gnuc_va_list arglist)
+@deftypefun void vsyslog (int @var{facility_priority}, char *@var{format}, va_list arglist)
 
 This is functionally identical to @code{syslog}, with the BSD style variable
 length argument.
@@ -381,7 +380,7 @@ The symbols referred to in this section are declared in the file
 
 @comment syslog.h
 @comment BSD
-@deftypefun void closelog ()
+@deftypefun void closelog (void)
 
 @code{closelog} closes the current Syslog connection, if there is one.
 This include closing the @file{dev/log} socket, if it is open.
@@ -444,7 +443,7 @@ on for a certain priority and all priorities above it:
 LOG_UPTO(LOG_ERROR)
 @end smallexample
 
-The unfortunate naming of the macro is due to the fact that internally, 
+The unfortunate naming of the macro is due to the fact that internally,
 higher numbers are used for lower message priorities.
 
 @end deftypefun
@@ -462,16 +461,13 @@ in the example does nothing.
 @smallexample
 #include <syslog.h>
 
-setlogmask(LOG_UPTO(LOG_NOTICE));
+setlogmask (LOG_UPTO (LOG_NOTICE));
 
-openlog("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
+openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
 
-syslog(LOG_NOTICE, "Program started by User %d", getuid());
-syslog(LOG_INFO, "A tree falls in a forest");
+syslog (LOG_NOTICE, "Program started by User %d", getuid ());
+syslog (LOG_INFO, "A tree falls in a forest");
 
-closelog();
+closelog ();
 
 @end smallexample
-
-
-
diff --git a/sysdeps/generic/getsysstats.c b/sysdeps/generic/getsysstats.c
index d43a86ae5a..bc517b7a75 100644
--- a/sysdeps/generic/getsysstats.c
+++ b/sysdeps/generic/getsysstats.c
@@ -1,5 +1,5 @@
 /* getsysstats - Determine various system internal values, stub version.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -44,7 +44,7 @@ weak_alias (__get_nprocs, get_nprocs)
 link_warning (get_nprocs, "warning: get_nprocs will always return 1")
 
 
-int
+long int
 __get_phys_pages ()
 {
   /* We have no general way to determine this value.  */
@@ -56,7 +56,7 @@ weak_alias (__get_phys_pages, get_phys_pages)
 stub_warning (get_phys_pages)
 
 
-int
+long int
 __get_avphys_pages ()
 {
   /* We have no general way to determine this value.  */
diff --git a/sysdeps/generic/sys/sysinfo.h b/sysdeps/generic/sys/sysinfo.h
index e4ef69b902..01c5474258 100644
--- a/sysdeps/generic/sys/sysinfo.h
+++ b/sysdeps/generic/sys/sysinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 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
@@ -17,8 +17,8 @@
    Boston, MA 02111-1307, USA.  */
 
 #ifndef _SYS_SYSINFO_H
-
 #define _SYS_SYSINFO_H	1
+
 #include <features.h>
 
 /* Return number of configured processors.  */
@@ -29,9 +29,9 @@ extern int get_nprocs (void) __THROW;
 
 
 /* Return number of physical pages of memory in the system.  */
-extern int get_phys_pages (void) __THROW;
+extern long int get_phys_pages (void) __THROW;
 
 /* Return number of available physical pages of memory in the system.  */
-extern int get_avphys_pages (void) __THROW;
+extern long int get_avphys_pages (void) __THROW;
 
 #endif	/* sys/sysinfo.h */
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index 9a2d7cfcda..d8808ff69a 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -1,5 +1,5 @@
 /* Determine various system internal values, Linux version.
-   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.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -203,14 +203,14 @@ weak_alias (__get_nprocs_conf, get_nprocs_conf)
 
 /* General function to get information about memory status from proc
    filesystem.  */
-static int
+static long int
 internal_function
 phys_pages_info (const char *format)
 {
   FILE *fp;
   char buffer[8192];
   const char *proc_path;
-  int result = -1;
+  long int result = -1;
 
   /* Get mount point of proc filesystem.  */
   proc_path = get_proc_path (buffer, sizeof buffer);
@@ -258,12 +258,12 @@ phys_pages_info (const char *format)
 
    But not all systems have support for the /proc filesystem.  If it
    is not available we return -1 as an error signal.  */
-int
+long int
 __get_phys_pages ()
 {
   /* XXX Here will come a test for the new system call.  */
 
-  return phys_pages_info ("MemTotal: %d kB");
+  return phys_pages_info ("MemTotal: %ld kB");
 }
 weak_alias (__get_phys_pages, get_phys_pages)
 
@@ -279,12 +279,12 @@ weak_alias (__get_phys_pages, get_phys_pages)
 
    But not all systems have support for the /proc filesystem.  If it
    is not available we return -1 as an error signal.  */
-int
+long int
 __get_avphys_pages ()
 {
   /* XXX Here will come a test for the new system call.  */
 
-  return phys_pages_info ("MemFree: %d kB");
+  return phys_pages_info ("MemFree: %ld kB");
 }
 weak_alias (__get_avphys_pages, get_avphys_pages)
 
diff --git a/sysdeps/unix/sysv/linux/sys/sysinfo.h b/sysdeps/unix/sysv/linux/sys/sysinfo.h
index 2f2b4dfbce..c786f7c348 100644
--- a/sysdeps/unix/sysv/linux/sys/sysinfo.h
+++ b/sysdeps/unix/sysv/linux/sys/sysinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1999, 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
@@ -17,8 +17,8 @@
    Boston, MA 02111-1307, USA.  */
 
 #ifndef _SYS_SYSINFO_H
-
 #define _SYS_SYSINFO_H	1
+
 #include <features.h>
 
 /* Get sysinfo structure from kernel header.  */
@@ -38,10 +38,10 @@ extern int get_nprocs (void) __THROW;
 
 
 /* Return number of physical pages of memory in the system.  */
-extern int get_phys_pages (void) __THROW;
+extern long int get_phys_pages (void) __THROW;
 
 /* Return number of available physical pages of memory in the system.  */
-extern int get_avphys_pages (void) __THROW;
+extern long int get_avphys_pages (void) __THROW;
 
 __END_DECLS