Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Dec 2008 10:35:16 +0100
From:      Christoph Mallon <christoph.mallon@gmx.de>
To:        Won De Erick <won.derick@yahoo.com>
Cc:        freebsd-hackers@freebsd.org, Rink Springer <rink@FreeBSD.org>, freebsd-hardware@freebsd.org
Subject:   Re: Watchdog for Boser (HS-7001)
Message-ID:  <4933AFD4.3070501@gmx.de>
In-Reply-To: <611173.7111.qm@web45805.mail.sp1.yahoo.com>
References:  <547602.79284.qm@web45809.mail.sp1.yahoo.com>	<4933A29B.8060907@gmx.de> <20081201090421.GA99082@rink.nu> <611173.7111.qm@web45805.mail.sp1.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Won De Erick schrieb:
>> ----- Original Message ----
> 
>> From: Rink Springer <rink@FreeBSD.org>
>>
>>
> On Mon, Dec 01, 2008 at 09:38:51AM +0100, Christoph Mallon wrote:
>>> Userland is not allowed to write to ports. That's the bus error you see. 
>>> Also without a call to the exit syscall at the end, it will segfault.
>> Note that you can write to ports from userland by opening /dev/io - if
>> you have it opened, you can write to the ports.
>>
> 
> I've added the following at the end
> 
>   mov eax, 1 ; SYS_exit
>   call doint
> 
>   doint:
>      int 0x80
>      ret
> 
> Besides, I can see the following at /dev
> crw-------   1 root   wheel       0,  16 Nov 27 01:53 io
> 
> How should I make this open? do i need to %include this?

You're probably better of writing this in C. Here is a wrapper for the 
out instruction:

static inline outb(unsigned short port, unsigned char data)
{
   asm("outb %0, %1" : : "a" (data), "dN" (port));
}

As Rink mentioned, you have to open /dev/io. The process must have 
super-user privileges, see io(4).

Regards
	Christoph



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