Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/cmd.c

    r2f33fbc r3266412  
    4545#include <console/kconsole.h>
    4646#include <print.h>
     47#include <log.h>
    4748#include <panic.h>
    4849#include <typedefs.h>
     
    6970#include <sysinfo/sysinfo.h>
    7071#include <symtab.h>
     72#include <synch/workqueue.h>
     73#include <synch/rcu.h>
    7174#include <errno.h>
    7275
     
    203206        .func = cmd_test,
    204207        .argc = 1,
    205         .argv = test_argv
     208        .argv = test_argv,
     209        .hints_enum = tests_hints_enum
    206210};
    207211
     
    243247        .func = cmd_desc,
    244248        .argc = 1,
    245         .argv = &desc_argv
     249        .argv = &desc_argv,
     250        .hints_enum = cmdtab_enum
    246251};
    247252
     
    259264        .func = cmd_symaddr,
    260265        .argc = 1,
    261         .argv = &symaddr_argv
     266        .argv = &symaddr_argv,
     267        .hints_enum = symtab_hints_enum,
    262268};
    263269
     
    300306        .func = cmd_call0,
    301307        .argc = 1,
    302         .argv = &call0_argv
     308        .argv = &call0_argv,
     309        .hints_enum = symtab_hints_enum
    303310};
    304311
     
    315322        .func = cmd_mcall0,
    316323        .argc = 1,
    317         .argv = &mcall0_argv
     324        .argv = &mcall0_argv,
     325        .hints_enum = symtab_hints_enum
    318326};
    319327
     
    337345        .func = cmd_call1,
    338346        .argc = 2,
    339         .argv = call1_argv
     347        .argv = call1_argv,
     348        .hints_enum = symtab_hints_enum
    340349};
    341350
     
    364373        .func = cmd_call2,
    365374        .argc = 3,
    366         .argv = call2_argv
     375        .argv = call2_argv,
     376        .hints_enum = symtab_hints_enum
    367377};
    368378
     
    397407        .func = cmd_call3,
    398408        .argc = 4,
    399         .argv = call3_argv
     409        .argv = call3_argv,
     410        .hints_enum = symtab_hints_enum
    400411};
    401412
     
    523534        .argc = 1,
    524535        .argv = &zone_argv
     536};
     537
     538/* Data and methods for the 'workq' command */
     539static int cmd_workq(cmd_arg_t *argv);
     540static cmd_info_t workq_info = {
     541        .name = "workq",
     542        .description = "Show global workq information.",
     543        .func = cmd_workq,
     544        .argc = 0
     545};
     546
     547/* Data and methods for the 'workq' command */
     548static int cmd_rcu(cmd_arg_t *argv);
     549static cmd_info_t rcu_info = {
     550        .name = "rcu",
     551        .description = "Show RCU run-time statistics.",
     552        .func = cmd_rcu,
     553        .argc = 0
    525554};
    526555
     
    588617        &physmem_info,
    589618        &reboot_info,
     619        &rcu_info,
    590620        &sched_info,
    591621        &set4_info,
     
    598628        &uptime_info,
    599629        &version_info,
     630        &workq_info,
    600631        &zones_info,
    601632        &zone_info,
     
    639670        for (i = 0; basic_commands[i]; i++) {
    640671                if (!cmd_register(basic_commands[i])) {
    641                         printf("Cannot register command %s\n",
     672                        log(LF_OTHER, LVL_ERROR,
     673                            "Cannot register command %s",
    642674                            basic_commands[i]->name);
    643675                }
     
    656688       
    657689        size_t len = 0;
    658         list_foreach(cmd_list, cur) {
    659                 cmd_info_t *hlp;
    660                 hlp = list_get_instance(cur, cmd_info_t, link);
    661                
     690        list_foreach(cmd_list, link, cmd_info_t, hlp) {
    662691                spinlock_lock(&hlp->lock);
    663692                if (str_length(hlp->name) > len)
     
    668697        unsigned int _len = (unsigned int) len;
    669698        if ((_len != len) || (((int) _len) < 0)) {
    670                 printf("Command length overflow\n");
     699                log(LF_OTHER, LVL_ERROR, "Command length overflow");
    671700                return 1;
    672701        }
    673702       
    674         list_foreach(cmd_list, cur) {
    675                 cmd_info_t *hlp;
    676                 hlp = list_get_instance(cur, cmd_info_t, link);
    677                
     703        list_foreach(cmd_list, link, cmd_info_t, hlp) {
    678704                spinlock_lock(&hlp->lock);
    679705                printf("%-*s %s\n", _len, hlp->name, hlp->description);
     
    912938        spinlock_lock(&cmd_lock);
    913939       
    914         list_foreach(cmd_list, cur) {
    915                 cmd_info_t *hlp;
    916                
    917                 hlp = list_get_instance(cur, cmd_info_t, link);
     940        list_foreach(cmd_list, link, cmd_info_t, hlp) {
    918941                spinlock_lock(&hlp->lock);
    919942               
     
    11561179int cmd_set4(cmd_arg_t *argv)
    11571180{
    1158         uintptr_t addr;
     1181        uintptr_t addr = 0; // Prevent -Werror=maybe-uninitialized
    11591182        uint32_t arg1 = argv[1].intval;
    11601183        bool pointer = false;
     
    12801303}
    12811304
     1305/** Prints information about the global work queue.
     1306 *
     1307 * @param argv Ignores
     1308 *
     1309 * @return Always 1
     1310 */
     1311int cmd_workq(cmd_arg_t *argv)
     1312{
     1313        workq_global_print_info();
     1314        return 1;
     1315}
     1316
     1317/** Prints RCU statistics.
     1318 *
     1319 * @param argv Ignores
     1320 *
     1321 * @return Always 1
     1322 */
     1323int cmd_rcu(cmd_arg_t *argv)
     1324{
     1325        rcu_print_stat();
     1326        return 1;
     1327}
     1328
    12821329/** Command for listing memory zones
    12831330 *
     
    13641411        printf("The kernel will now relinquish the console.\n");
    13651412        release_console();
    1366        
    1367         event_notify_0(EVENT_KCONSOLE, false);
    13681413        indev_pop_character(stdin);
    13691414       
Note: See TracChangeset for help on using the changeset viewer.