Re: [rtl] Linux equivalents to pthread_make_periodic_np and pthread_suspend_np
I've come to like pthread_cond_wait, although I admit that I found it disgusting until recently -- when I wrote some applications where it was quite pleasant. On Sat, Apr 14, 2001 at 02:43:03AM +0200, Bernhard Kuhn wrote: > David Schleef schrieb: > > > It can be duplicated using something similar to the attached > > file. > > select() is not bad, but you can't guarantee a stable > period (means a delay is propagated to the following > periods). > > For this reason, i prefer pthread_cond_timedwait() > (see file attached). > Suspending can be done by using pthread_cond_wait(). > > Bernhard > // gcc -Wall -O2 -I/usr/src/rtai/include -D__KERNEL__ -DMODULE -c rt_thread.c > > #include > #include > #include > #include > > #include > #include > #include > > #define PORT 0x378 > > pthread_t thread_data; > > pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER; > pthread_cond_t wait_cond = PTHREAD_COND_INITIALIZER; > > volatile int kill=0; > > int position=0; > MODULE_PARM(position,"i"); > > > void add_ns(struct timespec *time,long ns) { > time->tv_nsec+=ns; > time->tv_sec += time->tv_nsec/(10LL); > time->tv_nsec = time->tv_nsec%(10LL); > }; > > > void thread_code(int arg) { > > struct timespec time; > clock_gettime(CLOCK_REALTIME,&time); > > while(!kill) { > > outb(0xff,PORT); > add_ns(&time,100+position); > pthread_mutex_lock(&wait_mutex); > pthread_cond_timedwait(&wait_cond,&wait_mutex,&time); > pthread_mutex_unlock(&wait_mutex); > > outb(0x00,PORT); > add_ns(&time,1900-position); > pthread_mutex_lock(&wait_mutex); > pthread_cond_timedwait(&wait_cond,&wait_mutex,&time); > pthread_mutex_unlock(&wait_mutex); > > }; > > kill=2; > pthread_exit(0); > > }; > > > int init_module(void) { > printk("rt_task: started, position=%i\n",position); > rt_set_oneshot_mode(); > start_rt_timer(0); > pthread_create(&thread_data,0,(void*)thread_code,0); > return 0; > }; > > > void cleanup_module(void) { > kill=1; > while(kill!=2); > > pthread_cond_destroy(&wait_cond); > pthread_mutex_destroy(&wait_mutex); > > stop_rt_timer(); > printk("rt_task: stopped, position=%i\n",position); > }; -- - Victor Yodaiken Finite State Machine Labs: The RTLinux Company. www.fsmlabs.com www.rtlinux.com -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
Re: [rtl] Linux equivalents to pthread_make_periodic_np and pthread_suspend_np
David Schleef schrieb: > It can be duplicated using something similar to the attached > file. select() is not bad, but you can't guarantee a stable period (means a delay is propagated to the following periods). For this reason, i prefer pthread_cond_timedwait() (see file attached). Suspending can be done by using pthread_cond_wait(). Bernhard // gcc -Wall -O2 -I/usr/src/rtai/include -D__KERNEL__ -DMODULE -c rt_thread.c #include #include #include #include #include #include #include #define PORT 0x378 pthread_t thread_data; pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t wait_cond = PTHREAD_COND_INITIALIZER; volatile int kill=0; int position=0; MODULE_PARM(position,"i"); void add_ns(struct timespec *time,long ns) { time->tv_nsec+=ns; time->tv_sec += time->tv_nsec/(10LL); time->tv_nsec = time->tv_nsec%(10LL); }; void thread_code(int arg) { struct timespec time; clock_gettime(CLOCK_REALTIME,&time); while(!kill) { outb(0xff,PORT); add_ns(&time,100+position); pthread_mutex_lock(&wait_mutex); pthread_cond_timedwait(&wait_cond,&wait_mutex,&time); pthread_mutex_unlock(&wait_mutex); outb(0x00,PORT); add_ns(&time,1900-position); pthread_mutex_lock(&wait_mutex); pthread_cond_timedwait(&wait_cond,&wait_mutex,&time); pthread_mutex_unlock(&wait_mutex); }; kill=2; pthread_exit(0); }; int init_module(void) { printk("rt_task: started, position=%i\n",position); rt_set_oneshot_mode(); start_rt_timer(0); pthread_create(&thread_data,0,(void*)thread_code,0); return 0; }; void cleanup_module(void) { kill=1; while(kill!=2); pthread_cond_destroy(&wait_cond); pthread_mutex_destroy(&wait_mutex); stop_rt_timer(); printk("rt_task: stopped, position=%i\n",position); };
[rtl] RTAI scheduler - Part 2
Hi, I'm trying to understand the RTAI scheduler (rt_schedule()). Could anyone help ? RT_TASK *task, *new_task; RTIME intr_time, now; int prio, delay, preempt; task = new_task = &rt_linux_task; // SETTING DEFAULT PRIORITY TO LINUX PRIORITY ? prio = RT_LINUX_PRIORITY; //ONESHOT mode if (oneshot_timer) { // GETTING ACTUAL TIME + SIGMA rt_time_h = rdtsc() + rt_half_tick; while ((task = task->next)) { if ((task->state & DELAYED) && task->resume_time <= rt_time_h) { // IF TASK IS WAITING FOR A RESSOURCE (SEMAPHORE..) DROP IT // FROM THE TASKS LIST. if (task->state & (SEMAPHORE | SEND | RPC)) { (task->queue.prev)->next = task->queue.next; (task->queue.next)->prev = task->queue.prev; } // DROP ALL STATE VARIABLES TO 0 task->state &= ~(DELAYED | SEMAPHORE | RECEIVE | SEND| RPC | RETURN); } // SELECT THE HIGHTEST PRIORITY TASK THAT IS READY. if (task->state == READY && task->priority < prio) { new_task = task; prio = task->priority; } } Ok, so far, everything is fine except maybe from the // DROP ALL STATE VARIABLES TO 0 task->state &= ~(DELAYED | SEMAPHORE | RECEIVE | SEND| RPC | RETURN); Why do you want to drop this bit field. If a task is waiting for a semaphore, we don't want to give it access to the CPU, right ?? So, why drop the SEMAPHORE bit to 0 ? If its priority is the highest, it will access the CPU and do nothing... preempt = 0; task = &rt_linux_task; intr_time = shot_fired ? rt_times.intr_time : rt_times.intr_time + rt_times.linux_tick; Ok, there, what does shot_fired stand for ? And what intr_time is supposed to mean ? When does a preemption will occur ? I understand that the following lines will check, for each task resume_time E [rt_time_h; intr_time] if the task state is DELAYED and see if its priority is higher than the current one we have but why do we check this time interval, what does it represent ? while ((task = task->next)) { if ((task->state & DELAYED) && task->priority <= prio && task->resume_time < intr_time) { intr_time = task->resume_time; preempt = 1; } } if (preempt || (!shot_fired && (prio == RT_LINUX_PRIORITY))) { shot_fired = 1; if (preempt) { rt_times.intr_time = intr_time; } delay = (int)(rt_times.intr_time - (now = rdtsc())) - tuned.latency; if (delay >= tuned.setup_time_TIMER_CPUNIT) { delay = imuldiv(delay, TIMER_FREQ, tuned.cpu_freq); } else { delay = tuned.setup_time_TIMER_UNIT; rt_times.intr_time = now + (tuned.setup_time_TIMER_CPUNIT); } outb(delay & 0xFF, 0x40); outb(delay >> 8, 0x40); } } Finally, for the ONESHOT mode, what does the delay stands for ? //PERIODIC else { while ((task = task->next)) { if (task->state == READY && task->priority < prio) { new_task = task; prio = task->priority; } } } Ok, this one should be easy to reply to. I understand that in periodic mode, each task is running at the minimal frequency or is a multiple of it but when a task is created and resumed, it will call the rt_schedule function and the current task will be preempted if the new task priority is higher. So, what's the difference between the periodic and one-shot mode ? Each can preempt the current task, each calls rt_schedule for the same reason (end of task, new task...). So ? Thanks Alex. Get free email and a permanent address at http://www.netaddress.com/?N=1 -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
Re: [rtl] Linux equivalents to pthread_make_periodic_np and pthread_suspend_np
On Fri, Apr 13, 2001 at 09:22:14PM +0200, Ivan Martinez wrote: > Hello all: > I'm trying to make DSLib v2 generate adecuated system calls depending on it being >Linux, RTLinux, or RTAI. I'm looking in the Linux threads functions and I don't see >any equivalent to pthread_make_periodic_np and pthread_suspend_np. Is there any?. If >not, how can I perform such operations?. > Thank you. > Ivan Martinez It can be duplicated using something similar to the attached file. dave... /* Example of a periodic task using straight POSIX calls. */ /* Copyright 2001 David Schleef <[EMAIL PROTECTED]> */ /* Use, distribution, and modification are allowed under the LGPL. */ #include #include #include #include #include #define PERIOD 10 /* 100 ms */ void tv_add_usec(struct timeval *tv,unsigned int usec); int tv_compare(struct timeval *a,struct timeval *b); void tv_sub(struct timeval *a,struct timeval *b); int main(int argc,char *argv[]) { struct timeval now; struct timeval next_tick; gettimeofday(&next_tick,NULL); tv_add_usec(&next_tick,PERIOD); while(1){ printf("tick\n"); gettimeofday(&now,NULL); if(tv_compare(&next_tick,&now)<0){ struct timeval timeout; timeout = next_tick; tv_sub(&timeout,&now); select(0,NULL,NULL,NULL,&timeout); } tv_add_usec(&next_tick,PERIOD); } } void tv_add_usec(struct timeval *tv,unsigned int usec) { tv->tv_usec += usec; while(tv->tv_usec>=100){ tv->tv_usec -= 100; tv->tv_sec ++; } } int tv_compare(struct timeval *a,struct timeval *b) { if(a->tv_sec==b->tv_sec)return b->tv_usec-a->tv_usec; return b->tv_sec-a->tv_sec; } void tv_sub(struct timeval *a,struct timeval *b) { a->tv_sec -= b->tv_sec; if(a->tv_usec < b->tv_usec){ a->tv_usec += 100; a->tv_sec --; } a->tv_usec -= b->tv_usec; }
[rtl] Video Card Problems - Which Cards are Black Listed?
Gang, I recall a few weeks back hearing about some black listed video cards due to driver problems in X11R4 (and possibly other versions). As I am about to buy a new laptop, I just want to check to see if the one I am planning to purchase will have this problem. I am looking at one of the IBM T20 series laptops with an "S3 Savage IX8" video controller. I will be using X11R3.X (probably) on it. Has anybody had any trouble with this combination, or can anybody suggest whether I am likely to have trouble with it? I am planning to do some serial communications testing with the laptop, so I will need a deterministic response within reason (latencies measured in microseconds not seconds, please). Any experiences others have had or any advice is greatly appreciated. Regards, Steve Cohen -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
[rtl] Linux equivalents to pthread_make_periodic_np and pthread_suspend_np
Hello all: I'm trying to make DSLib v2 generate adecuated system calls depending on it being Linux, RTLinux, or RTAI. I'm looking in the Linux threads functions and I don't see any equivalent to pthread_make_periodic_np and pthread_suspend_np. Is there any?. If not, how can I perform such operations?. Thank you. Ivan Martinez
Re: [rtl] RTAI scheduling
Alex Plouznikoff wrote: > > Hi, > > I was wandering if anyone had a brief description of the rt_task_struct > variables in rtai_sched.h. There is absolutly no comments in this file. Thats not true, there are atleast 5 lines of comments ;-) I think the idea is that you use the (well documented) API to access RTAI, and not mess with the structure directly. Unless you are of course trying to extend the scheduler (or something like that) and than i have to agree the comments are rather minimal, but hey, you have the source to see how they are used :-) > > Futhermore, what's the difference between the rt_schedule() and > rt_timer_handler() functions. > > Thanks. > > Alex BTW there is a special RTAI list for special RTAI questions like this. - Erwin > > > Get free email and a permanent address at http://www.netaddress.com/?N=1 > -- [rtl] --- > To unsubscribe: > echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR > echo "unsubscribe rtl " | mail [EMAIL PROTECTED] > -- > For more information on Real-Time Linux see: > http://www.rtlinux.org/rtlinux/ -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
[rtl] RTAI scheduling
Hi, I was wandering if anyone had a brief description of the rt_task_struct variables in rtai_sched.h. There is absolutly no comments in this file. Futhermore, what's the difference between the rt_schedule() and rt_timer_handler() functions. Thanks. Alex Get free email and a permanent address at http://www.netaddress.com/?N=1 -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
Re: [rtl] Why RTLinux?
You may want to complicate things by considering RTAI... ;-) www.rtai.org - Original Message - From: "Mukaila olundegun" <[EMAIL PROTECTED]> To: "Real Time Linux" <[EMAIL PROTECTED]> Sent: Friday, April 13, 2001 8:40 AM Subject: [rtl] Why RTLinux? > Dear and Fellow Engineers > > I received an invitation to give a lecture on RTLinux (i.e to support why I > recommend the use of RTLinux). > > Though there are common sense like free royalty, availability of source > code already in CD-ROM or at RTLinux related web site. But, what I really > want to emphasize is the broad knowlegde of RTLinux from the technical point > of view. i.e by comparing Windows, RTOS, VxWorks or other Real Time > OS(e.g. switching latency, memory usage, system drivers etc). > > As things change everyday I will like to compare what I have prepared > already with other peoples facts. > > I will really appreciate any kind of information you. > > Regards, > Mukaila > - Original Message - > From: Raul <[EMAIL PROTECTED]> > To: Real Time Linux <[EMAIL PROTECTED]> > Sent: Friday, January 19, 2001 12:08 AM > Subject: [rtl] network programming > > > > hello > > this may be a simple question, but I cannot get any > > information on the net so there it goes: > > I have this program that sends data over a LAN. At > > this point I'm using UDP but in the future I may have > > to use TCP/IP. > > The program works well in the user-space, but I want > > it to run within rtl. I have included the rtl.h header > > in my program and try to compile it with the make file > > rtl.mk. But it comes up with hundreds of warnings, > > most of them redefinition problems. > > The header files included are: > > sys/socket.h > > netinet/in/h > > arpa/inet.h > > netdb.h > > > > the redifinition are found in: > > > > usr/src/rtlinux-2.3/linux/include/linux/ > > > > Do I have to use rtlinux header files? Is there any > > example I could look at? > > > > thanks in advance > > RAul > > > > > > > > > > > > Do You Yahoo!? > > Get your free @yahoo.co.uk address at http://mail.yahoo.co.uk > > or your free @yahoo.ie address at http://mail.yahoo.ie > > -- [rtl] --- > > To unsubscribe: > > echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR > > echo "unsubscribe rtl " | mail [EMAIL PROTECTED] > > --- > > For more information on Real-Time Linux see: > > http://www.rtlinux.org/rtlinux/ > > > > > > -- [rtl] --- > To unsubscribe: > echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR > echo "unsubscribe rtl " | mail [EMAIL PROTECTED] > -- > For more information on Real-Time Linux see: > http://www.rtlinux.org/rtlinux/ -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
Re: [rtl] Is everyone still receiving OGJFAFOG.exe files from ....
On Fri, Apr 13, 2001 at 01:25:29AM -0400, Robert Warner wrote: > I keep getting attachments of OGJAFOGx.exe from [EMAIL PROTECTED] I > believe this to be a virus (haven't checked it and do not plan on doing > so). Why would I (we) be continuing to receive this junk. I have all the > previous (junk) if anyone needs it for diagnosis to find at shoot the culprit. You are right. The attached .EXE contains the so called "W95/Hybrid.Worm". A widley spread virus. This virus will be detected by most up-to-date scanner programs. Kai -- Kai P. Mueller Control Department (Regelungstechnik) | Phone [+49] (531) 391-3835 Technical University Braunschweig | Fax [+49] (531) 391-5194 D-38092 Braunschweig | Email [EMAIL PROTECTED] -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
Re: [rtl] Re: [realtime] ESC attendence ... ?
On Fri, Apr 13, 2001 at 01:36:59AM -0400, Peter Cavender wrote: > Because they are not a "real" company, just a couple of people hoping to > reap dot-com profits from a patent based on ancient prior art. Do not > confuse them with any of the for-profit RT Linux outfits with real > products, or any of the GPL patriots that are working on real-time > support. All they want is a royalty check in the mailbox. They couldn't > care less about trade shows or such. > > My advice is to ugnire FSMLabs and use RTAI. It is better anyway. > > :-) Your abilities to write flaimbait have not gone unnoticed. You even got me to respond -- I usually just read flamewars in amusement. Please do not attempt to advocate RTAI at the same time as bashing RTLinux and/or FSMlabs. RTAI discussion holds a relatively amicable position on this RTLinux mailing list, which we would like to keep. Contrary to popular belief, many of the RTAI developers have no specific dislike for RTLinux, and much of the software associated with RTAI also works with RTLinux. dave... (one of the RTAI maintainers) -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/
[rtl] Why RTLinux?
Dear and Fellow Engineers I received an invitation to give a lecture on RTLinux (i.e to support why I recommend the use of RTLinux). Though there are common sense like free royalty, availability of source code already in CD-ROM or at RTLinux related web site. But, what I really want to emphasize is the broad knowlegde of RTLinux from the technical point of view. i.e by comparing Windows, RTOS, VxWorks or other Real Time OS(e.g. switching latency, memory usage, system drivers etc). As things change everyday I will like to compare what I have prepared already with other peoples facts. I will really appreciate any kind of information you. Regards, Mukaila - Original Message - From: Raul <[EMAIL PROTECTED]> To: Real Time Linux <[EMAIL PROTECTED]> Sent: Friday, January 19, 2001 12:08 AM Subject: [rtl] network programming > hello > this may be a simple question, but I cannot get any > information on the net so there it goes: > I have this program that sends data over a LAN. At > this point I'm using UDP but in the future I may have > to use TCP/IP. > The program works well in the user-space, but I want > it to run within rtl. I have included the rtl.h header > in my program and try to compile it with the make file > rtl.mk. But it comes up with hundreds of warnings, > most of them redefinition problems. > The header files included are: > sys/socket.h > netinet/in/h > arpa/inet.h > netdb.h > > the redifinition are found in: > > usr/src/rtlinux-2.3/linux/include/linux/ > > Do I have to use rtlinux header files? Is there any > example I could look at? > > thanks in advance > RAul > > > > > > Do You Yahoo!? > Get your free @yahoo.co.uk address at http://mail.yahoo.co.uk > or your free @yahoo.ie address at http://mail.yahoo.ie > -- [rtl] --- > To unsubscribe: > echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR > echo "unsubscribe rtl " | mail [EMAIL PROTECTED] > --- > For more information on Real-Time Linux see: > http://www.rtlinux.org/rtlinux/ > > -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl " | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/rtlinux/