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