Hi
I'm porting a Linux program to FreeBSD. This program consists of two threads: one that reads the status of some custom hardware and other that sends this information over the network.
The reader thread accesses the hardware via inb/outb calls, after I get permission with i386_set_ioperm.
The thread responsible for the network just opens a socket, waits for commands and sends the results to the client program. The client program is basically a while(1) loop that keeps sending "read command" to my threaded program (the server).
Whenever I execute my threaded program, after a (short) while I get
several times. The keyboard goes unresponsive, so I'm not able to do anything.
To those wondering (I snipped off other irq's):
[CMD=]vmstat -i[/cmd]
Bear in mind that I issued this command immediately after boot, because my keyboard freezes when I execute the server. As far as I know, ohci0 and ehci0 are USB controllers, right? The only USB device in this system is the keyboard. So I'm kind of lost trying to figure out the real cause of the problem.
I've disabled the reader thread, letting only the 'networker' thread run, and the problem also surfaced.
I'm completely new to FreeBSD, but did my homework, and searched all the Internets and this and other forums, and did not find the solution. I already tried to raise (and I mean *really raise*, up high) hw.intr_storm_threshold, but to no avail. Recompiling the kernel is not an option.
Thanks in advance.
I'm porting a Linux program to FreeBSD. This program consists of two threads: one that reads the status of some custom hardware and other that sends this information over the network.
The reader thread accesses the hardware via inb/outb calls, after I get permission with i386_set_ioperm.
The thread responsible for the network just opens a socket, waits for commands and sends the results to the client program. The client program is basically a while(1) loop that keeps sending "read command" to my threaded program (the server).
Whenever I execute my threaded program, after a (short) while I get
Code:
interrupt storm detected on "irq5:"; throttling interrupt source
To those wondering (I snipped off other irq's):
[CMD=]vmstat -i[/cmd]
Code:
interrupt total rate
irq5: ohci0 ehci0 57 1
Bear in mind that I issued this command immediately after boot, because my keyboard freezes when I execute the server. As far as I know, ohci0 and ehci0 are USB controllers, right? The only USB device in this system is the keyboard. So I'm kind of lost trying to figure out the real cause of the problem.
I've disabled the reader thread, letting only the 'networker' thread run, and the problem also surfaced.
I'm completely new to FreeBSD, but did my homework, and searched all the Internets and this and other forums, and did not find the solution. I already tried to raise (and I mean *really raise*, up high) hw.intr_storm_threshold, but to no avail. Recompiling the kernel is not an option.
Thanks in advance.