uboot/include/exception.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * The 'exception' command can be used for testing exception handling.
   4 *
   5 * Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de>
   6 */
   7
   8#include <command.h>
   9
  10static int do_exception(struct cmd_tbl *cmdtp, int flag, int argc,
  11                        char *const argv[])
  12{
  13        struct cmd_tbl *cp;
  14
  15        if (argc != 2)
  16                return CMD_RET_USAGE;
  17
  18        /* drop sub-command parameter */
  19        argc--;
  20        argv++;
  21
  22        cp = find_cmd_tbl(argv[0], cmd_sub, ARRAY_SIZE(cmd_sub));
  23
  24        if (cp)
  25                return cp->cmd(cmdtp, flag, argc, argv);
  26
  27        return CMD_RET_USAGE;
  28}
  29
  30static int exception_complete(int argc, char *const argv[], char last_char,
  31                              int maxv, char *cmdv[])
  32{
  33        int len = 0;
  34        int i = 0;
  35        struct cmd_tbl *cmdtp;
  36
  37        switch (argc) {
  38        case 1:
  39                break;
  40        case 2:
  41                len = strlen(argv[1]);
  42                break;
  43        default:
  44                return 0;
  45        }
  46        for (cmdtp = cmd_sub; cmdtp != cmd_sub + ARRAY_SIZE(cmd_sub); cmdtp++) {
  47                if (i >= maxv - 1)
  48                        return i;
  49                if (!strncmp(argv[1], cmdtp->name, len))
  50                        cmdv[i++] = cmdtp->name;
  51        }
  52        cmdv[i] = NULL;
  53        return i;
  54}
  55
  56U_BOOT_CMD_COMPLETE(
  57        exception, 2, 0, do_exception,
  58        "Forces an exception to occur",
  59        exception_help_text, exception_complete
  60);
  61