So examples/v1api/frank doesn't compile?
Did you enable CONFIG_RTL_USE_V1_API and recompile RTL?

Norm Dresner ([EMAIL PROTECTED]) wrote:
> Okay, I confesss, I've seen these questions a hundred times.  But I'm not at
> work and my main e-mail computer at home is down and I don't have the
> archive on the backup e-mail server.  So I appologize for asking it yet once
> again.
> 
> I was first trying to get an old v1-api program to compile and had no luck,
> just a flood of diagnostics about things being multiply-defined and/or
> unknown.
> 
> So I took a step back and decided to try to emulate one of the examples.
> After that didn't improve the situation, I tried to compile just one of the
> examples.  Below is the output and source from frank_module.  The errors I
> get there are similar to (some of) what I see in my own program so I feel
> that if I can get past frank, I'll be a long way toward getting my program
> compiled too.
> 
> All help is appreciated.  BTW, the system is RH 6.2 w/2.2.18 and RTL 3.0
> 
> 
>  Norm Dresner
>  Fellow Systems Engineer & ARE/SGI Laboratory Administrator
>  Radar Systems Engineering Department
>  MS 520/1154
> 
> Voice: (410) 993 - 2096 Mornings in Flight Test; all-day voice-mail
>  (410) 765 - 9235/82 Occasionally in the SGI Lab; all-day voice-mail
>  (410) 969 - 8068 Afternoons at home; answering machine
> FAX: (410) 993 - 8084 On-site in Flight Test
>  (410) 969 - 8068 Afternoons at home; call first to arrange
> E-Mail: Mornings: [EMAIL PROTECTED]
>  Afternoons: [EMAIL PROTECTED]
> 
> ############ here are the errors #########################
> cc -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/include -I/usr/sr
> c/rtlinux-3.0/include/compat  -D__KERNEL__ -Wall -Wstrict-prototypes -fno-st
> rict-aliasing -D__SMP__ -pipe -fno-strength-reduce -m486 -malign-loops=2 -ma
> lign-jumps=2 -malign-functions=2 -DCPU=586 -g -D__RTL__ -DMODULE -D_LOOSE_KE
> RNEL_NAMES -O2 -I/usr/src/rtlinux/linux/include -I/usr/src/rtlinux-3.0/inclu
> de -I/usr/src/rtlinux-3.0/include/compat -I/usr/src/rtlinux-3.0/include/posi
> x -c frank_module.c -o frank_module.o
> In file included from frank_module.c:5:
> /usr/src/rtlinux-3.0/include/rtl_sched.h:89: `RTL_PTHREAD_KEYS_MAX'
> undeclared here (not in a function)
> /usr/src/rtlinux-3.0/include/rtl_sched.h: In function `pthread_getspecific':
> /usr/src/rtlinux-3.0/include/rtl_sched.h:216: warning: control reaches end
> of non-void function
> /usr/src/rtlinux-3.0/include/rtl_compat.h: At top level:
> In file included from /usr/src/rtlinux-3.0/include/rtl_sched.h:380,
>                  from frank_module.c:5:
> /usr/src/rtlinux-3.0/include/rtl_compat.h:41: parse error before `RTIME'
> /usr/src/rtlinux-3.0/include/rtl_compat.h:42: warning: function declaration
> isn't a prototype
> /usr/src/rtlinux-3.0/include/rtl_compat.h: In function
> `rt_task_make_periodic':
> /usr/src/rtlinux-3.0/include/rtl_compat.h:44: `start_time' undeclared (first
> use in this function)
> /usr/src/rtlinux-3.0/include/rtl_compat.h:44: (Each undeclared identifier is
> reported only once
> /usr/src/rtlinux-3.0/include/rtl_compat.h:44: for each function it appears
> in.)
> /usr/src/rtlinux-3.0/include/rtl_compat.h:44: `period' undeclared (first use
> in this function)
> /usr/src/rtlinux-3.0/include/rtl_compat.h:44: warning: passing arg 1 of
> `pthread_make_periodic_np' from incompatible pointer type
> make: *** [frank_module.o] Error 1
> 
> ################### here's the source code #################
> #include <linux/errno.h>
> #include <rtl.h>
> #include <time.h>
> 
> #include <rtl_sched.h>
> #include <rtl_fifo.h>
> #include "control.h"
> 
> pthread_t tasks[2];
> 
> static char *data[] = {"Frank ", "Zappa "};
> 
> #define TASK_CONTROL_FIFO_OFFSET 4
> 
> void *thread_code(void *t)
> {
>  int fifo = (int) t;
>  int taskno = fifo - 1;
>  struct my_msg_struct msg;
>  while (1) {
>   int ret;
>   int err;
>   ret = pthread_wait_np();
>   if ((err = rtf_get (taskno + TASK_CONTROL_FIFO_OFFSET, &msg, sizeof(msg)))
> == sizeof(msg)) {
>    rtl_printf("Task %d: executing the \"%d\" command to task %d; period
> %d\n", fifo - 1,  msg.command, msg.task, msg.period);
>    switch (msg.command) {
>     case START_TASK:
>      pthread_make_periodic_np(pthread_self(), gethrtime(), msg.period *
> 1000);
> 
>      break;
>     case STOP_TASK:
>      pthread_suspend_np(pthread_self());
>      break;
>     default:
>      rtl_printf("RTLinux task: bad command\n");
>      return 0;
>    }
>   }
>   rtf_put(fifo, data[fifo - 1], 6);
>  }
>  return 0;
> }
> 
> int my_handler(unsigned int fifo)
> {
>  struct my_msg_struct msg;
>  int err;
> 
>  while ((err = rtf_get(COMMAND_FIFO, &msg, sizeof(msg))) == sizeof(msg)) {
>   rtf_put (msg.task + TASK_CONTROL_FIFO_OFFSET, &msg, sizeof(msg));
>   rtl_printf("FIFO handler: sending the \"%d\" command to task %d; period
> %d\n", msg.command,
>     msg.task, msg.period);
>   pthread_wakeup_np (tasks [msg.task]);
>  }
>  if (err != 0) {
>   return -EINVAL;
>  }
>  return 0;
> }
> 
> 
> 
> 
> /* #define DEBUG  */
> int init_module(void)
> {
>  int c[5];
>  pthread_attr_t attr;
>  struct sched_param sched_param;
>  int ret;
> 
>  rtf_destroy(1);
>  rtf_destroy(2);
>  rtf_destroy(3);
>  rtf_destroy(4);
>  rtf_destroy(5);
>   c[0] = rtf_create(1, 4000);
>  c[1] = rtf_create(2, 4000);
>  c[2] = rtf_create(3, 200); /* input control channel */
>  c[3] = rtf_create(4, 100); /* input control channel */
>  c[4] = rtf_create(5, 100); /* input control channel */
> 
>  pthread_attr_init (&attr);
>  sched_param.sched_priority = 4;
>  pthread_attr_setschedparam (&attr, &sched_param);
>  ret = pthread_create (&tasks[0],  &attr, thread_code, (void *)1);
> 
>  pthread_attr_init (&attr);
>  sched_param.sched_priority = 5;
>  pthread_attr_setschedparam (&attr, &sched_param);
>  ret = pthread_create (&tasks[1],  &attr, thread_code, (void *)2);
> 
>  rtf_create_handler(3, &my_handler);
>  return 0;
> }
> 
> 
> void cleanup_module(void)
> {
> #ifdef DEBUG
>  printk("%d\n", rtf_destroy(1));
>  printk("%d\n", rtf_destroy(2));
>  printk("%d\n", rtf_destroy(3));
>  printk("%d\n", rtf_destroy(4));
>  printk("%d\n", rtf_destroy(5));
> #else
>  rtf_destroy(1);
>  rtf_destroy(2);
>  rtf_destroy(3);
>  rtf_destroy(4);
>  rtf_destroy(5);
> #endif
>  pthread_cancel (tasks[0]);
>  pthread_join (tasks[0], NULL);
>  pthread_cancel (tasks[1]);
>  pthread_join (tasks[1], NULL);
> }
> 
> 
> ----- End of forwarded message from [EMAIL PROTECTED] -----
> -- [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/

-- [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/

Reply via email to