Changeset 435 for trunk/user
- Timestamp:
- Feb 20, 2018, 5:32:17 PM (7 years ago)
- Location:
- trunk/user
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/user/init/init.c
r434 r435 38 38 for( i = 1 ; i < NB_TXT_CHANNELS ; i++ ) 39 39 { 40 41 snprintf( string , 64 , "@@@ before fork / iter = %d\n" , i );42 display_string( string );43 44 40 // INIT process fork process CHILD[i] 45 41 ret_fork = fork(); 46 47 snprintf( string , 64 , "@@@ after fork / iter = %d / ret_fork = %d\n" , i , ret_fork );48 display_string( string );49 42 50 43 if( ret_fork< 0 ) // error in fork 51 44 { 52 45 // INIT display error message on TXT0 terminal 53 snprintf( string , 64 , "init cannot fork child[%d]\n" , i ); 46 snprintf( string , 64 , 47 "INIT cannot fork child[%d]\n" , i ); 54 48 display_string( string ); 55 49 … … 65 59 { 66 60 // display error message on TXT0 terminal 67 snprintf( string , 64 , "child[%d] cannot exec ksh[%d]\n" , i , i ); 61 snprintf( string , 64 , 62 "CHILD[%d] cannot exec KSH[%d] / ret_exec = %d\n" , i , i , ret_exec ); 68 63 display_string( string ); 69 70 // CHILD[i] exit71 // exit( 0 );72 64 } 73 65 } … … 75 67 { 76 68 // INIT display CHILD[i] process PID 77 snprintf( string , 64 , "INIT forked CHILD[%d] / pid = %x\n", i , ret_fork ); 69 snprintf( string , 64 , 70 "INIT forked CHILD[%d] / pid = %x\n", i , ret_fork ); 78 71 display_string( string ); 79 80 // INIT delay81 int x;82 for( x=0 ; x<DELAY_BETWEEN_FORK ; x++) asm volatile ("nop");83 84 /*85 // INIT wait exec completion by CHILD[i]86 while( 1 )87 {88 // get terminating process PID89 received_pid = wait( &status );90 91 if( received_pid == ret_fork ) break;92 else93 {94 snprintf( string , 64 ,95 "expected_pid %d / received_pid %d" , ret_fork , received_pid );96 display_string( string );97 }98 }99 100 */101 // INIT display string on kernel TXT0102 snprintf( string , 64 , "INIT created KSH[%d]\n", i );103 display_string( string );104 // @@@105 display_process( 0 );106 display_sched( 0 , 0 );107 // @@@108 72 } 109 73 110 74 } 111 75 112 // This blocking loop is only for debug, because KSH[i] processes113 // should never be killed, and INIT should never return from the wait() function.76 // This loop detects the termination of the KSH[i] processes, 77 // to recreate these process when required. 114 78 while( 1 ) 115 79 { 116 // block on child process termination117 received_pid = wait( &status ); 80 // block on child processes termination 81 received_pid = wait( &status ); 118 82 119 // display string to report unexpected KSH process termination 120 snprintf( string , 64 , "KSH process %x unexpectedly terminated" , received_pid ); 121 display_string( string ); 83 if( WIFSTOPPED( status ) ) // stopped => unblock it 84 { 85 // display string to report unexpected KSH process block 86 snprintf( string , 64 , "KSH process %x unexpectedly stopped" , received_pid ); 87 display_string( string ); 88 89 } 90 91 if( WIFSIGNALED( status ) || WIFEXITED( status ) ) // killed => recreate it 92 { 93 // display string to report unexpected KSH process termination 94 snprintf( string , 64 , "KSH process %x unexpectedly terminated" , received_pid ); 95 display_string( string ); 96 } 122 97 } 123 98 -
trunk/user/ksh/ksh.c
r434 r435 484 484 unsigned int lid; 485 485 unsigned int pid; 486 unsigned int txt_id; 486 487 487 488 if( strcmp( argv[1] , "vmm" ) == 0 ) … … 526 527 cxy = atoi(argv[2]); 527 528 528 if( display_ process( cxy ) )529 if( display_cluster_processes( cxy ) ) 529 530 { 530 531 printf(" error: illegal argument cxy = %x\n", cxy ); 531 532 } 532 533 } 534 else if( strcmp( argv[1] , "txt" ) == 0 ) 535 { 536 if( argc != 3 ) 537 { 538 printf(" usage: display txt txt_id\n"); 539 return; 540 } 541 542 txt_id = atoi(argv[2]); 543 544 if( display_txt_processes( txt_id ) ) 545 { 546 printf(" error: illegal argument txt_id = %x\n", txt_id ); 547 } 548 } 533 549 else if( strcmp( argv[1] , "vfs" ) == 0 ) 534 550 { … … 553 569 else 554 570 { 555 printf(" usage display (vmm/sched/process/vfs/chdev) [cxy] [lid]\n");571 printf(" usage: display (vmm/sched/process/vfs/chdev/txt) [arg2] [arg3]\n"); 556 572 } 557 573 } … … 563 579 ksh_cmd_t cmd[] = 564 580 { 565 { "cat", "display file content", cmd_cat },566 { "cd", "change current directory", cmd_cd },567 { "cp", "replicate a file in file system", cmd_cp },568 { "fg", "put a process in foreground", cmd_fg },569 { "display", "display vmm/sched/process/vfs/chdev ",cmd_display },570 { "load", "load an user application", cmd_load },571 { "help", "list available commands", cmd_help },572 { "kill", "kill an application (all threads)", cmd_kill },573 { "log", "list registered commands", cmd_log },574 { "ls", "list directory entries", cmd_ls },575 { "mkdir", "create a new directory", cmd_mkdir },576 { "mv", "move a file in file system", cmd_mv },577 { "pwd", "print current working directory", cmd_pwd },578 { "rm", "remove a file from file system", cmd_rm },579 { "rmdir", "remove a directory from file system", cmd_rmdir },580 { NULL, NULL, NULL}581 { "cat", "display file content", cmd_cat }, 582 { "cd", "change current directory", cmd_cd }, 583 { "cp", "replicate a file in file system", cmd_cp }, 584 { "fg", "put a process in foreground", cmd_fg }, 585 { "display", "display vmm/sched/process/vfs/chdev/txt", cmd_display }, 586 { "load", "load an user application", cmd_load }, 587 { "help", "list available commands", cmd_help }, 588 { "kill", "kill an application (all threads)", cmd_kill }, 589 { "log", "list registered commands", cmd_log }, 590 { "ls", "list directory entries", cmd_ls }, 591 { "mkdir", "create a new directory", cmd_mkdir }, 592 { "mv", "move a file in file system", cmd_mv }, 593 { "pwd", "print current working directory", cmd_pwd }, 594 { "rm", "remove a file from file system", cmd_rm }, 595 { "rmdir", "remove a directory from file system", cmd_rmdir }, 596 { NULL, NULL, NULL } 581 597 }; 582 598 -
trunk/user/sort/sort.c
r434 r435 265 265 266 266 get_cycle( &cycle ); 267 printf("\n[SORT] completes barrier init at cycle %d\n", (unsigned int)cycle ); 267 printf("\n[SORT] completes barrier init at cycle %d continue ?\n", (unsigned int)cycle ); 268 getchar(); 268 269 269 270 // Array to sort initialization
Note: See TracChangeset
for help on using the changeset viewer.