2017-06-21 12 views
2

私はcontikiを初めて使用しています。誰もが私がしようとしていたコードであるCPU usage.Belowの輻輳を作成するために、私は、並列に複数のプロセスを開始することができますか教えてくださいすることができます -Contikiの複数のプロセスが負荷CPUで作成する

#include "contiki.h" 
#include <stdio.h> 

PROCESS(cpu_load_process_1, "CPU Loading Process 1"); 
PROCESS(cpu_load_process_2, "CPU Loading Process 2"); 
PROCESS(cpu_load_process_3, "CPU Loading Process 3"); 
PROCESS(cpu_load_process_4, "CPU Loading Process 4"); 

AUTOSTART_PROCESSES(&cpu_load_process_1); 
AUTOSTART_PROCESSES(&cpu_load_process_2); 

PROCESS_THREAD(cpu_load_process_1, ev, data) 
{ 
    PROCESS_BEGIN(); 
    PROCESS_END(); 
} 
PROCESS_THREAD(cpu_load_process_3, ev, data) 
{ 
    PROCESS_BEGIN(); 
    PROCESS_END(); 
} 

しかし、これは以下のようなエラーを与える: -

/home/user/contiki-3.0/core/./sys/autostart.h:48:24: error: redefinition of ‘autostart_processes’ 
struct process * const autostart_processes[] = {__VA_ARGS__, NULL}struct process * const autostart_processes[] = {__VA_ARGS__, NULL} 

私を案内してください。 CPUの輻輳を引き起こす代替方法/提案も役立ちます。

答えて

3

マクロAUTOSTART_PROCESSESの背後には、構造体定義が隠されています。

#define AUTOSTART_PROCESSES(...)     \ 
    struct process * const autostart_processes[] = {__VA_ARGS__, NULL} 

AUTOSTART_PROCESSESを2回呼び出すと、構造体が2回定義されます。

ソリューション:

マクロパラメータが与えられるが、私はあなたが書く必要があることを推測する:

AUTOSTART_PROCESSES(&cpu_load_process_1, &cpu_load_process_2); 

代わりの

AUTOSTART_PROCESSES(&cpu_load_process_1); 
AUTOSTART_PROCESSES(&cpu_load_process_2); 
+0

それは良い答えです。 –

+0

はい、これは動作します。ありがとう。 –

関連する問題