[Click] help! seg fault :(
Venky Rama
venky2rama at yahoo.com
Sun Jul 16 00:14:00 EDT 2006
hello.
trying to write a packet scheduler that can read information (timestamp of head packet) from upstream queues BEFORE pulling to determine which queue to pull from.
however, it gives a seg fault eveytime the upstream queue tried to read packet information.
--------------------------
Queue function
--------------------------
int
ModifiedNotifierQueue::priority {
int head_pkt_time_sec = 0;
int head_pkt_time_usec = 0;
int head_pkt_time = 0;
if (_head != _tail) {
// *SEG FAULT* - works if next 4 lines deleted
Packet *p = _q[_head];
struct timeval ×tamp = p->timestamp_anno();
head_pkt_time = timestamp.tv_sec + 1000000*timestamp.tv_usec;
click_chatter("head pkt: %i", head_pkt_time);
}
return head_pkt_time;
}
--------------------------
Scheduler function
--------------------------
Packet *
ModifiedRoundRobinScheduler::pull(int)
{
int q_prio;
int next_q = -1;
for (int j = 0; j < ninputs(); j++) {
if (signals[j]) {
Queue* q = (Queue*)input(j).element();
q_prio = q->priority();
if (some_condition_with_q_prio) {
next_q = j;
}
}
}
if (next_q == -1)
return 0;
else
return input(next_q).pull();
}
this works just fine when i use test sources like TimedSource or InfiniteSource on the same machine. but when i run the same using an external source and external sink (different machines), then i get the seg fault.
can someone please shed some light?
thanks in advance.
venky
---------------------------------
How low will we go? Check out Yahoo! Messengers low PC-to-Phone call rates.
More information about the click
mailing list