PERFORCE change 28583 for review
Peter Wemm
peter at FreeBSD.org
Tue Apr 8 17:43:04 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=28583
Change 28583 by peter at peter_daintree on 2003/04/08 17:42:27
IFC @28572
Affected files ...
.. //depot/projects/hammer/lib/libutil/pw_util.c#4 integrate
.. //depot/projects/hammer/sys/dev/adlink/adlink.c#2 integrate
.. //depot/projects/hammer/sys/dev/ata/ata-raid.c#7 integrate
.. //depot/projects/hammer/sys/dev/fxp/if_fxp.c#11 integrate
.. //depot/projects/hammer/sys/i386/include/pmap.h#5 integrate
.. //depot/projects/hammer/sys/kern/uipc_cow.c#6 integrate
.. //depot/projects/hammer/sys/sparc64/conf/GENERIC#9 integrate
Differences ...
==== //depot/projects/hammer/lib/libutil/pw_util.c#4 (text+ko) ====
@@ -43,7 +43,7 @@
static const char sccsid[] = "@(#)pw_util.c 8.3 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
- "$FreeBSD: src/lib/libutil/pw_util.c,v 1.28 2003/03/17 02:12:55 das Exp $";
+ "$FreeBSD: src/lib/libutil/pw_util.c,v 1.29 2003/04/08 18:04:30 des Exp $";
#endif /* not lint */
/*
@@ -290,7 +290,6 @@
struct stat st1, st2;
const char *editor;
char *editcmd;
- int editcmdlen;
int pstat;
if ((editor = getenv("EDITOR")) == NULL)
@@ -306,14 +305,8 @@
(void)setgid(getgid());
(void)setuid(getuid());
}
- if ((editcmdlen = sysconf(_SC_ARG_MAX) - 6) <= 0 ||
- (editcmd = malloc(editcmdlen)) == NULL)
- _exit(EXIT_FAILURE);
- if (snprintf(editcmd, editcmdlen, "%s %s",
- editor, tempname) >= editcmdlen) {
- free(editcmd); /* pedantry */
+ if (asprintf(&editcmd, "exec %s %s", editor, tempname) == NULL)
_exit(EXIT_FAILURE);
- }
errno = 0;
execl(_PATH_BSHELL, "sh", "-c", editcmd, NULL);
free(editcmd);
@@ -322,13 +315,16 @@
/* parent */
break;
}
+ setpgid(editpid, editpid);
+ tcsetpgrp(1, editpid);
for (;;) {
- editpid = waitpid(editpid, &pstat, WUNTRACED);
- if (editpid == -1) {
+ if (waitpid(editpid, &pstat, WUNTRACED) == -1) {
unlink(tempname);
return (-1);
} else if (WIFSTOPPED(pstat)) {
raise(WSTOPSIG(pstat));
+ tcsetpgrp(1, getpgid(editpid));
+ kill(editpid, SIGCONT);
} else if (WIFEXITED(pstat) && WEXITSTATUS(pstat) == 0) {
editpid = -1;
break;
==== //depot/projects/hammer/sys/dev/adlink/adlink.c#2 (text+ko) ====
@@ -26,13 +26,15 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/adlink/adlink.c,v 1.1 2003/04/04 18:53:04 phk Exp $
+ * $FreeBSD: src/sys/dev/adlink/adlink.c,v 1.2 2003/04/08 19:12:48 phk Exp $
*/
+#ifdef _KERNEL
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/kernel.h>
+#include <sys/kthread.h>
#include <sys/conf.h>
#include <sys/bus.h>
#include <machine/bus.h>
@@ -44,17 +46,54 @@
#include <vm/vm.h>
#include <vm/pmap.h>
+#endif /* _KERNEL */
+
+#include <sys/ioccom.h>
+
+struct wave {
+ int index;
+ int period;
+ int offset;
+ int length;
+ int avg;
+ off_t mapvir;
+ int flags;
+
+ int npages;
+ void **virtual;
+};
+
+#define ADLINK_SETWAVE _IOWR('A', 232, struct wave)
+#define ADLINK_GETWAVE _IOWR('A', 233, struct wave)
+
+#ifdef _KERNEL
+
+#define INTPERPAGE (PAGE_SIZE / sizeof(int))
+#define I16PERPAGE (PAGE_SIZE / sizeof(int16_t))
+
/*
- * We sample one channel (= 16 bits) at 1 msps giving 2Mbyte/sec,
- * 50 pages will give us about 1/10 second buffering.
+ * Sample rate
+ */
+#define SPS 1250000
+
+/*
+ * We sample one channel (= 16 bits) at 1.25 msps giving 2.5Mbyte/sec,
+ * 100 pages will give us about 1/6 second buffering.
*/
-#define NRING 50
+#define NRING 100
-#define IN4(sc, offset) bus_space_read_4(sc->t_io, sc->h_io, offset)
+/*
+ * How many waves are we willing to entertain
+ */
+#define NWAVE 25
struct info {
int nring;
off_t o_ring;
+
+ int ngri;
+ int ppgri;
+ off_t o_gri;
};
struct softc {
@@ -64,21 +103,145 @@
bus_space_tag_t t0, t1;
bus_space_handle_t h0, h1;
dev_t dev;
+ off_t mapvir;
+ struct proc *procp;
+
struct info *info;
+ struct wave *wave[NWAVE];
+
int idx;
void *ring[NRING];
- vm_paddr_t phys[NRING];
+ vm_paddr_t pring[NRING];
int stat[NRING];
+
+ uint64_t cnt;
+
+ u_char flags[I16PERPAGE];
};
+static void
+adlink_wave(struct softc *sc, struct wave *wp, int16_t *sp)
+{
+ int f, i, k, m, *ip;
+
+ f = 0;
+ for (i = 0; i < I16PERPAGE; ) {
+ k = (sc->cnt - wp->offset + i) % wp->period;
+ if (k >= wp->length) {
+ i += wp->period - k;
+ sp += wp->period - k;
+ continue;
+ }
+ m = k % INTPERPAGE;
+ ip = (int *)(wp->virtual[k / INTPERPAGE]) + m;
+ while (m < INTPERPAGE && i < I16PERPAGE && k < wp->length) {
+ if (sc->flags[i] >= wp->index)
+ *ip += (*sp * 8 - *ip) >> wp->avg;
+ if (wp->flags & 1)
+ sc->flags[i] = wp->index;
+ sp++;
+ ip++;
+ m++;
+ i++;
+ k++;
+ }
+ }
+}
+
+static void
+adlink_tickle(struct softc *sc)
+{
+
+ wakeup(sc);
+ tsleep(&sc->ring, PUSER | PCATCH, "tickle", 1);
+}
+
static int
+adlink_new_wave(struct softc *sc, int index, int period, int offset, int length, int avg, int flags)
+{
+ struct wave *wp;
+ int l, i;
+ void **oldvir, **newvir;
+
+ if (index < 0 || index >= NWAVE)
+ return (EINVAL);
+ wp = sc->wave[index];
+ if (wp == NULL) {
+ adlink_tickle(sc);
+ wp = malloc(sizeof *wp, M_DEVBUF, M_WAITOK | M_ZERO);
+ }
+ l = howmany(length, INTPERPAGE);
+ /* Setting a high average here to neuter the realtime bits */
+ wp->avg = 31;
+ if (wp->npages < l) {
+ oldvir = wp->virtual;
+ adlink_tickle(sc);
+ newvir = malloc(sizeof(void *) * l, M_DEVBUF, M_WAITOK | M_ZERO);
+ if (wp->npages > 0) {
+ adlink_tickle(sc);
+ bcopy(oldvir, newvir, wp->npages * sizeof(void *));
+ }
+ for (i = wp->npages; i < l; i++) {
+ adlink_tickle(sc);
+ newvir[i] = malloc(PAGE_SIZE, M_DEVBUF, M_WAITOK);
+ }
+ wp->virtual = newvir;
+ wp->npages = l;
+ wp->mapvir = sc->mapvir;
+ sc->mapvir += l * PAGE_SIZE;
+ } else {
+ oldvir = NULL;
+ }
+ wp->index = index;
+ wp->period = period;
+ wp->offset = offset;
+ wp->length = length;
+ wp->flags = flags;
+
+ for (i = 0; i < l; i++) {
+ adlink_tickle(sc);
+ bzero(wp->virtual[i], PAGE_SIZE);
+ }
+ wp->avg = avg;
+ sc->wave[index] = wp;
+ printf("Wave[%d] {period %d, offset %d, length %d, avg %d, flags %x}\n",
+ wp->index, wp->period, wp->offset, wp->length, wp->avg, wp->flags);
+ free(oldvir, M_DEVBUF);
+ return (0);
+}
+
+static void
+adlink_loran(void *arg)
+{
+ struct softc *sc;
+ int idx, i;
+
+ sc = arg;
+ idx = 0;
+ for (;;) {
+ while (sc->stat[idx] == 0)
+ msleep(sc, NULL, PRIBIO, "loran", 1);
+ memset(sc->flags, NWAVE, sizeof sc->flags);
+ for (i = 0; i < NWAVE; i++) {
+ if (sc->wave[i] != NULL)
+ adlink_wave(sc, sc->wave[i], sc->ring[idx]);
+ }
+ sc->cnt += I16PERPAGE;
+ sc->stat[idx] = 0;
+ idx++;
+ idx %= NRING;
+ }
+ kthread_exit(0);
+}
+
+static int
adlink_open(dev_t dev, int oflags, int devtype, struct thread *td)
{
static int once;
struct softc *sc;
- int i;
+ int i, error;
uint32_t u;
if (once)
@@ -88,49 +251,114 @@
sc = dev->si_drv1;
sc->info = malloc(PAGE_SIZE, M_DEVBUF, M_ZERO | M_WAITOK);
sc->info->nring = NRING;
+
sc->info->o_ring = PAGE_SIZE;
for (i = 0; i < NRING; i++) {
sc->ring[i] = malloc(PAGE_SIZE, M_DEVBUF, M_ZERO | M_WAITOK);
- sc->phys[i] = vtophys(sc->ring[i]);
+ sc->pring[i] = vtophys(sc->ring[i]);
}
+ error = adlink_new_wave(sc, NWAVE - 1, SPS, 0, SPS, 7, 0);
+ if (error)
+ return (error);
+
+ error = kthread_create(adlink_loran, sc, &sc->procp,
+ 0, 0, "adlink%d", device_get_unit(sc->device));
+ if (error)
+ return (error);
+
+ /* Enable interrupts on write complete */
bus_space_write_4(sc->t0, sc->h0, 0x38, 0x00004000);
+
+ /* Sample CH0 only */
bus_space_write_4(sc->t1, sc->h1, 0x00, 1);
- bus_space_write_4(sc->t1, sc->h1, 0x04, 10);
+
+ /* Divide clock by ten */
+ bus_space_write_4(sc->t1, sc->h1, 0x04, 4);
+
+ /* Software trigger mode: software */
bus_space_write_4(sc->t1, sc->h1, 0x08, 0);
+
+ /* Trigger level zero */
bus_space_write_4(sc->t1, sc->h1, 0x0c, 0);
+
+ /* Trigger source CH0 (not used) */
bus_space_write_4(sc->t1, sc->h1, 0x10, 0);
+
+ /* Fifo control/status: flush */
bus_space_write_4(sc->t1, sc->h1, 0x18, 3);
+
+ /* Clock source: external sine */
bus_space_write_4(sc->t1, sc->h1, 0x20, 2);
- bus_space_write_4(sc->t0, sc->h0, 0x24, sc->phys[i]);
+ /* Set up Write DMA */
+ bus_space_write_4(sc->t0, sc->h0, 0x24, sc->pring[i]);
bus_space_write_4(sc->t0, sc->h0, 0x28, PAGE_SIZE);
-
u = bus_space_read_4(sc->t0, sc->h0, 0x3c);
bus_space_write_4(sc->t0, sc->h0, 0x3c, u | 0x00000600);
+ /* Acquisition Enable Register: go! */
bus_space_write_4(sc->t1, sc->h1, 0x1c, 1);
return (0);
}
static int
+adlink_ioctl(dev_t dev, u_long cmd, caddr_t data, int fflag, struct thread *td)
+{
+ struct softc *sc;
+ struct wave *wp;
+ int i, error;
+
+ sc = dev->si_drv1;
+ wp = (struct wave *)data;
+ i = wp->index;
+ if (i < 0 || i >= NWAVE)
+ return (EINVAL);
+ if (cmd == ADLINK_GETWAVE) {
+ if (sc->wave[i] == NULL)
+ return (ENOENT);
+ bcopy(sc->wave[i], wp, sizeof(*wp));
+ return (0);
+ }
+ if (cmd == ADLINK_SETWAVE) {
+ error = adlink_new_wave(sc,
+ i,
+ wp->period,
+ wp->offset,
+ wp->length,
+ wp->avg,
+ wp->flags);
+ if (error)
+ return (error);
+ bcopy(sc->wave[i], wp, sizeof(*wp));
+ return (0);
+ }
+ return (ENOIOCTL);
+}
+
+static int
adlink_mmap(dev_t dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
{
- int i;
struct softc *sc;
+ struct wave *wp;
+ int i, j;
sc = dev->si_drv1;
if (nprot != VM_PROT_READ)
return (-1);
- if (offset == 0) {
- *paddr = vtophys(sc->info);
+ for (i = 0; i < NWAVE; i++) {
+ if (sc->wave[i] == NULL)
+ continue;
+ wp = sc->wave[i];
+ if (offset < wp->mapvir)
+ continue;
+ j = (offset - wp->mapvir) / PAGE_SIZE;
+ if (j >= wp->npages)
+ continue;
+ *paddr = vtophys(wp->virtual[j]);
return (0);
}
- i = (offset - sc->info->o_ring) / PAGE_SIZE;
- if (i >= NRING)
- return (-1);
- *paddr = vtophys(sc->ring[i]);
- return (0);
+ return (-1);
}
static void
@@ -138,7 +366,7 @@
{
struct softc *sc;
uint32_t u;
- int i;
+ int i, j;
sc = arg;
u = bus_space_read_4(sc->t0, sc->h0, 0x38);
@@ -146,16 +374,27 @@
return;
bus_space_write_4(sc->t0, sc->h0, 0x38, u | 0x003f4000);
- sc->stat[sc->idx] = 1;
- i = (++sc->idx) % NRING;
+ j = sc->idx;
+ sc->stat[j] = 1;
+ i = (j + 1) % NRING;
sc->idx = i;
- bus_space_write_4(sc->t0, sc->h0, 0x24, sc->phys[i]);
+ u = bus_space_read_4(sc->t1, sc->h1, 0x18);
+ if (u & 1) {
+ printf("adlink FIFO overrun\n");
+ return;
+ }
+ bus_space_write_4(sc->t0, sc->h0, 0x24, sc->pring[i]);
bus_space_write_4(sc->t0, sc->h0, 0x28, PAGE_SIZE);
+ wakeup(sc);
+ if (sc->stat[i]) {
+ printf("adlink page busy\n");
+ }
}
static struct cdevsw adlink_cdevsw = {
.d_open = adlink_open,
.d_close = nullclose,
+ .d_ioctl = adlink_ioctl,
.d_mmap = adlink_mmap,
.d_name = "adlink",
};
@@ -182,6 +421,10 @@
bzero(sc, sizeof *sc);
sc->device = self;
+ /*
+ * This is the PCI mapped registers of the AMCC 9535 "matchmaker"
+ * chip.
+ */
rid = 0x10;
sc->r0 = bus_alloc_resource(self, SYS_RES_IOPORT, &rid,
0, ~0, 1, RF_ACTIVE);
@@ -191,6 +434,10 @@
sc->h0 = rman_get_bushandle(sc->r0);
printf("Res0 %x %x\n", sc->t0, sc->h0);
+ /*
+ * This is the PCI mapped registers of the ADC hardware, they
+ * are described in the manual which comes with the card.
+ */
rid = 0x14;
sc->r1 = bus_alloc_resource(self, SYS_RES_IOPORT, &rid,
0, ~0, 1, RF_ACTIVE);
@@ -206,8 +453,13 @@
if (sc->ri == NULL)
return (ENODEV);
- i = bus_setup_intr(self, sc->ri, INTR_TYPE_MISC,
+ i = bus_setup_intr(self, sc->ri, INTR_MPSAFE | INTR_TYPE_MISC | INTR_FAST,
adlink_intr, sc, &sc->intrhand);
+ if (i) {
+ printf("adlink: Couldn't get FAST intr\n");
+ i = bus_setup_intr(self, sc->ri, INTR_TYPE_MISC,
+ adlink_intr, sc, &sc->intrhand);
+ }
if (i)
return (ENODEV);
@@ -236,3 +488,4 @@
};
DRIVER_MODULE(adlink, pci, adlink_driver, adlink_devclass, 0, 0);
+#endif /* _KERNEL */
==== //depot/projects/hammer/sys/dev/ata/ata-raid.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
* (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: src/sys/dev/ata/ata-raid.c,v 1.60 2003/04/08 07:48:52 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.61 2003/04/08 18:01:30 sos Exp $
*/
#include "opt_ata.h"
@@ -1457,7 +1457,7 @@
printf("heads %d\n", config->heads);
printf("sectors %d\n", config->sectors);
printf("cylinders %d\n", config->cylinders);
- printf("total_sectors %lld\n", config->total_sectors);
+ printf("total_sectors %lld\n", (long long)config->total_sectors);
printf("interleave %d\n", config->interleave);
printf("reserved %d\n", config->reserved);
printf("offset %d\n", config->offset);
@@ -1465,6 +1465,6 @@
printf("disk %d: flags = 0x%02x %b\n", i, config->disks[i].flags, config->disks[i].flags, "\20\4ONLINE\3SPARE\2ASSIGNED\1PRESENT\n");
if (config->disks[i].device)
printf(" %s\n", config->disks[i].device->name);
- printf(" sectors %lld\n", config->disks[i].disk_sectors);
+ printf(" sectors %lld\n", (long long)config->disks[i].disk_sectors);
}
}
==== //depot/projects/hammer/sys/dev/fxp/if_fxp.c#11 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.164 2003/04/08 17:21:15 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.166 2003/04/08 18:56:45 mux Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -223,8 +223,9 @@
static int sysctl_hw_fxp_int_delay(SYSCTL_HANDLER_ARGS);
static __inline void fxp_scb_wait(struct fxp_softc *sc);
static __inline void fxp_scb_cmd(struct fxp_softc *sc, int cmd);
-static __inline void fxp_dma_wait(volatile u_int16_t *status,
- struct fxp_softc *sc);
+static __inline void fxp_dma_wait(struct fxp_softc *sc,
+ volatile u_int16_t *status, bus_dma_tag_t dmat,
+ bus_dmamap_t map);
static device_method_t fxp_methods[] = {
/* Device interface */
@@ -288,12 +289,16 @@
}
static __inline void
-fxp_dma_wait(volatile u_int16_t *status, struct fxp_softc *sc)
+fxp_dma_wait(struct fxp_softc *sc, volatile u_int16_t *status,
+ bus_dma_tag_t dmat, bus_dmamap_t map)
{
int i = 10000;
- while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i)
+ bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+ while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i) {
DELAY(2);
+ bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+ }
if (i == 0)
device_printf(sc->dev, "DMA timeout\n");
}
@@ -1383,8 +1388,10 @@
* granularities, we must prevent the card from DMA'ing
* up the status while we update the command field.
* This could cause us to overwrite the completion status.
+ * XXX This is probably bogus and we're _not_ looking
+ * for atomicity here.
*/
- atomic_clear_short(&sc->fxp_desc.tx_last->tx_cb->cb_command,
+ atomic_clear_16(&sc->fxp_desc.tx_last->tx_cb->cb_command,
htole16(FXP_CB_COMMAND_S));
#else
sc->fxp_desc.tx_last->tx_cb->cb_command &=
@@ -1902,7 +1909,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->mcs_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&mcsp->cb_status, sc);
+ fxp_dma_wait(sc, &mcsp->cb_status, sc->mcs_tag, sc->mcs_map);
bus_dmamap_sync(sc->mcs_tag, sc->mcs_map,
BUS_DMASYNC_POSTWRITE);
}
@@ -2014,7 +2021,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cbp->cb_status, sc);
+ fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
/*
@@ -2035,7 +2042,7 @@
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_PREWRITE);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cb_ias->cb_status, sc);
+ fxp_dma_wait(sc, &cb_ias->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
/*
@@ -2553,7 +2560,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cbp->cb_status, sc);
+ fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
device_printf(sc->dev,
"Microcode loaded, int_delay: %d usec bundle_max: %d\n",
==== //depot/projects/hammer/sys/i386/include/pmap.h#5 (text+ko) ====
@@ -42,7 +42,7 @@
*
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/i386/include/pmap.h,v 1.97 2003/04/07 14:27:19 jake Exp $
+ * $FreeBSD: src/sys/i386/include/pmap.h,v 1.98 2003/04/08 18:22:41 jake Exp $
*/
#ifndef _MACHINE_PMAP_H_
@@ -195,7 +195,7 @@
{
vm_paddr_t pa;
- if ((pa = (vm_offset_t) PTD[va >> PDRSHIFT]) & PG_PS) {
+ if ((pa = PTD[va >> PDRSHIFT]) & PG_PS) {
pa = (pa & ~(NBPDR - 1)) | (va & (NBPDR - 1));
} else {
pa = *vtopte(va);
==== //depot/projects/hammer/sys/kern/uipc_cow.c#6 (text+ko) ====
@@ -29,7 +29,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/kern/uipc_cow.c,v 1.12 2003/03/29 06:14:14 alc Exp $
+ * $FreeBSD: src/sys/kern/uipc_cow.c,v 1.13 2003/04/08 18:24:28 alc Exp $
*/
/*
* This is a set of routines for enabling and disabling copy on write
@@ -52,13 +52,6 @@
#include <vm/vm_map.h>
#include <vm/vm_page.h>
#include <vm/vm_object.h>
-#if 0
-#include <vm/vm_pager.h>
-#include <vm/vm_kern.h>
-#include <vm/vm_extern.h>
-#include <vm/vm_zone.h>
-#include <vm/swap_pager.h>
-#endif
struct netsend_cow_stats {
@@ -111,7 +104,7 @@
vm_offset_t uva;
int s;
- vmspace = curproc->p_vmspace;;
+ vmspace = curproc->p_vmspace;
map = &vmspace->vm_map;
uva = (vm_offset_t) uio->uio_iov->iov_base;
==== //depot/projects/hammer/sys/sparc64/conf/GENERIC#9 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.51 2003/03/22 14:18:23 ru Exp $
+# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.52 2003/04/08 20:55:30 mux Exp $
machine sparc64
cpu SUN4U
@@ -150,7 +150,7 @@
# PCI Ethernet NICs that use the common MII bus controller code.
device miibus # MII bus support
#device dc # DEC/Intel 21143 and workalikes
-#device fxp # Intel EtherExpress PRO/100B (82557, 82558)
+device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device gem # Sun GEM/Sun ERI/Apple GMAC
device hme # Sun HME (Happy Meal Ethernet)
#device pcn # AMD Am79C97x PCI 10/100 NICs
More information about the p4-projects
mailing list