Changeset 643 for soft


Ignore:
Timestamp:
Jul 22, 2015, 12:57:58 PM (9 years ago)
Author:
alain
Message:

Introduce the "exec" and "kill" commands in the shell application.

Location:
soft/giet_vm/applications/shell
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/applications/shell/main.c

    r641 r643  
    2121
    2222////////////////////////////////////////////////////////////////////////////////
    23 //// commands
     23//  Shell  Commands
     24////////////////////////////////////////////////////////////////////////////////
    2425
    2526struct command_t cmd[];
    2627
     28///////////////////////////////////////////
    2729static void cmd_help(int argc, char** argv)
    2830{
     
    3739}
    3840
     41///////////////////////////////////////////////
    3942static void cmd_proctime(int argc, char** argv)
    4043{
     
    4245}
    4346
     47/////////////////////////////////////////
    4448static void cmd_ls(int argc, char** argv)
    4549{
     
    5357}
    5458
     59////////////////////////////////////////////
    5560static void cmd_mkdir(int argc, char** argv)
    5661{
     
    6873}
    6974
     75/////////////////////////////////////////
    7076static void cmd_cp(int argc, char** argv)
    7177{
     
    151157}
    152158
     159////////////////////////////////////////////
    153160static void cmd_rmdir(int argc, char **argv)
    154161{
     
    166173}
    167174
     175/////////////////////////////////////////
    168176static void cmd_mv(int argc, char **argv)
    169177{
     
    181189}
    182190
     191///////////////////////////////////////////
     192static void cmd_exec(int argc, char **argv)
     193{
     194    if (argc < 2)
     195    {
     196        giet_tty_printf("%s <pathname>\n", argv[0]);
     197        return;
     198    }
     199
     200    int ret = giet_exec_application(argv[1]);
     201    if ( ret == -1 )
     202    {
     203        giet_tty_printf("\n  error : %s not found\n", argv[1] );
     204    }
     205}
     206
     207///////////////////////////////////////////
     208static void cmd_kill(int argc, char **argv)
     209{
     210    if (argc < 2)
     211    {
     212        giet_tty_printf("%s <pathname>\n", argv[0]);
     213        return;
     214    }
     215
     216    int ret = giet_kill_application(argv[1]);
     217    if ( ret == -1 )
     218    {
     219        giet_tty_printf("\n  error : %s not found\n", argv[1] );
     220    }
     221    if ( ret == -2 )
     222    {
     223        giet_tty_printf("\n  error : %s cannot be killed\n", argv[0] );
     224    }
     225}
     226
     227////////////////////////////////////////////////////////////////////
    183228struct command_t cmd[] =
    184229{
     
    191236    { "rmdir",      cmd_rmdir },
    192237    { "mv",         cmd_mv },
     238    { "exec",       cmd_exec },
     239    { "kill",       cmd_kill },
    193240    { NULL,         NULL }
    194241};
    195242
    196 ////////////////////////////////////////////////////////////////////////////////
    197 //// shell
    198 
    199 static void exec(char *buf, int count)
     243// shell
     244
     245///////////////////////////////////////
     246static void parse(char *buf, int count)
    200247{
    201248    int argc = 0;
     
    239286        if (!found)
    240287        {
    241             giet_tty_printf("unknown command %s\n", argv[0]);
    242         }
    243     }
    244 }
    245 
     288            giet_tty_printf("undefined command %s\n", argv[0]);
     289        }
     290    }
     291}
     292
     293////////////////////
    246294static void prompt()
    247295{
     
    279327            {
    280328                buf[count] = '\0';
    281                 exec((char*)&buf, count);
     329                parse((char*)&buf, count);
    282330            }
    283331            prompt();
  • soft/giet_vm/applications/shell/shell.py

    r610 r643  
    3333
    3434    # create vspace
    35     vspace = mapping.addVspace( name = 'shell', startname = 'shell_data' )
     35    vspace = mapping.addVspace( name = 'shell', startname = 'shell_data' , active = True )
    3636   
    3737    # data vseg
Note: See TracChangeset for help on using the changeset viewer.