This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

It is possible to define a Task in RTX like an "extern"?

I had tried to define a task like an extern so I could split my task in several files, but it doesnt works I dont know if I can define a task like external.

for exemple:

extern __task void tick_timer (void);

gives me error.

when I try this with others normal functions it works...so its not a problem of files or a thing like that

Thanks

Gabriel

Parents
  • This builds just fine:
    main.c

    #include <RTL.h>
    
    extern __task void task2 (void);
    OS_TID id2;
    
    __task void task1 (void) {
      id2 = os_tsk_create (task2, 1);
      for (;;) {
        os_evt_set (0x0004, id2);
        os_dly_wait (5);
      }
    }
    int main (void) {
      os_sys_init (task1);
    }
    

    external.c

    #include <RTL.h>
    __task void task2 (void) {
      for (;;) {
        os_evt_wait_or (0x0004, 0xffff);
      }
    }
    

Reply
  • This builds just fine:
    main.c

    #include <RTL.h>
    
    extern __task void task2 (void);
    OS_TID id2;
    
    __task void task1 (void) {
      id2 = os_tsk_create (task2, 1);
      for (;;) {
        os_evt_set (0x0004, id2);
        os_dly_wait (5);
      }
    }
    int main (void) {
      os_sys_init (task1);
    }
    

    external.c

    #include <RTL.h>
    __task void task2 (void) {
      for (;;) {
        os_evt_wait_or (0x0004, 0xffff);
      }
    }
    

Children
  • Thanks I can see my error now.. I've had a preprocesor symbol "RTX_KERNEL" not defined so It was for that that it wasn't working...

    #ifdef RTX_KERNEL

    /* Forward references */ __task void init (void); __task void tick_timer (void); __task void tache_display(void); __task void tache_spi (void); __task void send_data (void); __task void send_data2 (void); __task void send_data3 (void); extern __task void flash_table (void);
    #endif

  • You can use uVision internal RTX switch instead of your own:

    #ifdef __RTX
     // Options for Target - Operating system - RTX Kernel
    #else
     // Options for Target - Operating system - None
    #endif