Hello,
Thanks guys for the good responses. I have the thread
running on v2.2 successfully now.
However, my new (probably simpler) question is this
(this one may be easier to answer than the last):
If I provide a period that is too small, what should
happen??
In my code I ran the thread one thousand times (that
is after the 1000th iteration I suspend the thread)
with a period of 1ms. Everythings good. However, when
I decrease the period to .1ms I can only run the code
with about 300 iterations. Anymore than 300 or so, and
the kernel dies and I have to reboot.
I have supplied some code:
Thread code:
static void *sendUIPThread(void *t)
{
struct uipBuff pkt;
int dstNode;
int count = 0;
dstNode = (int ) t;
while(count < totalIterations) {
pthread_wait_np();
pkt.srcNode = myNodeID;
pkt.dstNode = dstNode;
pkt.pkt_type = 0; // control pkt for now
pkt.len = sizeof(pkt) + 16; //SIZEOF_UIP_BUFF +
16;
pkt.seq = count;
pkt.command = MSG_TEST_RND_TIME;
txTime[count] = gethrtime();
eeDriver_tx(&pkt,
(void*)&macTable[pkt.dstNode]);
count++;
}
if(count >= totalIterations)
pthread_suspend_np(pthread_self());
pthread_delete_np(sendTask);
return 0;
}
initialization of thread:
pthread_attr_init(&attr);
sched_param.sched_priority = 100000;
pthread_attr_setschedparam(&attr, &sched_param);
pthread_attr_setstacksize(&attr, 5120);
pthread_create(&sendTask, &attr, sendUIPThread,
(void *)sc.dstNode);
pthread_wakeup_np(sendTask);
pthread_make_periodic_np(sendTask, gethrtime(),
1000000);
Jason
__________________________________________________
Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/