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/

Reply via email to