Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of all running processes in Contiki OS

is there a possibility to list all running processes in contiki os and output the result on the debugging output (i.e. UART) ?

like image 786
ralf htp Avatar asked Nov 10 '15 13:11

ralf htp


1 Answers

Insert this in the contiki platform.c and 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;
}

this will output the running processes every 100th iteration of the main loop

if you use UART as debugging port you have to redirect the output of PRINTF() to the correct port by i.e. on 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);

the contiki shell source code contains very useful commands that can easily be used for debugging without using the entire shell, see http://anrg.usc.edu/contiki/index.php/Contiki_Shell

like image 107
ralf htp Avatar answered Nov 05 '22 03:11

ralf htp