On 25-Oct-01 Luigi Rizzo wrote:
> I have some code (in stable) which is invoked from the idle
> loop, see below. I was trying to port it to CURRENT, but
> cannot find where the idle_loop (or idlethread ?) has gone.
> Any pointers ? A grep for idlethread did not return
> anything that i could parse.
> 
> Furthermore, what kind of locking should i use instead of
> splimp() (the procedures called by ether_input() are a
> stripped down, bounded-execution-time version of the
> interrupt service routines for ethernet adapters).

kern_idle.c.  However, it cannot use any blocking locks if you invoke it from
idle_loop().  You could also consider using a low priority kernel thread which
is what the vm zeroing code does.  So far the network stack is not locked, so
leave the splimp's in as place holders and ensure your kthread acquires Giant
around ether_poll().

>       thanks
>       luigi
> 
> --- i386/i386/swtch.s   2001/07/26 02:29:10     1.89.2.4
> +++ i386/i386/swtch.s   2001/10/23 04:00:27
> @@ -246,6 +246,15 @@
>         call    _procrunnable
>         testl   %eax,%eax
>         CROSSJUMP(jnz, sw1a, jz)
> +#ifdef XORP_ETHER_POLLING  
> +       incl    idle_done
> +       call    ether_poll
> +       sti
> +       nop
> +       cli
> +       testl   %eax, %eax
> +       jnz     idle_loop
> +#endif
>         call    _vm_page_zero_idle
>         testl   %eax, %eax
>         jnz     idle_loop
> 
> 
> --- i386/isa/intr_machdep.c     2001/08/24 17:39:12     1.29.2.3
> +++ i386/isa/intr_machdep.c     2001/10/24 02:03:55
> 
> int
> +ether_poll(void)
> +{
> +    static int i;
> +
> +    int s = splimp();
> +    if (i >= pr_next)
> +       i = 0 ;
> +    if (pr[i].handler)
> +       (*pr[i].handler)(pr[i].argument, 2);
> +    i++ ;
> +    splx(s);
> +    return 1; /* more polling */
> +}
>       
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to