Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Oct 2004 16:00:57 +0300
From:      Giorgos Keramidas <keramida@freebsd.org>
To:        Jan Opacki <opacki@acn.waw.pl>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Freebsd assembly programming - IN/OUT commands.
Message-ID:  <20041017130057.GA1132@gothmog.gr>
In-Reply-To: <6.0.1.1.1.20041016135943.0353fb90@adamsatoms.com>
References:  <6.0.1.1.1.20041016135943.0353fb90@adamsatoms.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2004-10-16 14:03, Jan Opacki <opacki@acn.waw.pl> wrote:
> I had a short look at your fbd assembly tutorial. I'm have a such
> problem useing IN, OUT commands. In my case i want to "speak" with cmos
> by port 70 and 71. We both know that fbsd as same as linux works in safe
> mode. So we need a permission to use each port. In linux it's a system
> call sys_ioperm (http://www.die.net/doc/linux/man/man2/ioperm.2.html).
> How to ask FreeBSD to allow us to use those ports ? And then we could
> simply do:
>         mov al, 0
>         out 70h, al
>         nop
>         nop
>         nop
>         nop
>         in al, 71h
> Do you haveny any idea ?

Look at the io(4) manpage.  You need superuser access to work with
/dev/io and even then your program should be very careful about not
messing up badly with the hardware, but I think it does what you need.

A typical use of /dev/io would look like:

	if ((iofd = open("/dev/io", O_RDONLY)) == -1)
		err(1, "open: /dev/io");

	__asm__("insert your inline asm here");

	if (close(iofd) == -1)
		err(1, "close: /dev/io");



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