Date: Sun, 13 Aug 2006 04:17:32 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 103745 for review Message-ID: <200608130417.k7D4HWQ2027864@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=103745 Change 103745 by imp@imp_paco-paco on 2006/08/13 04:17:00 IFC @103744 Affected files ... .. //depot/projects/arm/src/sbin/ifconfig/ifclone.c#2 integrate .. //depot/projects/arm/src/sbin/sysctl/sysctl.c#3 integrate .. //depot/projects/arm/src/share/man/man4/vlan.4#3 integrate .. //depot/projects/arm/src/share/man/man9/sysctl.9#2 integrate .. //depot/projects/arm/src/share/mk/bsd.cpu.mk#2 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/bootiic/env_vars.c#13 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/bootiic/env_vars.h#5 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/bootiic/loader_prompt.c#14 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/bootiic/loader_prompt.h#7 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/libat91/spi_flash.c#15 integrate .. //depot/projects/arm/src/sys/boot/arm/at91/libat91/spi_flash.h#7 integrate .. //depot/projects/arm/src/sys/conf/files#42 integrate .. //depot/projects/arm/src/sys/contrib/dev/acpica/acfreebsd.h#3 integrate .. //depot/projects/arm/src/sys/geom/label/g_label.c#6 integrate .. //depot/projects/arm/src/sys/geom/label/g_label_msdosfs.c#4 integrate .. //depot/projects/arm/src/sys/geom/label/g_label_msdosfs.h#1 branch .. //depot/projects/arm/src/sys/kern/kern_subr.c#2 integrate .. //depot/projects/arm/src/sys/libkern/strstr.c#1 branch .. //depot/projects/arm/src/sys/net/bridgestp.c#8 integrate .. //depot/projects/arm/src/sys/sys/libkern.h#4 integrate .. //depot/projects/arm/src/sys/sys/sysctl.h#10 integrate .. //depot/projects/arm/src/sys/vm/vm_fault.c#13 integrate .. //depot/projects/arm/src/sys/vm/vm_object.c#13 integrate .. //depot/projects/arm/src/sys/vm/vm_page.c#17 integrate .. //depot/projects/arm/src/sys/vm/vm_page.h#6 integrate .. //depot/projects/arm/src/usr.sbin/pkg_install/version/perform.c#2 integrate Differences ... ==== //depot/projects/arm/src/sbin/ifconfig/ifclone.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sbin/ifconfig/ifclone.c,v 1.2 2006/07/09 06:10:23 sam Exp $"; + "$FreeBSD: src/sbin/ifconfig/ifclone.c,v 1.3 2006/08/12 18:07:17 yar Exp $"; #endif /* not lint */ #include <sys/types.h> @@ -145,6 +145,7 @@ static struct cmd clone_cmds[] = { DEF_CMD("create", 0, clone_create), DEF_CMD("destroy", 0, clone_destroy), + DEF_CMD("plumb", 0, clone_create), DEF_CMD("unplumb", 0, clone_destroy), }; ==== //depot/projects/arm/src/sbin/sysctl/sysctl.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)from: sysctl.c 8.1 (Berkeley) 6/6/93"; #endif static const char rcsid[] = - "$FreeBSD: src/sbin/sysctl/sysctl.c,v 1.71 2006/08/04 07:31:55 njl Exp $"; + "$FreeBSD: src/sbin/sysctl/sysctl.c,v 1.72 2006/08/12 23:33:10 obrien Exp $"; #endif /* not lint */ #ifdef __i386__ @@ -578,7 +578,11 @@ while (len >= sizeof(int)) { fputs(val, stdout); if (*fmt == 'U') - printf(hflag ? "%'u" : "%u", *(unsigned int *)p); + printf(hflag ? "%'u" : "%u", + *(unsigned int *)p); + else if (*fmt == 'X') + printf(hflag ? "%'#010x" : "%#010x", + *(unsigned int *)p); else if (*fmt == 'K') { if (*(long *)p < 0) printf("%ld", *(long *)p); @@ -601,7 +605,11 @@ while (len >= sizeof(long)) { fputs(val, stdout); if (*fmt == 'U') - printf(hflag ? "%'lu" : "%lu", *(unsigned long *)p); + printf(hflag ? "%'lu" : "%lu", + *(unsigned long *)p); + else if (*fmt == 'X') + printf(hflag ? "%'#018lx" : "%#018lx", + *(unsigned long *)p); else if (*fmt == 'K') { if (*(long *)p < 0) printf("%ld", *(long *)p); ==== //depot/projects/arm/src/share/man/man4/vlan.4#3 (text+ko) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/vlan.4,v 1.31 2006/08/11 17:09:27 yar Exp $ +.\" $FreeBSD: src/share/man/man4/vlan.4,v 1.32 2006/08/12 17:11:43 yar Exp $ .\" .Dd August 11, 2006 .Dt VLAN 4 @@ -84,7 +84,7 @@ .Nm assumes the same minimum length for tagged and untagged frames. This mode is selected by the -.Xr sysctl(8) +.Xr sysctl 8 variable .Va net.link.vlan.soft_pad set to 0 (default). ==== //depot/projects/arm/src/share/man/man9/sysctl.9#2 (text) ==== @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/sysctl.9,v 1.3 2006/04/28 23:21:36 keramida Exp $ +.\" $FreeBSD: src/share/man/man9/sysctl.9,v 1.5 2006/08/12 23:33:10 obrien Exp $ .\" .Dd April 28, 2006 .Dt SYSCTL 9 @@ -38,7 +38,9 @@ .Nm SYSCTL_STRING , .Nm SYSCTL_STRUCT , .Nm SYSCTL_UINT , -.Nm SYSCTL_ULONG +.Nm SYSCTL_ULONG , +.Nm SYSCTL_XINT , +.Nm SYSCTL_XLONG .Nd Static sysctl declaration functions .Sh SYNOPSIS .In sys/types.h @@ -129,6 +131,24 @@ .Fa "val" .Fa "descr" .Fc +.Fo SYSCTL_XINT +.Fa "parent" +.Fa "nbr" +.Fa "name" +.Fa "access" +.Fa "ptr" +.Fa "val" +.Fa "descr" +.Fc +.Fo SYSCTL_XLONG +.Fa "parent" +.Fa "nbr" +.Fa "name" +.Fa "access" +.Fa "ptr" +.Fa "val" +.Fa "descr" +.Fc .Sh DESCRIPTION The .Nm @@ -153,8 +173,10 @@ .Nm SYSCTL_STRING , .Nm SYSCTL_STRUCT , .Nm SYSCTL_UINT , +.Nm SYSCTL_ULONG , +.Nm SYSCTL_XINT , and -.Nm SYSCTL_ULONG . +.Nm SYSCTL_XLONG . Each macro accepts a parent name, as declared using .Nm SYSCTL_DECL , an OID number, typically @@ -194,7 +216,7 @@ .Bl -tag -width CTLFLAG_ANYBODY .It Dv CTLFLAG_RD This is a read-only sysctl. -It Dv CTLFLAG_WR +.It Dv CTLFLAG_WR This is a writable sysctl. .It Dv CTLFLAG_RW This sysctl is readable and writable. @@ -271,6 +293,7 @@ * Example of a constant integer value. Notice that the control * flags are CTLFLAG_RD, the variable pointer is NULL, and the * value is declared. + * If sysctl(8) should print this value in hex, use 'SYSCTL_XINT'. */ SYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL, sizeof(struct bio), "sizeof(struct bio)"); ==== //depot/projects/arm/src/share/mk/bsd.cpu.mk#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/mk/bsd.cpu.mk,v 1.54 2006/07/21 14:07:48 cognet Exp $ +# $FreeBSD: src/share/mk/bsd.cpu.mk,v 1.55 2006/08/12 09:46:43 des Exp $ # Set default CPU compile flags and baseline CPUTYPE for each arch. The # compile flags must support the minimum CPU type for each architecture but @@ -133,7 +133,7 @@ . elif ${CPUTYPE} == "k5" MACHINE_CPU = k5 i586 i486 i386 . elif ${CPUTYPE} == "c3" -MACHINE_CPU = 3dnow mmx i586 i486 i386 +MACHINE_CPU = mmx i586 i486 i386 . elif ${CPUTYPE} == "c3-2" MACHINE_CPU = sse mmx i586 i486 i386 . elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m" ==== //depot/projects/arm/src/sys/boot/arm/at91/bootiic/env_vars.c#13 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/bootiic/env_vars.h#5 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/bootiic/loader_prompt.c#14 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/bootiic/loader_prompt.h#7 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/libat91/spi_flash.c#15 (text+ko) ==== ==== //depot/projects/arm/src/sys/boot/arm/at91/libat91/spi_flash.h#7 (text+ko) ==== ==== //depot/projects/arm/src/sys/conf/files#42 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1137 2006/08/07 12:02:42 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1139 2006/08/12 18:29:49 pjd Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1477,6 +1477,7 @@ libkern/strncpy.c standard libkern/strsep.c standard libkern/strspn.c standard +libkern/strstr.c standard libkern/strtol.c standard libkern/strtoq.c standard libkern/strtoul.c standard ==== //depot/projects/arm/src/sys/contrib/dev/acpica/acfreebsd.h#3 (text+ko) ==== @@ -169,26 +169,4 @@ /* Always use FreeBSD code over our local versions */ #define ACPI_USE_SYSTEM_CLIBRARY -#ifdef _KERNEL -/* Or strstr (used in debugging mode, also move to libkern) */ -static __inline char * -strstr(char *s, char *find) -{ - char c, sc; - size_t len; - - if ((c = *find++) != 0) { - len = strlen(find); - do { - do { - if ((sc = *s++) == 0) - return (NULL); - } while (sc != c); - } while (strncmp(s, find, len) != 0); - s--; - } - return ((char *)s); -} -#endif /* _KERNEL */ - #endif /* __ACFREEBSD_H__ */ ==== //depot/projects/arm/src/sys/geom/label/g_label.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/label/g_label.c,v 1.20 2006/02/18 11:24:00 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/label/g_label.c,v 1.21 2006/08/12 15:30:24 pjd Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -36,6 +36,7 @@ #include <sys/bio.h> #include <sys/sysctl.h> #include <sys/malloc.h> +#include <sys/libkern.h> #include <geom/geom.h> #include <geom/geom_slice.h> #include <geom/label/g_label.h> @@ -116,6 +117,23 @@ g_slice_spoiled(cp); } +static int +g_label_is_name_ok(const char *label) +{ + const char *s; + + /* Check is the label starts from ../ */ + if (strncmp(label, "../", 3) == 0) + return (0); + /* Check is the label contains /../ */ + if (strstr(label, "/../") != NULL) + return (0); + /* Check is the label ends at ../ */ + if ((s = strstr(label, "/..")) != NULL && s[3] == '\0') + return (0); + return (1); +} + static struct g_geom * g_label_create(struct gctl_req *req, struct g_class *mp, struct g_provider *pp, const char *label, const char *dir, off_t mediasize) @@ -127,6 +145,12 @@ g_topology_assert(); + if (!g_label_is_name_ok(label)) { + G_LABEL_DEBUG(0, "%s contains suspicious label, skipping.", + pp->name); + G_LABEL_DEBUG(1, "%s suspicious label is: %s", pp->name, label); + return (NULL); + } gp = NULL; cp = NULL; snprintf(name, sizeof(name), "%s/%s", dir, label); ==== //depot/projects/arm/src/sys/geom/label/g_label_msdosfs.c#4 (text+ko) ==== @@ -1,5 +1,6 @@ /*- * Copyright (c) 2004 Pawel Jakub Dawidek <pjd@FreeBSD.org> + * Copyright (c) 2006 Tobias Reifenberger * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/geom/label/g_label_msdosfs.c,v 1.4 2006/02/01 12:06:00 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/geom/label/g_label_msdosfs.c,v 1.5 2006/08/12 15:34:15 pjd Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -34,57 +35,171 @@ #include <geom/geom.h> #include <geom/label/g_label.h> +#include <geom/label/g_label_msdosfs.h> #define G_LABEL_MSDOSFS_DIR "msdosfs" - -#define FAT12 "FAT12 " -#define FAT16 "FAT16 " -#define FAT32 "FAT32 " -#define VOLUME_LEN 11 -#define NO_NAME "NO NAME " - +#define LABEL_NO_NAME "NO NAME " static void g_label_msdosfs_taste(struct g_consumer *cp, char *label, size_t size) { struct g_provider *pp; - char *sector, *volume; - int i; + FAT_BSBPB *pfat_bsbpb; + FAT32_BSBPB *pfat32_bsbpb; + FAT_DES *pfat_entry; + uint8_t *sector0, *sector; + uint32_t i; g_topology_assert_not(); pp = cp->provider; - label[0] = '\0'; + sector0 = NULL; + sector = NULL; + bzero(label, size); + + /* Check if the sector size of the medium is a valid FAT sector size. */ + switch(pp->sectorsize) { + case 512: + case 1024: + case 2048: + case 4096: + break; + default: + G_LABEL_DEBUG(1, "MSDOSFS: %s: sector size %d not compatible.", + pp->name, pp->sectorsize); + return; + } - sector = (char *)g_read_data(cp, 0, pp->sectorsize, NULL); - if (sector == NULL) + /* Load 1st sector with boot sector and boot parameter block. */ + sector0 = (uint8_t *)g_read_data(cp, 0, pp->sectorsize, NULL); + if (sector0 == NULL) return; - if (strncmp(sector + 0x36, FAT12, strlen(FAT12)) == 0) { - G_LABEL_DEBUG(1, "MSDOS (FAT12) file system detected on %s.", + + /* Check for the FAT boot sector signature. */ + if (sector0[510] != 0x55 || sector0[511] != 0xaa) { + G_LABEL_DEBUG(1, "MSDOSFS: %s: no FAT signature found.", pp->name); - volume = sector + 0x2b; - } else if (strncmp(sector + 0x36, FAT16, strlen(FAT16)) == 0) { - G_LABEL_DEBUG(1, "MSDOS (FAT16) file system detected on %s.", + goto error; + } + + + /* + * Test if this is really a FAT volume and determine the FAT type. + */ + + pfat_bsbpb = (FAT_BSBPB *)sector0; + pfat32_bsbpb = (FAT32_BSBPB *)sector0; + + if (UINT16BYTES(pfat_bsbpb->BPB_FATSz16) != 0) { + /* + * If the BPB_FATSz16 field is not zero and the string "FAT" is + * at the right place, this should be a FAT12 or FAT16 volume. + */ + if (strncmp(pfat_bsbpb->BS_FilSysType, "FAT", 3) != 0) { + G_LABEL_DEBUG(1, + "MSDOSFS: %s: FAT12/16 volume not valid.", + pp->name); + goto error; + } + G_LABEL_DEBUG(1, "MSDOSFS: %s: FAT12/FAT16 volume detected.", pp->name); - volume = sector + 0x2b; - } else if (strncmp(sector + 0x52, FAT32, strlen(FAT32)) == 0) { - G_LABEL_DEBUG(1, "MSDOS (FAT32) file system detected on %s.", + + /* A volume with no name should have "NO NAME " as label. */ + if (strncmp(pfat_bsbpb->BS_VolLab, LABEL_NO_NAME, + sizeof(pfat_bsbpb->BS_VolLab)) == 0) { + G_LABEL_DEBUG(1, + "MSDOSFS: %s: FAT12/16 volume has no name.", + pp->name); + goto error; + } + strlcpy(label, pfat_bsbpb->BS_VolLab, + MIN(size, sizeof(pfat_bsbpb->BS_VolLab) + 1)); + } else if (UINT32BYTES(pfat32_bsbpb->BPB_FATSz32) != 0) { + uint32_t fat_FirstDataSector, fat_BytesPerSector, offset; + + /* + * If the BPB_FATSz32 field is not zero and the string "FAT" is + * at the right place, this should be a FAT32 volume. + */ + if (strncmp(pfat32_bsbpb->BS_FilSysType, "FAT", 3) != 0) { + G_LABEL_DEBUG(1, "MSDOSFS: %s: FAT32 volume not valid.", + pp->name); + goto error; + } + G_LABEL_DEBUG(1, "MSDOSFS: %s: FAT32 volume detected.", pp->name); - volume = sector + 0x47; + + /* + * If the volume label is not "NO NAME " we're done. + */ + if (strncmp(pfat32_bsbpb->BS_VolLab, LABEL_NO_NAME, + sizeof(pfat32_bsbpb->BS_VolLab)) != 0) { + strlcpy(label, pfat32_bsbpb->BS_VolLab, + MIN(size, sizeof(pfat32_bsbpb->BS_VolLab) + 1)); + goto endofchecks; + } + + /* + * If the volume label "NO NAME " is in the boot sector, the + * label of FAT32 volumes may be stored as a special entry in + * the root directory. + */ + fat_FirstDataSector = + UINT16BYTES(pfat32_bsbpb->BPB_RsvdSecCnt) + + (pfat32_bsbpb->BPB_NumFATs * + UINT32BYTES(pfat32_bsbpb->BPB_FATSz32)); + fat_BytesPerSector = UINT16BYTES(pfat32_bsbpb->BPB_BytsPerSec); + + G_LABEL_DEBUG(2, + "MSDOSFS: FAT_FirstDataSector=0x%x, FAT_BytesPerSector=%d", + fat_FirstDataSector, fat_BytesPerSector); + + for (offset = fat_BytesPerSector * fat_FirstDataSector;; + offset += fat_BytesPerSector) { + sector = (uint8_t *)g_read_data(cp, offset, + fat_BytesPerSector, NULL); + if (sector == NULL) + goto error; + + pfat_entry = (FAT_DES *)sector; + do { + /* No more entries available. */ + if (pfat_entry->DIR_Name[0] == 0) { + G_LABEL_DEBUG(1, "MSDOSFS: %s: " + "FAT32 volume has no name.", + pp->name); + goto error; + } + + /* Skip empty or long name entries. */ + if (pfat_entry->DIR_Name[0] == 0xe5 || + (pfat_entry->DIR_Attr & + FAT_DES_ATTR_LONG_NAME) == + FAT_DES_ATTR_LONG_NAME) { + continue; + } + + /* + * The name of the entry is the volume label if + * ATTR_VOLUME_ID is set. + */ + if (pfat_entry->DIR_Attr & + FAT_DES_ATTR_VOLUME_ID) { + strlcpy(label, pfat_entry->DIR_Name, + MIN(size, + sizeof(pfat_bsbpb->BS_VolLab) + 1)); + goto endofchecks; + } + } while((uint8_t *)(++pfat_entry) < + (uint8_t *)(sector + fat_BytesPerSector)); + g_free(sector); + } } else { - g_free(sector); - return; + G_LABEL_DEBUG(1, "MSDOSFS: %s: no FAT volume detected.", + pp->name); + goto error; } - if (strncmp(volume, NO_NAME, VOLUME_LEN) == 0) { - g_free(sector); - return; - } - if (volume[0] == '\0') { - g_free(sector); - return; - } - bzero(label, size); - strlcpy(label, volume, MIN(size, VOLUME_LEN)); - g_free(sector); + +endofchecks: for (i = size - 1; i > 0; i--) { if (label[i] == '\0') continue; @@ -93,6 +208,12 @@ else break; } + +error: + if (sector0 != NULL) + g_free(sector0); + if (sector != NULL) + g_free(sector); } const struct g_label_desc g_label_msdosfs = { ==== //depot/projects/arm/src/sys/kern/kern_subr.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_subr.c,v 1.96 2005/01/06 23:35:39 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_subr.c,v 1.97 2006/08/12 19:47:49 alc Exp $"); #include "opt_zero.h" @@ -105,9 +105,9 @@ VM_OBJECT_LOCK(uobject); retry: if ((user_pg = vm_page_lookup(uobject, upindex)) != NULL) { + if (vm_page_sleep_if_busy(user_pg, TRUE, "vm_pgmoveco")) + goto retry; vm_page_lock_queues(); - if (vm_page_sleep_if_busy(user_pg, 1, "vm_pgmoveco")) - goto retry; pmap_remove_all(user_pg); vm_page_free(user_pg); } else { ==== //depot/projects/arm/src/sys/net/bridgestp.c#8 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/net/bridgestp.c,v 1.18 2006/08/02 02:51:42 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/net/bridgestp.c,v 1.19 2006/08/12 20:30:58 thompsa Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -929,6 +929,7 @@ }; DECLARE_MODULE(bridgestp, bstp_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); +MODULE_VERSION(bridgestp, 1); void bstp_attach(struct bstp_state *bs, bstp_state_cb_t state_callback) ==== //depot/projects/arm/src/sys/sys/libkern.h#4 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)libkern.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/sys/libkern.h,v 1.53 2006/07/17 09:05:21 phk Exp $ + * $FreeBSD: src/sys/sys/libkern.h,v 1.54 2006/08/12 15:28:39 pjd Exp $ */ #ifndef _SYS_LIBKERN_H_ @@ -108,6 +108,7 @@ char *strncpy(char * __restrict, const char * __restrict, size_t); char *strsep(char **, const char *delim); size_t strspn(const char *, const char *); +char *strstr(const char *, const char *); int strvalid(const char *, size_t); extern uint32_t crc32_tab[]; ==== //depot/projects/arm/src/sys/sys/sysctl.h#10 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * @(#)sysctl.h 8.1 (Berkeley) 6/2/93 - * $FreeBSD: src/sys/sys/sysctl.h,v 1.142 2006/07/18 17:00:51 imp Exp $ + * $FreeBSD: src/sys/sys/sysctl.h,v 1.143 2006/08/12 23:33:10 obrien Exp $ */ #ifndef _SYS_SYSCTL_H_ @@ -259,6 +259,14 @@ sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_UINT|(access), \ ptr, val, sysctl_handle_int, "IU", __DESCR(descr)) +#define SYSCTL_XINT(parent, nbr, name, access, ptr, val, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|(access), \ + ptr, val, sysctl_handle_int, "IX", descr) + +#define SYSCTL_ADD_XINT(ctx, parent, nbr, name, access, ptr, val, descr) \ + sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_UINT|(access), \ + ptr, val, sysctl_handle_int, "IX", __DESCR(descr)) + /* Oid for a long. The pointer must be non NULL. */ #define SYSCTL_LONG(parent, nbr, name, access, ptr, val, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_LONG|(access), \ @@ -277,6 +285,14 @@ sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_ULONG|(access), \ ptr, 0, sysctl_handle_long, "LU", __DESCR(descr)) +#define SYSCTL_XLONG(parent, nbr, name, access, ptr, val, descr) \ + SYSCTL_OID(parent, nbr, name, CTLTYPE_ULONG|(access), \ + ptr, val, sysctl_handle_long, "LX", __DESCR(descr)) + +#define SYSCTL_ADD_XLONG(ctx, parent, nbr, name, access, ptr, descr) \ + sysctl_add_oid(ctx, parent, nbr, name, CTLTYPE_ULONG|(access), \ + ptr, 0, sysctl_handle_long, "LX", __DESCR(descr)) + /* Oid for an opaque object. Specified by a pointer and a length. */ #define SYSCTL_OPAQUE(parent, nbr, name, access, ptr, len, fmt, descr) \ SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), \ ==== //depot/projects/arm/src/sys/vm/vm_fault.c#13 (text+ko) ==== @@ -72,7 +72,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/vm/vm_fault.c,v 1.218 2006/08/06 00:17:17 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vm_fault.c,v 1.219 2006/08/13 00:11:09 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -842,14 +842,15 @@ if (prot & VM_PROT_WRITE) { vm_page_lock_queues(); vm_page_flag_set(fs.m, PG_WRITEABLE); - vm_object_set_writeable_dirty(fs.m->object); + vm_page_unlock_queues(); + vm_object_set_writeable_dirty(fs.object); /* * If the fault is a write, we know that this page is being * written NOW so dirty it explicitly to save on * pmap_is_modified() calls later. * - * If this is a NOSYNC mmap we do not want to set PG_NOSYNC + * If this is a NOSYNC mmap we do not want to set VPO_NOSYNC * if the page is already dirty to prevent data written with * the expectation of being synced from not being synced. * Likewise if this entry does not request NOSYNC then make @@ -861,11 +862,10 @@ */ if (fs.entry->eflags & MAP_ENTRY_NOSYNC) { if (fs.m->dirty == 0) - vm_page_flag_set(fs.m, PG_NOSYNC); + fs.m->oflags |= VPO_NOSYNC; } else { - vm_page_flag_clear(fs.m, PG_NOSYNC); + fs.m->oflags &= ~VPO_NOSYNC; } - vm_page_unlock_queues(); if (fault_flags & VM_FAULT_DIRTY) { vm_page_dirty(fs.m); vm_pager_page_unswapped(fs.m); ==== //depot/projects/arm/src/sys/vm/vm_object.c#13 (text+ko) ==== @@ -63,7 +63,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.365 2006/08/09 17:43:27 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vm_object.c,v 1.366 2006/08/13 00:11:09 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -687,7 +687,7 @@ * * Clean all dirty pages in the specified range of object. Leaves page * on whatever queue it is currently on. If NOSYNC is set then do not - * write out pages with PG_NOSYNC set (originally comes from MAP_NOSYNC), + * write out pages with VPO_NOSYNC set (originally comes from MAP_NOSYNC), * leaving the object dirty. * * When stuffing pages asynchronously, allow clustering. XXX we need a @@ -765,7 +765,7 @@ * If we have been asked to skip nosync pages and * this is a nosync page, we can't continue. */ - if ((flags & OBJPC_NOSYNC) && (p->flags & PG_NOSYNC)) { + if ((flags & OBJPC_NOSYNC) && (p->oflags & VPO_NOSYNC)) { if (--scanlimit == 0) break; ++tscan; @@ -805,7 +805,7 @@ clearobjflags = 1; TAILQ_FOREACH(p, &object->memq, listq) { vm_page_flag_set(p, PG_CLEANCHK); - if ((flags & OBJPC_NOSYNC) && (p->flags & PG_NOSYNC)) + if ((flags & OBJPC_NOSYNC) && (p->oflags & VPO_NOSYNC)) clearobjflags = 0; else pmap_remove_write(p); @@ -853,7 +853,7 @@ * nosync page, skip it. Note that the object flags were * not cleared in this case so we do not have to set them. */ - if ((flags & OBJPC_NOSYNC) && (p->flags & PG_NOSYNC)) { + if ((flags & OBJPC_NOSYNC) && (p->oflags & VPO_NOSYNC)) { vm_page_flag_clear(p, PG_CLEANCHK); continue; } ==== //depot/projects/arm/src/sys/vm/vm_page.c#17 (text+ko) ==== @@ -97,7 +97,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.324 2006/08/11 17:18:58 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/vm/vm_page.c,v 1.325 2006/08/13 00:11:09 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1580,7 +1580,7 @@ /* * Set valid, clear dirty bits. If validating the entire * page we can safely clear the pmap modify bit. We also - * use this opportunity to clear the PG_NOSYNC flag. If a process + * use this opportunity to clear the VPO_NOSYNC flag. If a process * takes a write fault on a MAP_NOSYNC memory area the flag will * be set again. * @@ -1603,7 +1603,7 @@ m->dirty &= ~pagebits; if (base == 0 && size == PAGE_SIZE) { pmap_clear_modify(m); - vm_page_flag_clear(m, PG_NOSYNC); + m->oflags &= ~VPO_NOSYNC; } } ==== //depot/projects/arm/src/sys/vm/vm_page.h#6 (text+ko) ==== @@ -57,7 +57,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $FreeBSD: src/sys/vm/vm_page.h,v 1.140 2006/08/09 17:43:27 alc Exp $ + * $FreeBSD: src/sys/vm/vm_page.h,v 1.141 2006/08/13 00:11:09 alc Exp $ */ /* @@ -144,6 +144,7 @@ */ #define VPO_WANTED 0x0002 /* someone is waiting for page */ #define VPO_SWAPINPROG 0x0200 /* swap I/O in progress on page */ +#define VPO_NOSYNC 0x0400 /* do not collect for syncer */ /* Make sure that u_long is at least 64 bits when PAGE_SIZE is 32K. */ #if PAGE_SIZE == 32768 @@ -226,7 +227,6 @@ #define PG_ZERO 0x0040 /* page is zeroed */ #define PG_REFERENCED 0x0080 /* page has been referenced */ #define PG_CLEANCHK 0x0100 /* page will be checked for cleaning */ -#define PG_NOSYNC 0x0400 /* do not collect for syncer */ #define PG_UNMANAGED 0x0800 /* No PV management for page */ #define PG_MARKER 0x1000 /* special queue marker page */ #define PG_SLAB 0x2000 /* object pointer is actually a slab */ ==== //depot/projects/arm/src/usr.sbin/pkg_install/version/perform.c#2 (text+ko) ==== @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/version/perform.c,v 1.15 2006/02/12 16:09:33 krion Exp $"); +__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/version/perform.c,v 1.16 2006/08/12 18:32:51 krion Exp $"); #include "lib.h" #include "version.h" @@ -259,7 +259,7 @@ if (!plist.name || strlen(plist.name) == 0) return; - if (ShowOrigin != FALSE) + if (ShowOrigin != FALSE && plist.origin != NULL) strlcpy(tmp, plist.origin, PATH_MAX); else { strlcpy(tmp, plist.name, PATH_MAX);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200608130417.k7D4HWQ2027864>