[Click] Problem with Timer and Task

Beyers Cronje bcronje at gmail.com
Thu Oct 19 18:42:41 EDT 2006


Hi Paolo,

This post from Eddie might give you some pointers. I implemented it as
described by Eddie and it works fine.

https://amsterdam.lcs.mit.edu/pipermail/click/2006-August/005116.html

Hope that helps a bit.

Beyers

On 10/19/06, Paolo Mailing <paolo.mailing at gmail.com> wrote:
>
> Hi to all,
> I've written an element to do load balancing. I've modified the unqueue
> element.
> My new element has one input and to output and it choose the best output
> every some second.
> To do this in this element there are the run_task() ( from unqueue element
> )
> and the run_timer() to choose periodically the best output.
> The element crashes and those are the error :
>
> general protection fault: 0003
> CPU:    0
> EIP:    0010:[<c0105251>]    Tainted: P
> EFLAGS: 00010246
> eax: 00000000   ebx: c010522e   ecx: 00000032   edx: 00000019
> esi: 00099800   edi: c0105000   ebp: 0008e000   esp: c0219fe8
> ds: 0018   es: 0018   ss: 0018
> Process swapper (pid: 0, stackpage=c0219000)
> Stack: c01052a9 00000000 c0105027 c021a5e2 c0229560 c0100191
> Call Trace:    [<c01052a9>] [<c0105027>]
>
> Code: c3 fb c3 fb 83 c8 ff ba 00 e0 ff ff 21 e2 87 42 14 85 c0 75
> <0>Kernel panic: Attempted to kill the idle task!
> In idle task - not syncing
> <0>Rebooting in 3600 seconds..
>
>
>
> bounds: 0000
> CPU:    0
> EIP:    0010:[<c89c9354>]    Tainted: P
> EFLAGS: 00000282
> eax: c6e1507f   ebx: c6ed26c0   ecx: c6ed2000   edx: c6be80b2
> esi: 9c5b0403   edi: c6c5ca90   ebp: c6e19d9c   esp: c6e19d00
> ds: 0018   es: 0018   ss: 0018
> Process kclick (pid: 436, stackpage=c6e19000)
> Stack: c6be80b2 c6ed2680 00000006 00000008 c6be80b2 00000003 ffffff00
> 00000003
>        ffffff00 c6ed26e0 00000007 c6ed26a0 c8a4046d ffffffff 0000ffff
> c6ed26a0
>        0000001d 4f6b0b00 0000507f c6ed26c0 c6c8f5a0 c6ed2680 0000000d
> c6ed26c0
> Call Trace:    [<c8a4046d>] [<c89e3a8e>] [<c8a225c8>] [<c8a4f125>]
> [<c899ea61>]
>   [<c894ae41>] [<c894ae41>] [<c894ae41>] [<c894ae41>] [<c894ae41>]
> [<c894ae41>]
>   [<c899ea61>] [<c894ae41>] [<c894ae41>] [<c89af804>] [<c8994c71>]
> [<c895e48c>]
>   [<c895e5ab>] [<c8a268ca>] [<c01054c9>] [<c8a2684c>]
>
> Code: 66 8b 41 02 66 39 45 9a 0f 85 10 ff ff ff 66 8b 41 04 66 39
>
> I'would like to create an element that periodically checks the failure of
> the output link after the two queue at his two output,
> checks periodically which link is better.
> Then i've a queue in input and to queues in output. (FullNoteQueue)
> If the queue in input is empty the element will wait for a signal to
> reschedule the task Notifier::upstream_empty_signal(this, 0, &_task); and
> also if  both the queues in output are full will wait for a singal ti
> reschedule the task Notifier::downstream_nonfull_signal(this, 0, &_task);
> Notifier::downstream_nonfull_signal(this, 1, &_task);
> Then if the check of the link fail or if the input queue is empty or if
> both
> output queue are full this element unschedule the task.
> And each timer cicle check if the check link is successfull and the task
> is
> not scheduled it must reschedules it.
>
> Thanks for time and help.
> Paolo
>
> p.s. sorry... my english is horrible..
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>


More information about the click mailing list