svn commit: r197331 - in head: lib/libc/gen sys/sys
Doug Barton
dougb at FreeBSD.org
Sun Sep 20 05:36:17 UTC 2009
I'm getting this even after 'make cleandir':
cc -O2 -pipe -g -I/usr/local/src/lib/libc/include
-I/usr/local/src/lib/libc/../../include -I/usr/local/src/lib/libc/i386
-DNLS -D__DBINTERFACE_PRIVATE
-I/usr/local/src/lib/libc/../../contrib/gdtoa -DINET6
-I/usr/local/obj/usr/local/src/lib/libc
-I/usr/local/src/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE
-I/usr/local/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN
-I/usr/local/src/lib/libc/rpc -DNS_CACHING -DSYMBOL_VERSIONING -g
-std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall
-Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c
/usr/local/src/lib/libc/gen/getpagesizes.c
/usr/local/src/lib/libc/gen/getpagesizes.c: In function 'getpagesizes':
/usr/local/src/lib/libc/gen/getpagesizes.c:51: error: 'MAXPAGESIZES'
undeclared (first use in this function)
/usr/local/src/lib/libc/gen/getpagesizes.c:51: error: (Each undeclared
identifier is reported only once
/usr/local/src/lib/libc/gen/getpagesizes.c:51: error: for each
function it appears in.)
cc1: warnings being treated as errors
/usr/local/src/lib/libc/gen/getpagesizes.c:51: warning: unused
variable 'ps'
*** Error code 1
Stop in /usr/local/src/lib/libc.
Anything I'm missing?
Doug
Alan Cox wrote:
> Author: alc
> Date: Sat Sep 19 18:01:32 2009
> New Revision: 197331
> URL: http://svn.freebsd.org/changeset/base/197331
>
> Log:
> Add getpagesizes(3). This functions either the number of supported page
> sizes or some number of the sizes themselves. It is functionally
> compatible with a function by the same name under Solaris.
>
> Reviewed by: jhb
>
> Added:
> head/lib/libc/gen/getpagesizes.3 (contents, props changed)
> head/lib/libc/gen/getpagesizes.c (contents, props changed)
> Modified:
> head/lib/libc/gen/Makefile.inc
> head/lib/libc/gen/Symbol.map
> head/sys/sys/mman.h
>
> Modified: head/lib/libc/gen/Makefile.inc
> ==============================================================================
> --- head/lib/libc/gen/Makefile.inc Sat Sep 19 17:56:26 2009 (r197330)
> +++ head/lib/libc/gen/Makefile.inc Sat Sep 19 18:01:32 2009 (r197331)
> @@ -15,7 +15,7 @@ SRCS+= __getosreldate.c __xuname.c \
> getbootfile.c getbsize.c \
> getcap.c getcwd.c getdomainname.c getgrent.c getgrouplist.c \
> gethostname.c getloadavg.c getlogin.c getmntinfo.c getnetgrent.c \
> - getosreldate.c getpagesize.c \
> + getosreldate.c getpagesize.c getpagesizes.c \
> getpeereid.c getprogname.c getpwent.c getttyent.c \
> getusershell.c getvfsbyname.c glob.c \
> initgroups.c isatty.c isinf.c isnan.c jrand48.c lcong48.c \
> @@ -51,8 +51,8 @@ MAN+= alarm.3 arc4random.3 \
> getbootfile.3 getbsize.3 getcap.3 getcontext.3 getcwd.3 \
> getdiskbyname.3 getdomainname.3 getfsent.3 \
> getgrent.3 getgrouplist.3 gethostname.3 getloadavg.3 \
> - getmntinfo.3 getnetgrent.3 getosreldate.3 \
> - getpagesize.3 getpass.3 getpeereid.3 getprogname.3 getpwent.3 \
> + getmntinfo.3 getnetgrent.3 getosreldate.3 getpagesize.3 \
> + getpagesizes.3 getpass.3 getpeereid.3 getprogname.3 getpwent.3 \
> getttyent.3 getusershell.3 getvfsbyname.3 \
> glob.3 initgroups.3 isgreater.3 ldexp.3 lockf.3 makecontext.3 \
> modf.3 \
>
> Modified: head/lib/libc/gen/Symbol.map
> ==============================================================================
> --- head/lib/libc/gen/Symbol.map Sat Sep 19 17:56:26 2009 (r197330)
> +++ head/lib/libc/gen/Symbol.map Sat Sep 19 18:01:32 2009 (r197331)
> @@ -366,6 +366,10 @@ FBSD_1.1 {
> tcsetsid;
> };
>
> +FBSD_1.2 {
> + getpagesizes;
> +};
> +
> FBSDprivate_1.0 {
> /* needed by thread libraries */
> __thr_jtable;
>
> Added: head/lib/libc/gen/getpagesizes.3
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ head/lib/libc/gen/getpagesizes.3 Sat Sep 19 18:01:32 2009 (r197331)
> @@ -0,0 +1,98 @@
> +.\" Copyright (c) 2009 Alan L. Cox <alc at cs.rice.edu>
> +.\" All rights reserved.
> +.\"
> +.\" Redistribution and use in source and binary forms, with or without
> +.\" modification, are permitted provided that the following conditions
> +.\" are met:
> +.\" 1. Redistributions of source code must retain the above copyright
> +.\" notice, this list of conditions and the following disclaimer.
> +.\" 2. Redistributions in binary form must reproduce the above copyright
> +.\" notice, this list of conditions and the following disclaimer in the
> +.\" documentation and/or other materials provided with the distribution.
> +.\"
> +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> +.\" SUCH DAMAGE.
> +.\"
> +.\" $FreeBSD$
> +.\"
> +.Dd September 19, 2009
> +.Dt GETPAGESIZES 3
> +.Os
> +.Sh NAME
> +.Nm getpagesizes
> +.Nd "get system page sizes"
> +.Sh LIBRARY
> +.Lb libc
> +.Sh SYNOPSIS
> +.In sys/mman.h
> +.Ft int
> +.Fn getpagesizes "size_t pagesize[]" "int nelem"
> +.Sh DESCRIPTION
> +The
> +.Fn getpagesizes
> +function retrieves page size information from the system.
> +When it is called with
> +.Fa pagesize
> +specified as
> +.Dv NULL
> +and
> +.Fa nelem
> +specified as 0, it returns the number of distinct page sizes that are
> +supported by the system.
> +Otherwise, it assigns up to
> +.Fa nelem
> +of the system-supported page sizes to consecutive elements of the
> +array referenced by
> +.Fa pagesize .
> +These page sizes are expressed in bytes.
> +In this case,
> +.Fn getpagesizes
> +returns the number of such page sizes that it assigned to the array.
> +.Sh RETURN VALUES
> +If successful, the
> +.Fn getpagesizes
> +function returns either the number of page sizes that are supported by
> +the system or the number of supported page sizes that it assigned to
> +the array referenced by
> +.Fa pagesize .
> +Otherwise, it returns the value\~\-1 and sets
> +.Va errno
> +to indicate the error.
> +.Sh ERRORS
> +The
> +.Fn getpagesizes
> +function will succeed unless:
> +.Bl -tag -width Er
> +.It Bq Er EINVAL
> +The
> +.Fa pagesize
> +argument is
> +.Dv NULL
> +and the
> +.Fa nelem
> +argument is non-zero.
> +.It Bq Er EINVAL
> +The
> +.Fa nelem
> +argument is less than zero.
> +.El
> +.Sh SEE ALSO
> +.Xr getpagesize 3
> +.Sh HISTORY
> +The
> +.Fn getpagesizes
> +function first appeared in Solaris 9.
> +This manual page was written in conjunction with a new but compatible
> +implementation that was first released in
> +.Fx 7.3 .
> +.Sh AUTHOR
> +.An Alan L. Cox Aq alc at cs.rice.edu
>
> Added: head/lib/libc/gen/getpagesizes.c
> ==============================================================================
> --- /dev/null 00:00:00 1970 (empty, because file is newly added)
> +++ head/lib/libc/gen/getpagesizes.c Sat Sep 19 18:01:32 2009 (r197331)
> @@ -0,0 +1,78 @@
> +/*-
> + * Copyright (c) 2009 Alan L. Cox <alc at cs.rice.edu>
> + * All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + * notice, this list of conditions and the following disclaimer in the
> + * documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> + * SUCH DAMAGE.
> + */
> +
> +#include <sys/cdefs.h>
> +__FBSDID("$FreeBSD$");
> +
> +#include <sys/param.h>
> +#include <sys/mman.h>
> +#include <sys/sysctl.h>
> +
> +#include <errno.h>
> +
> +/*
> + * Retrieves page size information from the system. Specifically, returns the
> + * number of distinct page sizes that are supported by the system, if
> + * "pagesize" is NULL and "nelem" is 0. Otherwise, assigns up to "nelem" of
> + * the system-supported page sizes to consecutive elements of the array
> + * referenced by "pagesize", and returns the number of such page sizes that it
> + * assigned to the array. These page sizes are expressed in bytes.
> + *
> + * The implementation of this function does not directly or indirectly call
> + * malloc(3) or any other dynamic memory allocator that may itself call this
> + * function.
> + */
> +int
> +getpagesizes(size_t pagesize[], int nelem)
> +{
> + static u_long ps[MAXPAGESIZES];
> + static int nops;
> + size_t size;
> + int i;
> +
> + if (nelem < 0 || (nelem > 0 && pagesize == NULL)) {
> + errno = EINVAL;
> + return (-1);
> + }
> + /* Cache the result of the sysctl(2). */
> + if (nops == 0) {
> + size = sizeof(ps);
> + if (sysctlbyname("hw.pagesizes", ps, &size, NULL, 0) == -1)
> + return (-1);
> + /* Count the number of page sizes that are supported. */
> + nops = size / sizeof(ps[0]);
> + while (nops > 0 && ps[nops - 1] == 0)
> + nops--;
> + }
> + if (pagesize == NULL)
> + return (nops);
> + /* Return up to "nelem" page sizes from the cached result. */
> + if (nelem > nops)
> + nelem = nops;
> + for (i = 0; i < nelem; i++)
> + pagesize[i] = ps[i];
> + return (nelem);
> +}
>
> Modified: head/sys/sys/mman.h
> ==============================================================================
> --- head/sys/sys/mman.h Sat Sep 19 17:56:26 2009 (r197330)
> +++ head/sys/sys/mman.h Sat Sep 19 18:01:32 2009 (r197331)
> @@ -208,6 +208,7 @@ __BEGIN_DECLS
> * posix_typed_mem_open().
> */
> #if __BSD_VISIBLE
> +int getpagesizes(size_t *, int);
> int madvise(void *, size_t, int);
> int mincore(const void *, size_t, char *);
> int minherit(void *, size_t, int);
>
--
This .signature sanitized for your protection
More information about the svn-src-head
mailing list