From owner-FreeBSD-users-jp@jp.freebsd.org  Tue Sep  1 16:48:55 1998
Received: by jaz.jp.freebsd.org (8.9.1+3.0W/8.7.3) id QAA23566;
	Tue, 1 Sep 1998 16:48:55 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from pcmita.isen.fr (pcmita.isen.fr [192.134.17.84])
	by jaz.jp.freebsd.org (8.9.1+3.0W/8.7.3) with ESMTP id QAA23556
	for <freebsd-users-jp@jp.freebsd.org>; Tue, 1 Sep 1998 16:48:50 +0900 (JST)
	(envelope-from mita@pcmita.isen.fr)
Received: from pcmita.isen.fr (localhost [127.0.0.1])
	by pcmita.isen.fr (8.8.7/8.8.7) with ESMTP id JAA03164
	for <freebsd-users-jp@jp.freebsd.org>; Tue, 1 Sep 1998 09:44:34 +0200 (CEST)
	(envelope-from mita@pcmita.isen.fr)
Message-Id: <199809010744.JAA03164@pcmita.isen.fr>
From: MITA Yoshio <Yoshio.Mita@isen.fr>
To: freebsd-users-jp@jp.freebsd.org
In-reply-to: Your message of "Tue, 01 Sep 1998 02:29:20 +0900."
             <199808311729.CAA24894@jaz.jp.freebsd.org> 
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=ISO-2022-JP
Date: Tue, 01 Sep 1998 09:44:33 +0200
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+980820
X-Sequence: FreeBSD-users-jp 32354
Subject: [FreeBSD-users-jp 32354] outb(); takes 1.5us (Re: About Sound Blaster PCI64 and etc. )
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

$B%O!<%I;n:n$K$O$^$C$F$k;0ED$G$9(B. $B$3$s$K$A$O(B.

>$B%5%&%s%I$N%G!<%?$N%l!<%H$O(B200kB/Sec$BDxEY$G(B ISA$B%P%9$NE>AwB.EY(B
>2MB/Sec$B$N(B 1/10$BDxEY$G$9!#(B
$B$3$s$J(B write()$B4X?t:n$C$F;n$7$F$_$?$N$G$9$,(B, 
$B$I$&$7$F$b(B1$B2s$N(Boutb(); $B$K(B1.5us$B$+$+$C$F$7$^$&$N$G$9(B. 666kB/sec.
$B$3$l0J>eC1=c$J=PNOJ}K!$r;W$$$D$+$J$$$N$G$9$,(B,
$B$I$&$7$F$J$s$G$7$g$&$M(B.

#define BUFFERSIZE 1024
parawrite(dev_t dev, struct uio *uio, int ioflag)
{
  int unit = UNIT (dev);
  para_p parap = para[unit];
  int amount;  /* Data amount to be sent */ 
  int howmuch; /* How much data can be transfered in buffer */
  char *bufpoint; /* Pointer to buffer */
  
  amount = uio->uio_resid;
  
  while (amount > 0) {
    /* Transfer data from user space to kernel space */
    howmuch = MIN(amount, BUFFERSIZE);
    amount -= howmuch;
    bufpoint = parap->buffer;
    uiomove((caddr_t) bufpoint, howmuch, uio);
    /* Output all buffer */
    while( howmuch > 3) {
      outb(parap->dev->id_iobase,     *bufpoint++);
      outb((parap->dev->id_iobase)+1, *bufpoint++);
      outb((parap->dev->id_iobase)+2, *bufpoint++);
      outb((parap->dev->id_iobase)+3, *bufpoint++);
      howmuch -= 4;
    }
  }
  return 0;
}

$B$G(B,
      outb(parap->dev->id_iobase,     *bufpoint++);
      outb((parap->dev->id_iobase)+1, *bufpoint++);
$B$N4V$N;~4V$r(B, $B%*%7%m%9%3!<%W(B(HP 54603B)$B$GB,Dj(B. $B$A$g$&$I(B1.5us
$B%^%7%s$O(BDELLOptiPlex G266+ $B$G(B, PenII 266MHz $B$G$9(B.
---
MITA Yoshio
