PERFORCE change 48160 for review
Robert Watson
rwatson at FreeBSD.org
Thu Mar 4 12:04:01 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=48160
Change 48160 by rwatson at rwatson_tislabs on 2004/03/04 12:03:38
Integrate netperf_socket branch:
- ACPI hacks and fixes.
- A variety of ATA fixes and fun.
- LINT fixes.
- USB vendor IDs
- Style and comment fixes for accounting, fork, file descriptor,
VM code.
- IPv6 multicast code moves entirely into mld.
Affected files ...
.. //depot/projects/netperf_socket/sys/amd64/conf/NOTES.fixed#2 delete
.. //depot/projects/netperf_socket/sys/contrib/dev/acpica/acfreebsd.h#3 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_cpu.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_ec.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/ata-chipset.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/ata/atapi-cam.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/ctau/ctau.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/umass.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs#4 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs.h#4 integrate
.. //depot/projects/netperf_socket/sys/dev/usb/usbdevs_data.h#4 integrate
.. //depot/projects/netperf_socket/sys/geom/concat/g_concat.c#4 integrate
.. //depot/projects/netperf_socket/sys/geom/concat/g_concat.h#4 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_acct.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_fork.c#3 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_tc.c#3 integrate
.. //depot/projects/netperf_socket/sys/netinet6/in6.c#4 integrate
.. //depot/projects/netperf_socket/sys/netinet6/mld6.c#2 integrate
.. //depot/projects/netperf_socket/sys/sys/filedesc.h#2 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_page.h#2 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_pageout.c#3 integrate
.. //depot/projects/netperf_socket/sys/vm/vm_zeroidle.c#3 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/contrib/dev/acpica/acfreebsd.h#3 (text+ko) ====
@@ -119,10 +119,17 @@
/*
* Some systems' ASL may have problems because they look for names
- * of Microsoft operating systems. To override this, set hw.acpi.os_name
- * to the appropriate string.
+ * of Microsoft operating systems. We default to "Microsoft Windows NT"
+ * (aka NT5 or Windows 2000) because it is most similar to our
+ * implementation and also most prevalent.
+ *
+ * To override this, set hw.acpi.os_name to the appropriate string.
*/
+#ifndef ACPICA_PEDANTIC
+#define ACPI_OS_NAME "Microsoft Windows NT"
+#else
#define ACPI_OS_NAME "FreeBSD"
+#endif
/* FreeBSD uses GCC */
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#4 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.122 2004/03/03 18:34:42 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.123 2004/03/04 04:42:59 njl Exp $
*/
#include "opt_acpi.h"
@@ -262,6 +262,8 @@
/* Set up any quirks we have for this XSDT. */
acpi_quirks_set();
+ if (acpi_disabled("acpi"))
+ return_VALUE (AE_ERROR);
return_VALUE (AE_OK);
}
@@ -283,9 +285,6 @@
if (resource_disabled("acpi", 0))
return_VOID;
- snprintf(acpi_ca_version, sizeof(acpi_ca_version), "0x%x",
- ACPI_CA_VERSION);
-
/* Make sure we're not being doubly invoked. */
if (device_find_child(parent, "acpi", 0) != NULL)
return_VOID;
@@ -294,6 +293,8 @@
if (ACPI_FAILURE(acpi_Startup()))
return_VOID;
+ snprintf(acpi_ca_version, sizeof(acpi_ca_version), "%#x", ACPI_CA_VERSION);
+
/* Attach the actual ACPI device. */
if ((child = BUS_ADD_CHILD(parent, 0, "acpi", 0)) == NULL) {
device_printf(parent, "ACPI: could not attach\n");
@@ -583,10 +584,19 @@
char *env, *tmp;
int len;
- /* If the user specifies "noquirks", leave the settings alone. */
+ /*
+ * If the user loaded a custom table or disabled "quirks", leave
+ * the settings alone.
+ */
len = 0;
+ if ((env = getenv("acpi_dsdt_load")) != NULL) {
+ /* XXX No strcasecmp but this is good enough. */
+ if (*env == 'Y' || *env == 'y')
+ goto out;
+ freeenv(env);
+ }
if ((env = getenv("debug.acpi.disabled")) != NULL) {
- if (strstr("noquirks", env) != NULL)
+ if (strstr("quirks", env) != NULL)
goto out;
len = strlen(env);
}
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi_cpu.c#2 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.29 2003/12/28 22:15:24 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.30 2004/03/04 05:17:52 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -394,8 +394,12 @@
/* If _PTC not present or other failure, try the P_BLK. */
if (sc->cpu_p_cnt == NULL) {
- /* The spec says P_BLK must be at least 6 bytes long. */
- if (sc->cpu_p_blk == 0 || sc->cpu_p_blk_len != 6)
+ /*
+ * The spec says P_BLK must be 6 bytes long. However, some
+ * systems use it to indicate a fractional set of features
+ * present so we take anything >= 4.
+ */
+ if (sc->cpu_p_blk_len < 4)
return (ENXIO);
gas.Address = sc->cpu_p_blk;
gas.AddressSpaceId = ACPI_ADR_SPACE_SYSTEM_IO;
@@ -447,7 +451,14 @@
cx_ptr++;
sc->cpu_cx_count++;
- if (sc->cpu_p_blk_len != 6)
+ /*
+ * The spec says P_BLK must be 6 bytes long. However, some systems
+ * use it to indicate a fractional set of features present so we
+ * take 5 as C2. Some may also have a value of 7 to indicate
+ * another C3 but most use _CST for this (as required) and having
+ * "only" C1-C3 is not a hardship.
+ */
+ if (sc->cpu_p_blk_len < 5)
goto done;
/* Validate and allocate resources for C2 (P_LVL2). */
@@ -465,6 +476,8 @@
sc->cpu_cx_count++;
}
}
+ if (sc->cpu_p_blk_len < 6)
+ goto done;
/* Validate and allocate resources for C3 (P_LVL3). */
if (AcpiGbl_FADT->Plvl3Lat < 1000 &&
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi_ec.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.43 2004/03/03 18:34:42 njl Exp $
+ * $FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.44 2004/03/04 05:58:50 njl Exp $
*/
/******************************************************************************
*
@@ -137,7 +137,7 @@
*****************************************************************************/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.43 2004/03/03 18:34:42 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.44 2004/03/04 05:58:50 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -713,28 +713,33 @@
ACPI_INTEGER *Value, void *Context, void *RegionContext)
{
struct acpi_ec_softc *sc = (struct acpi_ec_softc *)Context;
- ACPI_STATUS Status = AE_OK;
+ ACPI_STATUS Status;
UINT8 EcAddr, EcData;
int i;
ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, (UINT32)Address);
- if (Address > 0xFF || width % 8 != 0 || Value == NULL || Context == NULL)
+ if (width % 8 != 0 || Value == NULL || Context == NULL)
return_ACPI_STATUS (AE_BAD_PARAMETER);
+ if (Address + (width / 8) - 1 > 0xFF)
+ return_ACPI_STATUS (AE_BAD_ADDRESS);
- /*
- * Perform the transaction.
- */
+ if (Function == ACPI_READ)
+ *Value = 0;
EcAddr = Address;
- for (i = 0; i < width; i += 8) {
+ Status = AE_ERROR;
+
+ /* Perform the transaction(s), based on width. */
+ for (i = 0; i < width; i += 8, EcAddr++) {
Status = EcLock(sc);
if (ACPI_FAILURE(Status))
- return (Status);
+ break;
switch (Function) {
case ACPI_READ:
- EcData = 0;
Status = EcRead(sc, EcAddr, &EcData);
+ if (ACPI_SUCCESS(Status))
+ *Value |= ((ACPI_INTEGER)EcData) << i;
break;
case ACPI_WRITE:
EcData = (UINT8)((*Value) >> i);
@@ -746,15 +751,11 @@
Status = AE_BAD_PARAMETER;
break;
}
-
EcUnlock(sc);
if (ACPI_FAILURE(Status))
- return (Status);
+ break;
+ }
- *Value |= (ACPI_INTEGER)EcData << i;
- if (++EcAddr == 0)
- return_ACPI_STATUS (AE_BAD_PARAMETER);
- }
return_ACPI_STATUS (Status);
}
==== //depot/projects/netperf_socket/sys/dev/ata/ata-chipset.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.62 2004/02/25 09:55:49 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.63 2004/03/04 16:39:59 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -1714,14 +1714,15 @@
ch->r_io[ATA_BMDEVSPEC_1].offset = 0x100 + (unit01 << 7) + (unit10 << 9);
ch->r_io[ATA_IDX_ADDR].res = ctlr->r_io2;
- if (ctlr->chip->max_dma >= ATA_SA150)
+ if (ctlr->chip->max_dma >= ATA_SA150) {
ch->flags |= ATA_NO_SLAVE;
+ ch->reset = ata_sii_reset;
+ }
ctlr->dmainit(ch);
if (ctlr->chip->cfg2 & SIIBUG)
ch->dma->boundary = 8 * 1024;
- ch->reset = ata_sii_reset;
return 0;
}
==== //depot/projects/netperf_socket/sys/dev/ata/atapi-cam.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.33 2004/02/11 10:14:08 thomas Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/atapi-cam.c,v 1.34 2004/03/04 15:37:39 thomas Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -556,7 +556,7 @@
csio = &hcb->ccb->csio;
#ifdef CAMDEBUG
-# define err (request->error)
+# define err (request->u.atapi.sense_key)
if (CAM_DEBUGGED(csio->ccb_h.path, CAM_DEBUG_CDB)) {
printf("atapi_cb: hcb@%p error = %02x: (sk = %02x%s%s%s)\n",
hcb, err, err >> 4,
@@ -579,6 +579,7 @@
csio->scsi_status = SCSI_STATUS_CHECK_COND;
if ((csio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) {
+#if 0
static const int8_t ccb[16] = { ATAPI_REQUEST_SENSE, 0, 0, 0,
sizeof(struct atapi_sense), 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0 };
@@ -595,6 +596,14 @@
mtx_unlock (&Giant);
ata_queue_request(request);
return;
+#else
+ /* The ATA driver has already requested sense for us. */
+ if (request->error == 0) {
+ /* The ATA autosense suceeded. */
+ bcopy (&request->u.atapi.sense_data, &csio->sense_data, sizeof(struct atapi_sense));
+ csio->ccb_h.status |= CAM_AUTOSNS_VALID;
+ }
+#endif
}
} else {
rc = CAM_REQ_CMP;
==== //depot/projects/netperf_socket/sys/dev/ctau/ctau.c#2 (text+ko) ====
@@ -17,7 +17,7 @@
* Cronyx Id: ctau.c,v 1.1.2.4 2003/12/11 17:33:43 rik Exp $
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ctau/ctau.c,v 1.1 2004/02/23 20:19:00 rik Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ctau/ctau.c,v 1.2 2004/03/04 14:16:12 bms Exp $");
#include <dev/cx/machdep.h>
#include <dev/ctau/ctddk.h>
@@ -151,7 +151,7 @@
outb (bcr1_port, bcr1); \
dclk_tick (b); }
-#define DEBUG(x) /*trace_str x*/
+#define CTAU_DEBUG(x) /*trace_str x*/
int ct_download2 (port_t port, const unsigned char *fwaddr)
{
@@ -177,7 +177,7 @@
for (val=0; val<2*3; ++val)
nconfig_clr(port);
if (nstatus(port)) {
- DEBUG (("Bad nstatus, downloading aborted (bsr3=0x%x).\n", inb(BSR3(port))));
+ CTAU_DEBUG (("Bad nstatus, downloading aborted (bsr3=0x%x).\n", inb(BSR3(port))));
nconfig_set(port);
return 0;
}
@@ -199,7 +199,7 @@
val = unpack_getchar (&t);
if (nstatus(port) == 0) {
- DEBUG (("Bad nstatus, %d bytes remaining.\n", bytes));
+ CTAU_DEBUG (("Bad nstatus, %d bytes remaining.\n", bytes));
goto failed;
}
@@ -209,13 +209,13 @@
dclk_tick (port);
if (nstatus(port) == 0) {
- DEBUG (("Bad nstatus after confdone, %d bytes remaining (%d).\n",
+ CTAU_DEBUG (("Bad nstatus after confdone, %d bytes remaining (%d).\n",
bytes, t.ptr - fwaddr));
goto failed;
}
/* Succeeded. */
- /*DEBUG (("Download succeeded.\n"));*/
+ /*CTAU_DEBUG (("Download succeeded.\n"));*/
return 1;
}
@@ -231,9 +231,9 @@
/* if ((bytes & 1023) == 0) putch ('.'); */
}
- DEBUG (("Bad confdone.\n"));
+ CTAU_DEBUG (("Bad confdone.\n"));
failed:
- DEBUG (("Downloading aborted.\n"));
+ CTAU_DEBUG (("Downloading aborted.\n"));
return 0;
}
==== //depot/projects/netperf_socket/sys/dev/usb/umass.c#3 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/usb/umass.c,v 1.103 2004/02/06 14:38:14 sanpei Exp $
+ * $FreeBSD: src/sys/dev/usb/umass.c,v 1.104 2004/03/04 07:20:48 sanpei Exp $
* $NetBSD: umass.c,v 1.28 2000/04/02 23:46:53 augustss Exp $
*/
@@ -381,6 +381,10 @@
UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
WRONG_CSWSIG
},
+ { USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_UCF100, RID_WILDCARD,
+ UMASS_PROTO_ATAPI | UMASS_PROTO_BBB,
+ NO_INQUIRY | NO_GETMAXLUN
+ },
{ USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB20AN, RID_WILDCARD,
UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
NO_QUIRKS
==== //depot/projects/netperf_socket/sys/dev/usb/usbdevs#4 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.164 2004/03/02 19:01:30 peter Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.165 2004/03/04 07:20:48 sanpei Exp $
/*
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -272,6 +272,7 @@
vendor MICROTECH 0x07af Microtech
vendor GENERALINSTMNTS 0x07b2 General Instruments (Motorola)
vendor OLYMPUS 0x07b4 Olympus
+vendor ONSPEC 0x07c4 OnSpec Electronic
vendor ABOCOM 0x07b8 AboCom Systems
vendor KEISOKUGIKEN 0x07c1 Keisokugiken
vendor APG 0x07c5 APG Cash Drawer
@@ -1015,6 +1016,9 @@
product OMNIVISION OV511 0x0511 OV511 Camera
product OMNIVISION OV511PLUS 0xa511 OV511+ Camera
+/* OnSpec Electronic, Inc. */
+product ONSPEC UCF100 0xa400 FlashLink UCF-100 CompactFlash Reader
+
/* Palm Computing, Inc. product */
product PALM SERIAL 0x0080 USB Serial Adaptor
product PALM M500 0x0001 Palm m500
==== //depot/projects/netperf_socket/sys/dev/usb/usbdevs.h#4 (text+ko) ====
@@ -1,10 +1,10 @@
-/* $FreeBSD: src/sys/dev/usb/usbdevs.h,v 1.171 2004/03/02 19:01:56 peter Exp $ */
+/* $FreeBSD: src/sys/dev/usb/usbdevs.h,v 1.172 2004/03/04 07:22:30 sanpei Exp $ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
- * FreeBSD: src/sys/dev/usb/usbdevs,v 1.164 2004/03/02 19:01:30 peter Exp
+ * FreeBSD: src/sys/dev/usb/usbdevs,v 1.165 2004/03/04 07:20:48 sanpei Exp
*/
/*
@@ -279,6 +279,7 @@
#define USB_VENDOR_MICROTECH 0x07af /* Microtech */
#define USB_VENDOR_GENERALINSTMNTS 0x07b2 /* General Instruments (Motorola) */
#define USB_VENDOR_OLYMPUS 0x07b4 /* Olympus */
+#define USB_VENDOR_ONSPEC 0x07c4 /* OnSpec Electronic */
#define USB_VENDOR_ABOCOM 0x07b8 /* AboCom Systems */
#define USB_VENDOR_KEISOKUGIKEN 0x07c1 /* Keisokugiken */
#define USB_VENDOR_APG 0x07c5 /* APG Cash Drawer */
@@ -1022,6 +1023,9 @@
#define USB_PRODUCT_OMNIVISION_OV511 0x0511 /* OV511 Camera */
#define USB_PRODUCT_OMNIVISION_OV511PLUS 0xa511 /* OV511+ Camera */
+/* OnSpec Electronic, Inc. */
+#define USB_PRODUCT_ONSPEC_UCF100 0xa400 /* FlashLink UCF-100 CompactFlash Reader */
+
/* Palm Computing, Inc. product */
#define USB_PRODUCT_PALM_SERIAL 0x0080 /* USB Serial Adaptor */
#define USB_PRODUCT_PALM_M500 0x0001 /* Palm m500 */
==== //depot/projects/netperf_socket/sys/dev/usb/usbdevs_data.h#4 (text+ko) ====
@@ -1,10 +1,10 @@
-/* $FreeBSD: src/sys/dev/usb/usbdevs_data.h,v 1.171 2004/03/02 19:01:56 peter Exp $ */
+/* $FreeBSD: src/sys/dev/usb/usbdevs_data.h,v 1.172 2004/03/04 07:22:30 sanpei Exp $ */
/*
* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
*
* generated from:
- * FreeBSD: src/sys/dev/usb/usbdevs,v 1.164 2004/03/02 19:01:30 peter Exp
+ * FreeBSD: src/sys/dev/usb/usbdevs,v 1.165 2004/03/04 07:20:48 sanpei Exp
*/
/*
@@ -2332,6 +2332,12 @@
"OV511+ Camera",
},
{
+ USB_VENDOR_ONSPEC, USB_PRODUCT_ONSPEC_UCF100,
+ 0,
+ "OnSpec Electronic",
+ "FlashLink UCF-100 CompactFlash Reader",
+ },
+ {
USB_VENDOR_PALM, USB_PRODUCT_PALM_SERIAL,
0,
"Palm Computing",
@@ -4546,6 +4552,12 @@
NULL,
},
{
+ USB_VENDOR_ONSPEC, 0,
+ USB_KNOWNDEV_NOPROD,
+ "OnSpec Electronic",
+ NULL,
+ },
+ {
USB_VENDOR_ABOCOM, 0,
USB_KNOWNDEV_NOPROD,
"AboCom Systems",
==== //depot/projects/netperf_socket/sys/geom/concat/g_concat.c#4 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2003 Pawel Jakub Dawidek <pjd at FreeBSD.org>
+ * Copyright (c) 2004 Pawel Jakub Dawidek <pjd at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/concat/g_concat.c,v 1.4 2004/03/03 22:29:24 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/concat/g_concat.c,v 1.5 2004/03/04 10:22:42 pjd Exp $");
#include <sys/param.h>
#include <sys/systm.h>
==== //depot/projects/netperf_socket/sys/geom/concat/g_concat.h#4 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2003 Pawel Jakub Dawidek <pjd at FreeBSD.org>
+ * Copyright (c) 2004 Pawel Jakub Dawidek <pjd at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/geom/concat/g_concat.h,v 1.4 2004/03/03 22:29:24 pjd Exp $
+ * $FreeBSD: src/sys/geom/concat/g_concat.h,v 1.5 2004/03/04 10:22:42 pjd Exp $
*/
#ifndef _G_CONCAT_H_
==== //depot/projects/netperf_socket/sys/kern/kern_acct.c#3 (text+ko) ====
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_acct.c,v 1.69 2004/02/04 21:52:55 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_acct.c,v 1.70 2004/03/04 09:47:09 bde Exp $");
#include "opt_mac.h"
@@ -137,6 +137,7 @@
return (error);
mtx_lock(&Giant);
+
/*
* If accounting is to be started to a file, open that file for
* appending and make sure it's a 'normal'.
@@ -169,16 +170,14 @@
#endif
}
+ mtx_lock(&acct_mtx);
+
/*
* If accounting was previously enabled, kill the old space-watcher,
* close the file, and (if no new file was specified, leave).
- */
-
- /*
- * XXX arr: Should not hold lock over vnode operation.
+ *
+ * XXX arr: should not hold lock over vnode operation.
*/
-
- mtx_lock(&acct_mtx);
if (acctp != NULLVP || savacctp != NULLVP) {
callout_stop(&acctwatch_callout);
error = vn_close((acctp != NULLVP ? acctp : savacctp),
@@ -205,6 +204,7 @@
mtx_unlock(&acct_mtx);
log(LOG_NOTICE, "Accounting enabled\n");
acctwatch(NULL);
+
done2:
mtx_unlock(&Giant);
return (error);
@@ -216,19 +216,18 @@
* and are enumerated below. (They're also noted in the system
* "acct.h" header file.)
*/
-
int
acct_process(td)
struct thread *td;
{
- struct proc *p = td->td_proc;
struct acct acct;
+ struct timeval ut, st, tmp;
+ struct plimit *newlim, *oldlim;
+ struct proc *p;
struct rusage *r;
- struct timeval ut, st, tmp;
+ struct ucred *uc;
+ struct vnode *vp;
int t, ret;
- struct vnode *vp;
- struct ucred *uc;
- struct plimit *newlim, *oldlim;
mtx_lock(&acct_mtx);
@@ -239,6 +238,8 @@
return (0);
}
+ p = td->td_proc;
+
/*
* Get process accounting information.
*/
@@ -292,7 +293,7 @@
PROC_UNLOCK(p);
/*
- * Write the accounting information to the file.
+ * Finish doing things that require acct_mtx, and release acct_mtx.
*/
uc = crhold(acctcred);
vref(vp);
@@ -310,6 +311,9 @@
PROC_UNLOCK(p);
lim_free(oldlim);
+ /*
+ * Write the accounting information to the file.
+ */
VOP_LEASE(vp, td, uc, LEASE_WRITE);
ret = vn_rdwr(UIO_WRITE, vp, (caddr_t)&acct, sizeof (acct),
(off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, uc, NOCRED,
@@ -374,10 +378,9 @@
mtx_lock(&acct_mtx);
/*
- * XXX arr: Need to fix the issue of holding acct_mtx over
+ * XXX arr: need to fix the issue of holding acct_mtx over
* the below vnode operations.
*/
-
if (savacctp != NULLVP) {
if (savacctp->v_type == VBAD) {
(void) vn_close(savacctp, savacctflags, savacctcred,
==== //depot/projects/netperf_socket/sys/kern/kern_fork.c#3 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_fork.c,v 1.215 2004/02/26 00:27:02 truckman Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_fork.c,v 1.216 2004/03/04 09:56:29 bde Exp $");
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -134,12 +134,13 @@
struct thread *td;
struct rfork_args *uap;
{
+ struct proc *p2;
int error;
- struct proc *p2;
- /* Don't allow kernel only flags. */
+ /* Don't allow kernel-only flags. */
if ((uap->flags & RFKERNELONLY) != 0)
return (EINVAL);
+
error = fork1(td, uap->flags, 0, &p2);
if (error == 0) {
td->td_retval[0] = p2 ? p2->p_pid : 0;
@@ -236,7 +237,7 @@
}
/*
- * Unshare file descriptors (from parent.)
+ * Unshare file descriptors (from parent).
*/
if (flags & RFFDG) {
FILEDESC_LOCK(p1->p_fd);
@@ -271,7 +272,7 @@
*/
PROC_LOCK(p1);
if (thread_single(SINGLE_NO_EXIT)) {
- /* Abort.. someone else is single threading before us */
+ /* Abort. Someone else is single threading before us. */
PROC_UNLOCK(p1);
mtx_unlock(&Giant);
return (ERESTART);
@@ -458,7 +459,7 @@
kg2 = FIRST_KSEGRP_IN_PROC(p2);
ke2 = FIRST_KSE_IN_KSEGRP(kg2);
- /* Allocate and switch to an alternate kstack if specified */
+ /* Allocate and switch to an alternate kstack if specified. */
if (pages != 0)
vm_thread_new_altkstack(td2, pages);
@@ -532,16 +533,16 @@
p2->p_fdtol = fdtol;
/*
- * p_limit is copy-on-write, bump refcnt,
+ * p_limit is copy-on-write. Bump its refcount.
*/
p2->p_limit = lim_hold(p1->p_limit);
PROC_UNLOCK(p1);
PROC_UNLOCK(p2);
/*
- * Setup linkage for kernel based threading
+ * Set up linkage for kernel based threading.
*/
- if((flags & RFTHREAD) != 0) {
+ if ((flags & RFTHREAD) != 0) {
mtx_lock(&ppeers_lock);
p2->p_peers = p1->p_peers;
p1->p_peers = p2;
@@ -723,7 +724,7 @@
PROC_UNLOCK(p2);
/*
- * If other threads are waiting, let them continue now
+ * If other threads are waiting, let them continue now.
*/
if (p1->p_flag & P_SA) {
PROC_LOCK(p1);
==== //depot/projects/netperf_socket/sys/kern/kern_tc.c#3 (text+ko) ====
@@ -8,7 +8,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.160 2004/01/22 19:50:06 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.161 2004/03/04 14:14:23 phk Exp $");
#include "opt_ntp.h"
@@ -670,10 +670,6 @@
return;
}
- /* Return if nothing really happened. */
- if (*pcount == pps->capcount)
- return;
-
/* Convert the count to a timespec. */
tcount = pps->capcount - pps->capth->th_offset_count;
tcount &= pps->capth->th_counter->tc_counter_mask;
==== //depot/projects/netperf_socket/sys/netinet6/in6.c#4 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netinet6/in6.c,v 1.44 2004/03/03 14:33:16 ume Exp $ */
+/* $FreeBSD: src/sys/netinet6/in6.c,v 1.46 2004/03/04 15:07:42 ume Exp $ */
/* $KAME: in6.c,v 1.259 2002/01/21 11:37:50 keiichi Exp $ */
/*
@@ -1563,94 +1563,6 @@
}
/*
- * Add an address to the list of IP6 multicast addresses for a
- * given interface.
- */
-struct in6_multi *
-in6_addmulti(maddr6, ifp, errorp)
- struct in6_addr *maddr6;
- struct ifnet *ifp;
- int *errorp;
-{
- struct in6_multi *in6m;
- struct sockaddr_in6 sin6;
- struct ifmultiaddr *ifma;
- int s = splnet();
-
- *errorp = 0;
-
- /*
- * Call generic routine to add membership or increment
- * refcount. It wants addresses in the form of a sockaddr,
- * so we build one here (being careful to zero the unused bytes).
- */
- bzero(&sin6, sizeof sin6);
- sin6.sin6_family = AF_INET6;
- sin6.sin6_len = sizeof sin6;
- sin6.sin6_addr = *maddr6;
- *errorp = if_addmulti(ifp, (struct sockaddr *)&sin6, &ifma);
- if (*errorp) {
- splx(s);
- return 0;
- }
-
- /*
- * If ifma->ifma_protospec is null, then if_addmulti() created
- * a new record. Otherwise, we are done.
- */
- if (ifma->ifma_protospec != 0)
- return ifma->ifma_protospec;
-
- /* XXX - if_addmulti uses M_WAITOK. Can this really be called
- at interrupt time? If so, need to fix if_addmulti. XXX */
- in6m = (struct in6_multi *)malloc(sizeof(*in6m), M_IPMADDR, M_NOWAIT);
- if (in6m == NULL) {
- splx(s);
- return (NULL);
- }
-
- bzero(in6m, sizeof *in6m);
- in6m->in6m_addr = *maddr6;
- in6m->in6m_ifp = ifp;
- in6m->in6m_ifma = ifma;
- ifma->ifma_protospec = in6m;
- LIST_INSERT_HEAD(&in6_multihead, in6m, in6m_entry);
-
- /*
- * Let MLD6 know that we have joined a new IPv6 multicast
- * group.
- */
- mld6_start_listening(in6m);
- splx(s);
- return (in6m);
-}
-
-/*
- * Delete a multicast address record.
- */
-void
-in6_delmulti(in6m)
- struct in6_multi *in6m;
-{
- struct ifmultiaddr *ifma = in6m->in6m_ifma;
- int s = splnet();
-
- if (ifma->ifma_refcount == 1) {
- /*
- * No remaining claims to this record; let MLD6 know
- * that we are leaving the multicast group.
- */
- mld6_stop_listening(in6m);
- ifma->ifma_protospec = 0;
- LIST_REMOVE(in6m, in6m_entry);
- free(in6m, M_IPMADDR);
- }
- /* XXX - should be separate API for when we have an ifma? */
- if_delmulti(ifma->ifma_ifp, ifma->ifma_addr);
- splx(s);
-}
-
-/*
* Find an IPv6 interface link-local address specific to an interface.
*/
struct in6_ifaddr *
==== //depot/projects/netperf_socket/sys/netinet6/mld6.c#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netinet6/mld6.c,v 1.15 2003/10/31 16:07:15 ume Exp $ */
+/* $FreeBSD: src/sys/netinet6/mld6.c,v 1.16 2004/03/04 15:07:42 ume Exp $ */
/* $KAME: mld6.c,v 1.27 2001/04/04 05:17:30 itojun Exp $ */
/*
@@ -78,6 +78,7 @@
#include <sys/socket.h>
#include <sys/protosw.h>
#include <sys/syslog.h>
+#include <sys/malloc.h>
#include <net/if.h>
@@ -475,3 +476,95 @@
}
}
}
+
+/*
+ * Add an address to the list of IP6 multicast addresses for a given interface.
+ * Add source addresses to the list also, if upstream router is MLDv2 capable
+ * and the number of source is not 0.
+ */
+struct in6_multi *
+in6_addmulti(maddr6, ifp, errorp)
+ struct in6_addr *maddr6;
+ struct ifnet *ifp;
+ int *errorp;
+{
+ struct in6_multi *in6m;
+ struct ifmultiaddr *ifma;
+ struct sockaddr_in6 sa6;
+ int s = splnet();
+
+ *errorp = 0;
+
+ /*
+ * Call generic routine to add membership or increment
+ * refcount. It wants addresses in the form of a sockaddr,
+ * so we build one here (being careful to zero the unused bytes).
+ */
+ bzero(&sa6, sizeof(sa6));
+ sa6.sin6_family = AF_INET6;
+ sa6.sin6_len = sizeof(struct sockaddr_in6);
+ sa6.sin6_addr = *maddr6;
+ *errorp = if_addmulti(ifp, (struct sockaddr *)&sa6, &ifma);
+ if (*errorp) {
+ splx(s);
+ return 0;
+ }
+
+ /*
+ * If ifma->ifma_protospec is null, then if_addmulti() created
+ * a new record. Otherwise, we are done.
+ */
+ if (ifma->ifma_protospec != 0) {
+ splx(s);
+ return ifma->ifma_protospec;
+ }
+
+ /* XXX - if_addmulti uses M_WAITOK. Can this really be called
+ at interrupt time? If so, need to fix if_addmulti. XXX */
+ in6m = (struct in6_multi *)malloc(sizeof(*in6m), M_IPMADDR, M_NOWAIT);
+ if (in6m == NULL) {
+ splx(s);
+ return (NULL);
+ }
+
+ bzero(in6m, sizeof *in6m);
+ in6m->in6m_addr = *maddr6;
+ in6m->in6m_ifp = ifp;
+ in6m->in6m_refcount = 1;
+ in6m->in6m_ifma = ifma;
+ ifma->ifma_protospec = in6m;
+ LIST_INSERT_HEAD(&in6_multihead, in6m, in6m_entry);
+
+ /*
+ * Let MLD6 know that we have joined a new IPv6 multicast
+ * group.
+ */
+ mld6_start_listening(in6m);
+ splx(s);
+ return (in6m);
+}
+
+/*
+ * Delete a multicast address record.
+ */
+void
+in6_delmulti(in6m)
+ struct in6_multi *in6m;
+{
+ struct ifmultiaddr *ifma = in6m->in6m_ifma;
+ int s = splnet();
+
+ if (ifma->ifma_refcount == 1) {
+ /*
+ * No remaining claims to this record; let MLD6 know
+ * that we are leaving the multicast group.
+ */
+ mld6_stop_listening(in6m);
+ ifma->ifma_protospec = 0;
+ LIST_REMOVE(in6m, in6m_entry);
+ free(in6m, M_IPMADDR);
+ }
+ /* XXX - should be separate API for when we have an ifma? */
+ if_delmulti(ifma->ifma_ifp, ifma->ifma_addr);
+ splx(s);
+}
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list