[Click] Problem with Timer and Task
Paolo Mailing
paolo.mailing at gmail.com
Thu Oct 19 14:10:21 EDT 2006
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..
More information about the click
mailing list