Contiki OS中所有正在运行的进程的列表

时间:2015-11-10 13:21:27

标签: process contiki

是否有可能在contiki os中列出所有正在运行的进程并在调试输出(即UART)上输出结果?

1 个答案:

答案 0 :(得分:3)

将其插入contiki platform.c和main():

struct process *p;
uint8_t ps;
int n;

int
main(void)   /*contiki main() here */
{
n=0;

while(1)
{
//...
//...
/*************************************************************/
if(n==100)
{
uint8_t ps=process_nevents();
        PRINTF("there are %u events in the queue", ps);
        PRINTF("\n\n");
PRINTF("Processes:");
for(p = PROCESS_LIST(); p != NULL; p = p->next) 
{
char namebuf[30];
strncpy(namebuf, PROCESS_NAME_STRING(p), sizeof(namebuf));
PRINTF("%s", namebuf);
PRINTF("\n\n");
n=0;
}
}
n +=1;
/*********************************************************************/
//...
//...
}
return 0;
}

这将在主循环的每100次迭代中输出正在运行的进程

如果您使用UART作为调试端口,您必须将PRINTF()的输出重定向到正确的端口,即在 atmega128rfa1

/* Second rs232 port for debugging or slip alternative */
  rs232_init(RS232_PORT_1, USART_BAUD_9600,USART_PARITY_NONE |   
  USART_STOP_BITS_1 | USART_DATA_BITS_8);
  /* Redirect stdout */

/* #if RF230BB_CONF_LEDONPORTE1 || defined(RAVEN_LCD_INTERFACE) */
  rs232_redirect_stdout(RS232_PORT_1);

contiki shell源代码包含非常有用的命令,可以在不使用整个shell的情况下轻松地用于调试,请参阅 http://anrg.usc.edu/contiki/index.php/Contiki_Shell