PERFORCE change 54725 for review
Robert Watson
rwatson at FreeBSD.org
Sat Jun 12 16:59:25 GMT 2004
http://perforce.freebsd.org/chv.cgi?CH=54725
Change 54725 by rwatson at rwatson_tislabs on 2004/06/12 16:57:36
Integrate netperf_socket; loop back:
- Socket mutexes
- Socket mutex init/destroy
Also:
- Altq
- Ipfw ucred caching optimization
Affected files ...
.. //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#8 integrate
.. //depot/projects/netperf_socket/sys/alpha/alpha/uma_machdep.c#1 branch
.. //depot/projects/netperf_socket/sys/conf/files.alpha#4 integrate
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_cbq.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_cbq.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_cdnr.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_cdnr.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_classq.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_hfsc.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_hfsc.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_priq.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_priq.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_red.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_red.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_rio.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_rio.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_rmclass.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_rmclass.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_rmclass_debug.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_subr.c#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altq_var.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/altqconf.h#1 branch
.. //depot/projects/netperf_socket/sys/contrib/altq/altq/if_altq.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/bktr/bktr_mem.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/esp/esp_sbus.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/esp/ncr53c9x.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/esp/ncr53c9xvar.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/hme/if_hme.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/twe/twe.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/twe/twe_freebsd.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/twe/twevar.h#5 integrate
.. //depot/projects/netperf_socket/sys/ia64/ia64/pmap.c#8 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_kse.c#2 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_thread.c#12 integrate
.. //depot/projects/netperf_socket/sys/kern/tty_conf.c#4 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_mbuf.c#7 integrate
.. //depot/projects/netperf_socket/sys/kern/uipc_socket.c#15 integrate
.. //depot/projects/netperf_socket/sys/netinet/ip_fw2.c#7 integrate
.. //depot/projects/netperf_socket/sys/sys/socketvar.h#9 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#8 (text+ko) ====
@@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.147 2004/06/10 04:30:59 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.149 2004/06/12 06:03:27 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -172,7 +172,6 @@
#include <vm/vm_pageout.h>
#include <vm/vm_pager.h>
#include <vm/uma.h>
-#include <vm/uma_int.h>
#include <sys/user.h>
@@ -555,52 +554,6 @@
return 0;
}
-void *
-uma_small_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
-{
- static vm_pindex_t color;
- vm_page_t m;
- int pflags;
- void *va;
-
- *flags = UMA_SLAB_PRIV;
-
- if ((wait & (M_NOWAIT|M_USE_RESERVE)) == M_NOWAIT)
- pflags = VM_ALLOC_INTERRUPT;
- else
- pflags = VM_ALLOC_SYSTEM;
-
- if (wait & M_ZERO)
- pflags |= VM_ALLOC_ZERO;
-
- for (;;) {
- m = vm_page_alloc(NULL, color++, pflags | VM_ALLOC_NOOBJ);
- if (m == NULL) {
- if (wait & M_NOWAIT)
- return (NULL);
- else
- VM_WAIT;
- } else
- break;
- }
-
- va = (void *)ALPHA_PHYS_TO_K0SEG(m->phys_addr);
- if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0)
- bzero(va, PAGE_SIZE);
- return (va);
-}
-
-void
-uma_small_free(void *mem, int size, u_int8_t flags)
-{
- vm_page_t m;
-
- m = PHYS_TO_VM_PAGE(ALPHA_K0SEG_TO_PHYS((vm_offset_t)mem));
- vm_page_lock_queues();
- vm_page_free(m);
- vm_page_unlock_queues();
-}
-
/*
* Initialize the pmap module.
* Called by vm_init, to initialize any structures that the pmap
==== //depot/projects/netperf_socket/sys/conf/files.alpha#4 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.alpha,v 1.110 2004/05/17 05:46:15 imp Exp $
+# $FreeBSD: src/sys/conf/files.alpha,v 1.111 2004/06/11 19:55:56 alc Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -83,6 +83,7 @@
alpha/alpha/sys_machdep.c standard
alpha/alpha/trap.c standard
alpha/alpha/uio_machdep.c standard
+alpha/alpha/uma_machdep.c standard
alpha/alpha/vm_machdep.c standard
alpha/isa/isa.c optional isa
alpha/isa/isa_dma.c optional isa
==== //depot/projects/netperf_socket/sys/dev/bktr/bktr_mem.c#3 (text+ko) ====
@@ -1,9 +1,5 @@
-
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_mem.c,v 1.8 2004/05/30 20:08:27 phk Exp $");
/*
- * This is prt of the Driver for Video Capture Cards (Frame grabbers)
+ * This is part of the Driver for Video Capture Cards (Frame grabbers)
* and TV Tuner cards using the Brooktree Bt848, Bt848A, Bt849A, Bt878, Bt879
* chipset.
* Copyright Roger Hardiman.
@@ -47,6 +43,8 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_mem.c,v 1.10 2004/06/11 18:47:44 schweikh Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -55,12 +53,12 @@
#include <dev/bktr/bktr_mem.h>
struct memory_pointers {
- int addresses_stored;
- vm_offset_t dma_prog;
- vm_offset_t odd_dma_prog;
- vm_offset_t vbidata;
- vm_offset_t vbibuffer;
- vm_offset_t buf;
+ int addresses_stored;
+ vm_offset_t dma_prog;
+ vm_offset_t odd_dma_prog;
+ vm_offset_t vbidata;
+ vm_offset_t vbibuffer;
+ vm_offset_t buf;
} memory_pointers;
static struct memory_pointers memory_list[BKTR_MEM_MAX_DEVICES];
@@ -72,39 +70,37 @@
switch (type) {
case MOD_LOAD:
+ printf("bktr_mem: memory holder loaded\n");
+ /*
+ * bzero((caddr_t)memory_list, sizeof(memory_list));
+ * causes a panic. So use a simple for loop for now.
+ */
{
- printf("bktr_mem: memory holder loaded\n");
-/*
- * bzero causes a panic.
- bzero((caddr_t)memory_list, sizeof(memory_list));
- * So use a simple for loop for now.
-*/
- {int x;
- unsigned char *d = (unsigned char *)memory_list;
- for (x=0; x< sizeof(memory_list); x++) {
- d[x]=0;
- }
+ int x;
+ unsigned char *d;
+
+ d = (unsigned char *)memory_list;
+ for (x = 0; x < sizeof(memory_list); x++)
+ d[x] = 0;
}
return 0;
- }
case MOD_UNLOAD:
- {
printf("bktr_mem: memory holder cannot be unloaded\n");
return EBUSY;
- }
default:
break;
}
- return 0;
-};
+ return (0);
+}
/*************************************************************/
int
-bktr_has_stored_addresses(int unit) {
+bktr_has_stored_addresses(int unit)
+{
- if ((unit < 0) || (unit >= BKTR_MEM_MAX_DEVICES)) {
- printf("bktr_mem: Unit number %d invalid\n",unit);
+ if (unit < 0 || unit >= BKTR_MEM_MAX_DEVICES) {
+ printf("bktr_mem: Unit number %d invalid\n", unit);
return 0;
}
@@ -114,64 +110,83 @@
/*************************************************************/
void
-bktr_store_address(int unit, int type, vm_offset_t addr) {
+bktr_store_address(int unit, int type, vm_offset_t addr)
+{
- if ((unit < 0) || (unit >= BKTR_MEM_MAX_DEVICES)) {
- printf("bktr_mem: Unit number %d invalid for memory type %d, address 0x%x\n"
- ,unit,type,addr);
+ if (unit < 0 || unit >= BKTR_MEM_MAX_DEVICES) {
+ printf("bktr_mem: Unit number %d invalid for memory type %d, address 0x%x\n",
+ unit, type, addr);
return;
}
switch (type) {
- case BKTR_MEM_DMA_PROG: memory_list[unit].dma_prog = addr;
- memory_list[unit].addresses_stored = 1;
- break;
- case BKTR_MEM_ODD_DMA_PROG: memory_list[unit].odd_dma_prog = addr;
- memory_list[unit].addresses_stored = 1;
- break;
- case BKTR_MEM_VBIDATA: memory_list[unit].vbidata = addr;
- memory_list[unit].addresses_stored = 1;
- break;
- case BKTR_MEM_VBIBUFFER: memory_list[unit].vbibuffer = addr;
- memory_list[unit].addresses_stored = 1;
- break;
- case BKTR_MEM_BUF: memory_list[unit].buf = addr;
- memory_list[unit].addresses_stored = 1;
- break;
- default: printf("bktr_mem: Invalid memory type %d for bktr%d, address 0x%xn",
- type,unit,addr);
- break;
+ case BKTR_MEM_DMA_PROG:
+ memory_list[unit].dma_prog = addr;
+ memory_list[unit].addresses_stored = 1;
+ break;
+ case BKTR_MEM_ODD_DMA_PROG:
+ memory_list[unit].odd_dma_prog = addr;
+ memory_list[unit].addresses_stored = 1;
+ break;
+ case BKTR_MEM_VBIDATA:
+ memory_list[unit].vbidata = addr;
+ memory_list[unit].addresses_stored = 1;
+ break;
+ case BKTR_MEM_VBIBUFFER:
+ memory_list[unit].vbibuffer = addr;
+ memory_list[unit].addresses_stored = 1;
+ break;
+ case BKTR_MEM_BUF:
+ memory_list[unit].buf = addr;
+ memory_list[unit].addresses_stored = 1;
+ break;
+ default:
+ printf("bktr_mem: Invalid memory type %d for bktr%d, address 0x%xn",
+ type, unit, addr);
+ break;
}
}
/*************************************************************/
vm_offset_t
-bktr_retrieve_address(int unit, int type) {
+bktr_retrieve_address(int unit, int type)
+{
- if ((unit < 0) || (unit >= BKTR_MEM_MAX_DEVICES)) {
- printf("bktr_mem: Unit number %d too large for memory type %d\n",unit,type);
- return NULL;
+ if (unit < 0 || unit >= BKTR_MEM_MAX_DEVICES) {
+ printf("bktr_mem: Unit number %d too large for memory type %d\n",
+ unit, type);
+ return (0);
}
switch (type) {
- case BKTR_MEM_DMA_PROG: return memory_list[unit].dma_prog;
- case BKTR_MEM_ODD_DMA_PROG: return memory_list[unit].odd_dma_prog;
- case BKTR_MEM_VBIDATA: return memory_list[unit].vbidata;
- case BKTR_MEM_VBIBUFFER: return memory_list[unit].vbibuffer;
- case BKTR_MEM_BUF: return memory_list[unit].buf;
- default: printf("bktr_mem: Invalid memory type %d for bktr%d",type,unit);
- return NULL;
+ case BKTR_MEM_DMA_PROG:
+ return memory_list[unit].dma_prog;
+ case BKTR_MEM_ODD_DMA_PROG:
+ return memory_list[unit].odd_dma_prog;
+ case BKTR_MEM_VBIDATA:
+ return memory_list[unit].vbidata;
+ case BKTR_MEM_VBIBUFFER:
+ return memory_list[unit].vbibuffer;
+ case BKTR_MEM_BUF:
+ return memory_list[unit].buf;
+ default:
+ printf("bktr_mem: Invalid memory type %d for bktr%d",
+ type, unit);
+ return (0);
}
}
/*************************************************************/
static moduledata_t bktr_mem_mod = {
- "bktr_mem",
- bktr_mem_modevent,
- 0
+ "bktr_mem",
+ bktr_mem_modevent,
+ 0
};
-/* The load order is First and module type is Driver to make sure bktr_mem
- loads (and initialises) before bktr when both are loaded together */
+
+/*
+ * The load order is First and module type is Driver to make sure bktr_mem
+ * loads (and initialises) before bktr when both are loaded together.
+ */
DECLARE_MODULE(bktr_mem, bktr_mem_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
MODULE_VERSION(bktr_mem, 1);
==== //depot/projects/netperf_socket/sys/dev/esp/esp_sbus.c#2 (text+ko) ====
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/esp/esp_sbus.c,v 1.1 2004/06/10 05:11:39 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/esp/esp_sbus.c,v 1.3 2004/06/12 03:23:37 scottl Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -391,6 +391,8 @@
sc->sc_maxsync = sc->sc_minsync;
sc->sc_maxoffset = 15;
+ sc->sc_extended_geom = 1;
+
/*
* Alas, we must now modify the value a bit, because it's
* only valid when can switch on FASTCLK and FASTSCSI bits
==== //depot/projects/netperf_socket/sys/dev/esp/ncr53c9x.c#2 (text+ko) ====
@@ -104,7 +104,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/esp/ncr53c9x.c,v 1.1 2004/06/10 05:11:39 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/esp/ncr53c9x.c,v 1.3 2004/06/12 05:19:17 scottl Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -839,7 +839,7 @@
return;
case XPT_CALC_GEOMETRY:
mtx_unlock(&sc->sc_lock);
- cam_calc_geometry(&ccb->ccg, 0); /* XXX Extended? */
+ cam_calc_geometry(&ccb->ccg, sc->sc_extended_geom);
xpt_done(ccb);
return;
case XPT_PATH_INQ:
@@ -944,7 +944,7 @@
ecb->ccb = ccb;
ecb->timeout = ccb->ccb_h.timeout;
- if (ccb->ccb_h.func_code == XPT_RESET_BUS) {
+ if (ccb->ccb_h.func_code == XPT_RESET_DEV) {
ecb->flags |= ECB_RESET;
ecb->clen = 0;
ecb->dleft = 0;
@@ -1219,6 +1219,7 @@
if ((ecb->flags & ECB_ABORT) != 0) {
ccb->ccb_h.status = CAM_CMD_TIMEOUT;
} else if ((ecb->flags & ECB_SENSE) != 0) {
+ ccb->ccb_h.status = CAM_AUTOSNS_VALID;
} else if (ecb->stat == SCSI_STATUS_CHECK_COND) {
if ((ecb->flags & ECB_SENSE) != 0)
ccb->ccb_h.status = CAM_AUTOSENSE_FAIL;
==== //depot/projects/netperf_socket/sys/dev/esp/ncr53c9xvar.h#2 (text+ko) ====
@@ -66,7 +66,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/* $FreeBSD: src/sys/dev/esp/ncr53c9xvar.h,v 1.1 2004/06/10 05:11:39 scottl Exp $ */
+/* $FreeBSD: src/sys/dev/esp/ncr53c9xvar.h,v 1.2 2004/06/11 15:33:20 scottl Exp $ */
#ifndef _DEV_IC_NCR53C9XVAR_H_
#define _DEV_IC_NCR53C9XVAR_H_
@@ -345,6 +345,7 @@
int sc_maxsync; /* Maximum sync period */
int sc_maxoffset; /* Maximum offset */
int sc_maxwidth; /* Maximum width */
+ int sc_extended_geom; /* Should we return extended geometry */
struct mtx sc_lock; /* driver mutex */
};
==== //depot/projects/netperf_socket/sys/dev/hme/if_hme.c#8 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.26 2004/06/10 00:06:04 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/hme/if_hme.c,v 1.27 2004/06/12 02:23:06 marius Exp $");
/*
* HME Ethernet module driver.
@@ -819,7 +819,7 @@
#endif
/* Set the current media. */
- mii_mediachg(sc->sc_mii);
+ /* mii_mediachg(sc->sc_mii); */
/* Start the one second timer. */
callout_reset(&sc->sc_tick_ch, hz, hme_tick, sc);
==== //depot/projects/netperf_socket/sys/dev/twe/twe.c#5 (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/twe/twe.c,v 1.21 2004/05/12 04:10:37 vkashyap Exp $
+ * $FreeBSD: src/sys/dev/twe/twe.c,v 1.22 2004/06/11 18:42:44 vkashyap Exp $
*/
/*
@@ -384,7 +384,7 @@
debug_called(4);
- if (sc->twe_state & TWE_STATE_FRZN)
+ if (sc->twe_state & (TWE_STATE_CTLR_BUSY | TWE_STATE_FRZN))
return;
/* spin until something prevents us from doing any work */
@@ -435,6 +435,8 @@
error = twe_map_request(tr);
if (error != 0) {
+ if (error == EBUSY)
+ break;
tr->tr_status = TWE_CMD_ERROR;
if (tr->tr_private != NULL) {
bp = (twe_bio *)(tr->tr_private);
@@ -762,7 +764,7 @@
} else {
tr->tr_complete = func;
error = twe_map_request(tr);
- if (error == 0)
+ if ((error == 0) || (error == EBUSY))
return(func);
}
@@ -931,7 +933,8 @@
tr->tr_flags |= TWE_CMD_IMMEDIATE;
tr->tr_status = TWE_CMD_BUSY;
if ((error = twe_map_request(tr)) != 0)
- return(error);
+ if (error != EBUSY)
+ return(error);
while (tr->tr_status == TWE_CMD_BUSY){
twe_done(tr->tr_sc);
}
@@ -1131,6 +1134,7 @@
/* move to completed queue */
twe_remove_busy(tr);
twe_enqueue_complete(tr);
+ sc->twe_state &= ~TWE_STATE_CTLR_BUSY;
} else {
break; /* no response ready */
}
==== //depot/projects/netperf_socket/sys/dev/twe/twe_freebsd.c#5 (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/twe/twe_freebsd.c,v 1.37 2004/03/25 19:30:35 vkashyap Exp $
+ * $FreeBSD: src/sys/dev/twe/twe_freebsd.c,v 1.38 2004/06/11 18:42:44 vkashyap Exp $
*/
/*
@@ -1014,8 +1014,10 @@
}
}
- if (twe_start(tr) == EBUSY)
+ if (twe_start(tr) == EBUSY) {
+ tr->tr_sc->twe_state |= TWE_STATE_CTLR_BUSY;
twe_requeue_ready(tr);
+ }
}
static void
@@ -1037,8 +1039,10 @@
debug_called(4);
- if (sc->twe_state & TWE_STATE_FRZN)
+ if (sc->twe_state & (TWE_STATE_CTLR_BUSY | TWE_STATE_FRZN)) {
+ twe_requeue_ready(tr);
return (EBUSY);
+ }
bus_dmamap_sync(sc->twe_cmd_dmat, sc->twe_cmdmap, BUS_DMASYNC_PREWRITE);
@@ -1079,8 +1083,8 @@
}
} else
if ((error = twe_start(tr)) == EBUSY) {
+ sc->twe_state |= TWE_STATE_CTLR_BUSY;
twe_requeue_ready(tr);
- error = 0;
}
return(error);
==== //depot/projects/netperf_socket/sys/dev/twe/twevar.h#5 (text+ko) ====
@@ -24,10 +24,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/twe/twevar.h,v 1.12 2004/05/12 04:10:37 vkashyap Exp $
+ * $FreeBSD: src/sys/dev/twe/twevar.h,v 1.13 2004/06/11 18:42:44 vkashyap Exp $
*/
-#define TWE_DRIVER_VERSION_STRING "1.50.01.001"
+#define TWE_DRIVER_VERSION_STRING "1.50.01.002"
#ifdef TWE_DEBUG
#define debug(level, fmt, args...) \
@@ -131,7 +131,8 @@
#define TWE_STATE_SHUTDOWN (1<<1) /* controller is shut down */
#define TWE_STATE_OPEN (1<<2) /* control device is open */
#define TWE_STATE_SUSPEND (1<<3) /* controller is suspended */
-#define TWE_STATE_FRZN (1<<4)
+#define TWE_STATE_FRZN (1<<4) /* got EINPROGRESS */
+#define TWE_STATE_CTLR_BUSY (1<<5) /* controller cmd queue full */
int twe_host_id;
struct twe_qstat twe_qstat[TWEQ_COUNT]; /* queue statistics */
==== //depot/projects/netperf_socket/sys/ia64/ia64/pmap.c#8 (text+ko) ====
@@ -46,7 +46,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.133 2004/06/11 04:24:35 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.134 2004/06/11 20:11:41 alc Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -1606,7 +1606,8 @@
/*
* Enter on the PV list if part of our managed memory.
*/
- if (pmap_initialized && (m->flags & PG_FICTITIOUS) == 0) {
+ if (pmap_initialized &&
+ (m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0) {
pmap_insert_entry(pmap, va, m);
managed |= PTE_IG_MANAGED;
}
@@ -1653,17 +1654,23 @@
{
struct ia64_lpte *pte;
pmap_t oldpmap;
+ int managed;
oldpmap = pmap_install(pmap);
pte = pmap_find_pte(va);
if (pte->pte_p)
goto reinstall;
+ managed = 0;
/*
* Enter on the PV list since its part of our managed memory.
*/
- pmap_insert_entry(pmap, va, m);
+ if (pmap_initialized &&
+ (m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0) {
+ pmap_insert_entry(pmap, va, m);
+ managed |= PTE_IG_MANAGED;
+ }
/*
* Increment counters
@@ -1673,8 +1680,7 @@
/*
* Initialise PTE with read-only protection and enter into VHPT.
*/
- pmap_set_pte(pte, va, VM_PAGE_TO_PHYS(m),
- PTE_IG_MANAGED,
+ pmap_set_pte(pte, va, VM_PAGE_TO_PHYS(m), managed,
PTE_PL_USER, PTE_AR_R);
reinstall:
pmap_install(oldpmap);
==== //depot/projects/netperf_socket/sys/kern/kern_kse.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_kse.c,v 1.180 2004/06/07 07:26:53 julian Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_kse.c,v 1.181 2004/06/11 17:48:20 julian Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -36,7 +36,6 @@
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/smp.h>
-#include <sys/sysctl.h>
#include <sys/sysproto.h>
#include <sys/sched.h>
#include <sys/signalvar.h>
@@ -53,6 +52,7 @@
/* DEBUG ONLY */
extern int virtual_cpu;
extern int thread_debug;
+
extern int max_threads_per_proc;
extern int max_groups_per_proc;
extern int max_threads_hits;
@@ -73,39 +73,6 @@
void kseinit(void);
void kse_GC(void);
-static int virtual_cpu;
-SYSCTL_DECL(_kern_threads);
-
-static int
-sysctl_kse_virtual_cpu(SYSCTL_HANDLER_ARGS)
-{
- int error, new_val;
- int def_val;
-
-#ifdef SMP
- def_val = mp_ncpus;
-#else
- def_val = 1;
-#endif
- if (virtual_cpu == 0)
- new_val = def_val;
- else
- new_val = virtual_cpu;
- error = sysctl_handle_int(oidp, &new_val, 0, req);
- if (error != 0 || req->newptr == NULL)
- return (error);
- if (new_val < 0)
- return (EINVAL);
- virtual_cpu = new_val;
- return (0);
-}
-
-/* DEBUG ONLY */
-SYSCTL_PROC(_kern_threads, OID_AUTO, virtual_cpu, CTLTYPE_INT|CTLFLAG_RW,
- 0, sizeof(virtual_cpu), sysctl_kse_virtual_cpu, "I",
- "debug virtual cpus");
-
-
struct kse_upcall *
upcall_alloc(void)
{
@@ -265,10 +232,24 @@
int error, count;
p = td->td_proc;
+ /*
+ * Ensure that this is only called from the UTS
+ */
if ((ku = td->td_upcall) == NULL || TD_CAN_UNBIND(td))
return (EINVAL);
+
kg = td->td_ksegrp;
count = 0;
+
+ /*
+ * Calculate the existing non-exiting upcalls in this ksegroup.
+ * If we are the last upcall but there are still other threads,
+ * then do not exit. We need the other threads to be able to
+ * complete whatever they are doing.
+ * XXX This relies on the userland knowing what to do if we return.
+ * It may be a better choice to convert ourselves into a kse_release
+ * ( or similar) and wait in the kernel to be needed.
+ */
PROC_LOCK(p);
mtx_lock_spin(&sched_lock);
FOREACH_UPCALL_IN_GROUP(kg, ku2) {
@@ -284,6 +265,12 @@
ku->ku_flags |= KUF_EXITING;
mtx_unlock_spin(&sched_lock);
PROC_UNLOCK(p);
+
+ /*
+ * Mark the UTS mailbox as having been finished with.
+ * If that fails then just go for a segfault.
+ * XXX need to check it that can be deliverred without a mailbox.
+ */
error = suword(&ku->ku_mailbox->km_flags, ku->ku_mflags|KMF_DONE);
PROC_LOCK(p);
if (error)
@@ -467,12 +454,7 @@
if ((err = copyin(uap->mbx, &mbx, sizeof(mbx))))
return (err);
- /* Too bad, why hasn't kernel always a cpu counter !? */
-#ifdef SMP
ncpus = mp_ncpus;
-#else
- ncpus = 1;
-#endif
if (virtual_cpu != 0)
ncpus = virtual_cpu;
if (!(mbx.km_flags & KMF_BOUND))
@@ -635,7 +617,7 @@
}
/*
- * Initialize global kse related resources.
+ * Initialize global thread allocation resources.
*/
void
kseinit(void)
@@ -669,7 +651,7 @@
* Don't even bother to lock if none at this instant,
* we really don't care about the next instant..
*/
- if ((!TAILQ_EMPTY(&zombie_upcalls))) {
+ if (!TAILQ_EMPTY(&zombie_upcalls)) {
mtx_lock_spin(&kse_zombie_lock);
ku_first = TAILQ_FIRST(&zombie_upcalls);
if (ku_first)
@@ -929,7 +911,7 @@
bcopy(&td->td_startcopy, &td2->td_startcopy,
(unsigned) RANGEOF(struct thread, td_startcopy, td_endcopy));
thread_link(td2, ku->ku_ksegrp);
- /* inherit blocked thread's context */
+ /* inherit parts of blocked thread's context as a good template */
cpu_set_upcall(td2, td);
/* Let the new thread become owner of the upcall */
ku->ku_owner = td2;
@@ -1285,3 +1267,4 @@
else
return (0);
}
+
==== //depot/projects/netperf_socket/sys/kern/kern_thread.c#12 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.180 2004/06/09 14:06:44 jmallett Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.181 2004/06/11 17:48:20 julian Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -35,6 +35,7 @@
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/proc.h>
+#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/sched.h>
#include <sys/sleepqueue.h>
@@ -70,6 +71,9 @@
SYSCTL_INT(_kern_threads, OID_AUTO, max_threads_hits, CTLFLAG_RD,
&max_threads_hits, 0, "");
+int virtual_cpu;
+
+#define RANGEOF(type, start, end) (offsetof(type, end) - offsetof(type, start))
TAILQ_HEAD(, thread) zombie_threads = TAILQ_HEAD_INITIALIZER(zombie_threads);
TAILQ_HEAD(, kse) zombie_kses = TAILQ_HEAD_INITIALIZER(zombie_kses);
@@ -85,7 +89,31 @@
extern void kse_GC(void);
+static int
+sysctl_kse_virtual_cpu(SYSCTL_HANDLER_ARGS)
+{
+ int error, new_val;
+ int def_val;
+ def_val = mp_ncpus;
+ if (virtual_cpu == 0)
+ new_val = def_val;
+ else
+ new_val = virtual_cpu;
+ error = sysctl_handle_int(oidp, &new_val, 0, req);
+ if (error != 0 || req->newptr == NULL)
+ return (error);
+ if (new_val < 0)
+ return (EINVAL);
+ virtual_cpu = new_val;
+ return (0);
+}
+
+/* DEBUG ONLY */
+SYSCTL_PROC(_kern_threads, OID_AUTO, virtual_cpu, CTLTYPE_INT|CTLFLAG_RW,
+ 0, sizeof(virtual_cpu), sysctl_kse_virtual_cpu, "I",
+ "debug virtual cpus");
+
/*
* Thread ID allocator. The allocator keeps track of assigned IDs by
* using a bitmap. The bitmap is created in parts. The parts are linked
@@ -556,11 +584,24 @@
/*
* Discard the current thread and exit from its context.
+ * Always called with scheduler locked.
*
* Because we can't free a thread while we're operating under its context,
* push the current thread into our CPU's deadthread holder. This means
* we needn't worry about someone else grabbing our context before we
- * do a cpu_throw().
+ * do a cpu_throw(). This may not be needed now as we are under schedlock.
+ * Maybe we can just do a thread_stash() as thr_exit1 does.
+ */
+/* XXX
+ * libthr expects its thread exit to return for the last
+ * thread, meaning that the program is back to non-threaded
+ * mode I guess. Because we do this (cpu_throw) unconditionally
+ * here, they have their own version of it. (thr_exit1())
+ * that doesn't do it all if this was the last thread.
+ * It is also called from thread_suspend_check().
+ * Of course in the end, they end up coming here through exit1
+ * anyhow.. After fixing 'thr' to play by the rules we should be able
+ * to merge these two functions together.
*/
void
thread_exit(void)
==== //depot/projects/netperf_socket/sys/kern/tty_conf.c#4 (text+ko) ====
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/tty_conf.c,v 1.21 2004/06/07 20:45:45 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/tty_conf.c,v 1.22 2004/06/12 12:31:42 phk Exp $");
#include "opt_compat.h"
@@ -122,8 +122,9 @@
if (discipline == LDISC_LOAD) {
int i;
for (i = LOADABLE_LDISC; i < MAXLDISC; i++)
- if (bcmp(linesw + i, &nodisc, sizeof(nodisc)) == 0) {
+ if (linesw[i] == &nodisc) {
slot = i;
+ break;
}
} else if (discipline >= 0 && discipline < MAXLDISC) {
slot = discipline;
==== //depot/projects/netperf_socket/sys/kern/uipc_mbuf.c#7 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_mbuf.c,v 1.132 2004/06/10 00:04:27 bmilekic Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_mbuf.c,v 1.133 2004/06/11 18:17:25 bmilekic Exp $");
#include "opt_mac.h"
#include "opt_param.h"
@@ -237,7 +237,7 @@
*/
if (m->m_ext.ext_type == EXT_PACKET) {
uma_zfree(zone_pack, m);
- break;
+ return;
} else if (m->m_ext.ext_type == EXT_CLUSTER) {
uma_zfree(zone_clust, m->m_ext.ext_buf);
m->m_ext.ext_buf = NULL;
@@ -246,13 +246,14 @@
m->m_ext.ext_args);
if (m->m_ext.ext_type != EXT_EXTREF)
free(m->m_ext.ref_cnt, M_MBUF);
+ m->m_ext.ext_buf = NULL;
}
- uma_zfree(zone_mbuf, m);
}
/* Decrement (and potentially free) done, safely. */
break;
}
} while (1);
+ uma_zfree(zone_mbuf, m);
}
/*
==== //depot/projects/netperf_socket/sys/kern/uipc_socket.c#15 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_socket.c,v 1.175 2004/06/08 13:08:17 stefanf Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_socket.c,v 1.176 2004/06/12 16:08:41 rwatson Exp $");
#include "opt_inet.h"
#include "opt_mac.h"
==== //depot/projects/netperf_socket/sys/netinet/ip_fw2.c#7 (text+ko) ====
@@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.61 2004/06/10 20:20:37 ru Exp $
+ * $FreeBSD: src/sys/netinet/ip_fw2.c,v 1.62 2004/06/11 22:17:14 csjp Exp $
*/
#define DEB(x)
@@ -113,6 +113,18 @@
static struct callout ipfw_timeout;
#define IPFW_DEFAULT_RULE 65535
+/*
+ * Data structure to cache our ucred related
+ * information. This structure only gets used if
+ * the user specified UID/GID based constraints in
+ * a firewall rule.
+ */
+struct ip_fw_ugid {
+ gid_t fw_groups[NGROUPS];
+ int fw_ngroups;
+ uid_t fw_uid;
+};
+
struct ip_fw_chain {
struct ip_fw *rules; /* list of rules */
struct ip_fw *reap; /* list of rules to reap */
@@ -1530,13 +1542,23 @@
ipfw_insn_u32 *insn,
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list