Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Apr 1996 09:21:17 +0200 (MET DST)
From:      "Christoph P. Kukulies" <kuku@gilberto.physik.rwth-aachen.de>
To:        zgabor@CoDe.hu (Gabor Zahemszky)
Cc:        kuku@gilberto.physik.rwth-aachen.de, freebsd-questions@freebsd.org
Subject:   Re: How can I read/write from/to an I/O-port?
Message-ID:  <199604220721.JAA24177@gilberto.physik.rwth-aachen.de>
In-Reply-To: <199604191211.MAA03635@CoDe.CoDe.hu>

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> > 
> > > 
> > > Hi,
> > > 
> > > I have a little problem. So I hope someone can help
> > > me:
> > >  
> > > Under Linux a /dev/port exits to write/read to/from an I/O-port.
> > > Does a similar /dev/??? exits under FreeBSD or must I write
> > > a little device driver for this?
> > 
> > Under FreeBSD there is /dev/io.
> > 
> > Do an open("/dev/io",flags,mode) on it and you can access i/o
> > ports using in/out instructions.
> 
> OK.  How?  What does flags mean?  How can I use the fd, I get from open?
> (A little example please....)

/usr/include/fcntl.h:

#define O_RDONLY        0x0000          /* open for reading only */
#define O_WRONLY        0x0001          /* open for writing only */ 
#define O_RDWR          0x0002          /* open for reading and writing */
#define O_ACCMODE       0x0003          /* mask for above modes */
 
If you want to read & write to a specific port, use O_RDWR.

Once you have opened the io space (device), you can read/write
(be cautious!) to any location in the io space. That can be 
done by in/out (inline assembler - gcc) or by functions, doing that.

Look at the driver code in /sys/i386/isa. It's full of example code.


> 
> -- 
> 	Gabor Zahemszky <zgabor@CoDe.hu>
> 
> -:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
> Earth is the cradle of human sense, but you can't stay in the cradle forever.
> 						Tsiolkovsky
> 

--Chris Christoph P. U. Kukulies kuku@gil.physik.rwth-aachen.de



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199604220721.JAA24177>