From owner-freebsd-standards@FreeBSD.ORG Sat Jul 19 05:20:15 2003 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3B8BD37B401 for ; Sat, 19 Jul 2003 05:20:15 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1212543F85 for ; Sat, 19 Jul 2003 05:20:14 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h6JCKDUp009683 for ; Sat, 19 Jul 2003 05:20:13 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h6JCKD1Z009682; Sat, 19 Jul 2003 05:20:13 -0700 (PDT) Resent-Date: Sat, 19 Jul 2003 05:20:13 -0700 (PDT) Resent-Message-Id: <200307191220.h6JCKD1Z009682@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-standards@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Bruce M Simpson Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ABEE937B401 for ; Sat, 19 Jul 2003 05:17:04 -0700 (PDT) Received: from bigboy.spc.org (bigboy.spc.org [195.206.69.225]) by mx1.FreeBSD.org (Postfix) with ESMTP id 36EF343FA3 for ; Sat, 19 Jul 2003 05:17:03 -0700 (PDT) (envelope-from bms@spc.org) Received: from saboteur.dek.spc.org (unknown [81.3.72.68]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (No client certificate requested) by bigboy.spc.org (Postfix) with ESMTP id 7E1A2316A for ; Sat, 19 Jul 2003 13:17:11 +0100 (BST) Received: by saboteur.dek.spc.org (Postfix, from userid 1001) id C047F933; Sat, 19 Jul 2003 13:17:00 +0100 (BST) Message-Id: <20030719121700.C047F933@saboteur.dek.spc.org> Date: Sat, 19 Jul 2003 13:17:00 +0100 (BST) From: Bruce M Simpson To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: standards/54634: [PATCH] add posix_madvise() call to -CURRENT X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Bruce M Simpson List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jul 2003 12:20:15 -0000 >Number: 54634 >Category: standards >Synopsis: [PATCH] add posix_madvise() call to -CURRENT >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-standards >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Jul 19 05:20:13 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Bruce M Simpson >Release: FreeBSD 5.1-RELEASE i386 >Organization: >Environment: System: FreeBSD saboteur.dek.spc.org 5.1-RELEASE FreeBSD 5.1-RELEASE #3: Mon Jun 23 06:55:01 BST 2003 root@saboteur.dek.spc.org:/usr/src/sys/i386/compile/SABOTEUR i386 >Description: Here is a patch to add posix_madvise() -part of the POSIX/C99 conformance project. >How-To-Repeat: >Fix: --- posix_madvise.patch begins here --- Generated by diffcoll on Sat 21 Jun 2003 10:22:04 BST diff -uN src/sys/sys/mman.h.orig src/sys/sys/mman.h --- /usr/src/sys/sys/mman.h.orig Sat Jun 21 09:57:14 2003 +++ /usr/src/sys/sys/mman.h Sat Jun 21 09:59:13 2003 @@ -125,6 +125,11 @@ #define MADV_NOCORE 8 /* do not include these pages in a core file */ #define MADV_CORE 9 /* revert to including pages in a core file */ #define MADV_PROTECT 10 /* protect process from pageout kill */ +#define POSIX_MADV_NORMAL MADV_NORMAL +#define POSIX_MADV_RANDOM MADV_RANDOM +#define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL +#define POSIX_MADV_WILLNEED MADV_WILLNEED +#define POSIX_MADV_DONTNEED MADV_DONTNEED /* * Return bits from mincore @@ -160,7 +165,7 @@ __BEGIN_DECLS /* - * XXX not yet implemented: mlockall(), munlockall(), posix_madvise(), + * XXX not yet implemented: mlockall(), munlockall(), * posix_mem_offset(), posix_typed_mem_get_info(), posix_typed_mem_open(). */ #if __BSD_VISIBLE @@ -178,6 +183,7 @@ int munlock(const void *, size_t); int munmap(void *, size_t); #if __POSIX_VISIBLE >= 199309 +int posix_madvise(void *, size_t, int); int shm_open(const char *, int, mode_t); int shm_unlink(const char *); #endif diff -uN src/lib/libc/gen/Makefile.inc.orig src/lib/libc/gen/Makefile.inc --- /usr/src/lib/libc/gen/Makefile.inc.orig Sat Jun 21 10:02:13 2003 +++ /usr/src/lib/libc/gen/Makefile.inc Sat Jun 21 10:02:56 2003 @@ -19,7 +19,8 @@ initgroups.c isatty.c jrand48.c lcong48.c \ lockf.c lrand48.c mrand48.c nice.c \ nlist.c nrand48.c ntp_gettime.c opendir.c \ - pause.c popen.c posixshm.c pselect.c psignal.c pw_scan.c pwcache.c \ + pause.c popen.c posixshm.c pmadvise.c \ + pselect.c psignal.c pw_scan.c pwcache.c \ raise.c readdir.c readpassphrase.c rewinddir.c \ scandir.c seed48.c seekdir.c semctl.c \ setdomainname.c sethostname.c setjmperr.c setmode.c \ diff -uN src/lib/libc/gen/pmadvise.c.orig src/lib/libc/gen/pmadvise.c --- /usr/src/lib/libc/gen/pmadvise.c.orig Fri Feb 1 00:57:29 2002 +++ /usr/src/lib/libc/gen/pmadvise.c Sat Jun 21 10:01:39 2003 @@ -1,7 +1,7 @@ /* * The contents of this file are in the public domain. * Written by Garrett A. Wollman, 2000-10-07. - * + * Updated by Bruce M. Simpson, 2003-06-21. */ #include @@ -10,7 +10,7 @@ #include int -(posix_madvise)(void *address, size_t size, int how) +posix_madvise(void *addr, size_t len, int advice) { - return posix_madvise(address, size, how); + return madvise(addr, len, advice); } diff -uN src/lib/libc/sys/Makefile.inc.orig src/lib/libc/sys/Makefile.inc --- /usr/src/lib/libc/sys/Makefile.inc.orig Sat Jun 21 10:03:26 2003 +++ /usr/src/lib/libc/sys/Makefile.inc Sat Jun 21 10:04:04 2003 @@ -119,6 +119,7 @@ MLINKS+=kqueue.2 kevent.2 MLINKS+=kse.2 kse_create.2 kse.2 kse_exit.2 kse.2 kse_release.2 \ kse.2 kse_wakeup.2 kse.2 kse_thr_interrupt.2 +MLINKS+=madvise.2 posix_madvise.2 MLINKS+=mlock.2 munlock.2 MLINKS+=modnext.2 modfnext.2 MLINKS+=mount.2 unmount.2 diff -uN src/lib/libc/sys/madvise.2.orig src/lib/libc/sys/madvise.2 --- /usr/src/lib/libc/sys/madvise.2.orig Sat Jun 21 10:04:10 2003 +++ /usr/src/lib/libc/sys/madvise.2 Sat Jun 21 10:22:02 2003 @@ -36,7 +36,8 @@ .Dt MADVISE 2 .Os .Sh NAME -.Nm madvise +.Nm madvise , +.Nm posix_madvise .Nd give advice about use of memory .Sh LIBRARY .Lb libc @@ -44,6 +45,8 @@ .In sys/mman.h .Ft int .Fn madvise "void *addr" "size_t len" "int behav" +.Ft int +.Fn posix_madvise "void *addr" "size_t len" "int advice" .Sh DESCRIPTION The .Fn madvise @@ -51,6 +54,13 @@ allows a process that has knowledge of its memory behavior to describe it to the system. .Pp +The +.Fn posix_madvise +interface is identical and is provided for the purposes of +standards conformance. The +.Dv POSIX_ +prefixed definitions should be used when calling this interface. +.Pp The known behaviors are: .Bl -tag -width MADV_SEQUENTIAL .It Dv MADV_NORMAL @@ -123,7 +133,44 @@ The process must have superuser privileges. This should be used judiciously in processes that must remain running for the system to properly function. +.It Dv POSIX_MADV_NORMAL +Same as +.Dv MADV_NORMAL +but used with the +.Fn posix_madvise +system call. +.It Dv POSIX_MADV_SEQUENTIAL +Same as +.Dv MADV_SEQUENTIAL +but used with the +.Fn posix_madvise +system call. +.It Dv POSIX_MADV_RANDOM +Same as +.Dv MADV_RANDOM +but used with the +.Fn posix_madvise +system call. +.It Dv POSIX_MADV_WILLNEED +Same as +.Dv MADV_WILLNEED +but used with the +.Fn posix_madvise +system call. +.It Dv POSIX_MADV_WONTNEED +Same as +.Dv MADV_WONTNEED +but used with the +.Fn posix_madvise +system call. .El +.Sh IMPLEMENTATION NOTES +The +.Fn posix_madvise +function is implemented as a function within libc +which simply calls the +.Fn madvise +system call stub. .Sh RETURN VALUES .Rv -std madvise .Sh ERRORS @@ -146,6 +193,10 @@ .Xr mprotect 2 , .Xr msync 2 , .Xr munmap 2 +.Sh STANDARDS +The +.Fn posix_madvise +interface is believed to conform to IEEE Std 1003.1-2001 (``POSIX.1''). .Sh HISTORY The .Fn madvise --- posix_madvise.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted: