Lines Matching +full:diag +full:- +full:version
8 * Copyright (C) 1999-2004 Silicon Graphics, Inc. All Rights Reserved.
71 int kdb_initial_cpu = -1; /* cpu number that owns kdb */
135 * mechanisms in the kernel, so we use a very limited allocate-only
162 if ((task_thread_info(p)->flags & _TIF_MCA_INIT) && KDB_TSK(cpu)) in kdb_curr_task()
163 p = krp->p; in kdb_curr_task()
177 * the user on first-time debugger entry.
208 /* De-compose KDB_ENABLE_ALL if required */ in kdb_check_for_lockdown()
241 * kdbgetenv - This function will return the character string value of
272 * kdballocenv - This function is used to allocate bytes for
294 if ((KDB_ENVBUFSIZE - envbufsize) >= bytes) { in kdballocenv()
302 * kdbgetulenv - This function will return the value of an unsigned
303 * long-valued environment variable.
327 * kdbgetintenv - This function will return the value of an
328 * integer-valued environment variable.
330 * match A character string representing an integer-valued env variable
339 int diag; in kdbgetintenv() local
341 diag = kdbgetulenv(match, &val); in kdbgetintenv()
342 if (!diag) in kdbgetintenv()
344 return diag; in kdbgetintenv()
348 * kdb_setenv() - Alter an existing environment variable or create a new one.
381 for (i = 0; i < __nenv-1; i++) { in kdb_setenv()
392 * kdb_printenv() - Display the current environment variables.
405 * kdbgetularg - This function will convert a numeric string into an
456 * kdb_set - This function implements the 'set' command. Alter an
465 * - if the latter, shift 'em down. in kdb_set()
469 argc--; in kdb_set()
519 * kdbgetaddrarg - This function is responsible for parsing an
520 * address-expression and returning the value of the expression,
527 * consisting of a symbol name, +/-, and a numeric constant value
530 * argc - count of arguments in argv
531 * argv - argument vector
532 * *nextarg - index to next unparsed argument in argv[]
533 * regs - Register state at time of KDB entry
535 * *value - receives the value of the address-expression
536 * *offset - receives the offset specified, if any
537 * *name - receives the symbol name, if any
538 * *nextarg - index to next unparsed argument in argv[]
550 int diag; in kdbgetaddrarg() local
569 * symbol | numeric-address [+/- numeric-offset] in kdbgetaddrarg()
571 * $environment-variable in kdbgetaddrarg()
581 * or address and the '+' or '-' symbols, we in kdbgetaddrarg()
585 cp = strpbrk(symname, "+-"); in kdbgetaddrarg()
592 diag = kdbgetulenv(&symname[1], &addr); in kdbgetaddrarg()
593 if (diag) in kdbgetaddrarg()
594 return diag; in kdbgetaddrarg()
596 diag = kdb_check_regs(); in kdbgetaddrarg()
597 if (diag) in kdbgetaddrarg()
598 return diag; in kdbgetaddrarg()
608 diag = kdbgetularg(argv[*nextarg], &addr); in kdbgetaddrarg()
609 if (diag) in kdbgetaddrarg()
610 return diag; in kdbgetaddrarg()
624 *offset = addr - symtab.sym_start; in kdbgetaddrarg()
631 * check for +/- and offset in kdbgetaddrarg()
636 && (argv[*nextarg][0] != '-')) { in kdbgetaddrarg()
661 diag = kdbgetularg(cp, &off); in kdbgetaddrarg()
662 if (diag) in kdbgetaddrarg()
663 return diag; in kdbgetaddrarg()
666 off = -off; in kdbgetaddrarg()
677 static void kdb_cmderror(int diag) in kdb_cmderror() argument
681 if (diag >= 0) { in kdb_cmderror()
682 kdb_printf("no error detected (diagnostic is %d)\n", diag); in kdb_cmderror()
687 if (kdbmsgs[i].km_diag == diag) { in kdb_cmderror()
688 kdb_printf("diag: %d: %s\n", diag, kdbmsgs[i].km_msg); in kdb_cmderror()
693 kdb_printf("Unknown diag %d\n", -diag); in kdb_cmderror()
697 * kdb_defcmd, kdb_defcmd2 - This function implements the 'defcmd'
733 if (!list_empty(&kdb_macro->statements)) in kdb_defcmd2()
734 kdb_register(&kdb_macro->cmd); in kdb_defcmd2()
745 kms->statement = kdb_strdup(cmdstr, GFP_KDB); in kdb_defcmd2()
746 list_add_tail(&kms->list_node, &kdb_macro->statements); in kdb_defcmd2()
766 if (kp->func == kdb_exec_defcmd) { in kdb_defcmd()
768 kp->name, kp->usage, kp->help); in kdb_defcmd()
770 list_for_each_entry(kms, &kmp->statements, in kdb_defcmd()
772 kdb_printf("%s", kms->statement); in kdb_defcmd()
788 mp = &kdb_macro->cmd; in kdb_defcmd()
789 mp->func = kdb_exec_defcmd; in kdb_defcmd()
790 mp->minlen = 0; in kdb_defcmd()
791 mp->flags = KDB_ENABLE_ALWAYS_SAFE; in kdb_defcmd()
792 mp->name = kdb_strdup(argv[1], GFP_KDB); in kdb_defcmd()
793 if (!mp->name) in kdb_defcmd()
795 mp->usage = kdb_strdup(argv[2], GFP_KDB); in kdb_defcmd()
796 if (!mp->usage) in kdb_defcmd()
798 mp->help = kdb_strdup(argv[3], GFP_KDB); in kdb_defcmd()
799 if (!mp->help) in kdb_defcmd()
801 if (mp->usage[0] == '"') { in kdb_defcmd()
802 strcpy(mp->usage, argv[2]+1); in kdb_defcmd()
803 mp->usage[strlen(mp->usage)-1] = '\0'; in kdb_defcmd()
805 if (mp->help[0] == '"') { in kdb_defcmd()
806 strcpy(mp->help, argv[3]+1); in kdb_defcmd()
807 mp->help[strlen(mp->help)-1] = '\0'; in kdb_defcmd()
810 INIT_LIST_HEAD(&kdb_macro->statements); in kdb_defcmd()
814 kfree(mp->usage); in kdb_defcmd()
816 kfree(mp->name); in kdb_defcmd()
825 * kdb_exec_defcmd - Execute the set of commands associated with this
844 if (strcmp(kp->name, argv[0]) == 0) in kdb_exec_defcmd()
853 list_for_each_entry(kms, &kmp->statements, list_node) { in kdb_exec_defcmd()
858 kdb_printf("[%s]kdb> %s\n", kmp->cmd.name, kms->statement); in kdb_exec_defcmd()
859 ret = kdb_parse(kms->statement); in kdb_exec_defcmd()
906 /* allow it be "x y z" by removing the "'s - there must in parse_grep()
923 if (*(cp+len-1) == '$') { in parse_grep()
925 *(cp+len-1) = '\0'; in parse_grep()
940 * kdb_parse - Parse the command line, search the command table for a
961 * the token is altered in-place to a null-byte to terminate the
1011 if (argc >= MAXARGC - 1) { in kdb_parse()
1059 if (argv[0][0] == '-' && argv[0][1] && in kdb_parse()
1070 if (tp->minlen && (strlen(argv[0]) <= tp->minlen) && in kdb_parse()
1071 (strncmp(argv[0], tp->name, tp->minlen) == 0)) in kdb_parse()
1074 if (strcmp(argv[0], tp->name) == 0) in kdb_parse()
1085 if (strncmp(argv[0], tp->name, strlen(tp->name)) == 0) in kdb_parse()
1093 if (!kdb_check_flags(tp->flags, kdb_cmd_enabled, argc <= 1)) in kdb_parse()
1097 result = (*tp->func)(argc-1, (const char **)argv); in kdb_parse()
1102 if (tp->flags & KDB_REPEAT_WITH_ARGS) in kdb_parse()
1105 argc = tp->flags & KDB_REPEAT_NO_ARGS ? 1 : 0; in kdb_parse()
1148 cmdptr = (cmdptr + KDB_CMD_HISTORY_COUNT - 1) % in handle_ctrl_cmd()
1162 * kdb_reboot - This function implements the 'reboot' command. Reboot
1181 kdb_trap_printk--; in kdb_dumpregs()
1203 if (*(buf + len - 1) == '\n') in drop_newline()
1204 *(buf + len - 1) = '\0'; in drop_newline()
1208 * kdb_local - The main code for kdb. This routine is invoked on a
1216 * error The hardware-defined error code
1230 int diag; in kdb_local() local
1243 kdb_current, kdb_current ? kdb_current->pid : 0); in kdb_local()
1253 * If re-entering kdb after a single step in kdb_local()
1259 kdb_current, kdb_current->pid); in kdb_local()
1363 strlen(cmd_hist[cmd_head])-1) = '\0'; in kdb_local()
1366 *(cmd_cur+strlen(cmd_cur)-1) = '\0'; in kdb_local()
1380 diag = kdb_parse(cmdbuf); in kdb_local()
1381 if (diag == KDB_NOTFOUND) { in kdb_local()
1384 diag = 0; in kdb_local()
1386 if (diag == KDB_CMD_GO in kdb_local()
1387 || diag == KDB_CMD_CPU in kdb_local()
1388 || diag == KDB_CMD_SS in kdb_local()
1389 || diag == KDB_CMD_KGDB) in kdb_local()
1392 if (diag) in kdb_local()
1393 kdb_cmderror(diag); in kdb_local()
1395 KDB_DEBUG_STATE("kdb_local 9", diag); in kdb_local()
1396 return diag; in kdb_local()
1401 * kdb_print_state - Print the state data for the current processor
1415 * kdb_main_loop - After initial setup and assignment of the
1428 * error The hardware-defined error code
1497 * kdb_mdr - This function implements the guts of the 'mdr', memory
1509 while (count--) { in kdb_mdr()
1520 * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4',
1547 for (i = 0; i < num && repeat--; i++) { in kdb_md_line()
1577 cp = wc.c + 8 - bytesperword; in kdb_md_line()
1590 kdb_printf("%*s %s\n", (int)((num-i)*(2*bytesperword + 1)+1), in kdb_md_line()
1622 bytesperword = (int)(argv[0][2] - '0'); in kdb_md()
1664 int diag, nextarg = 1; in kdb_md() local
1665 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, in kdb_md()
1667 if (diag) in kdb_md()
1668 return diag; in kdb_md()
1673 diag = kdbgetularg(argv[nextarg], &val); in kdb_md()
1674 if (!diag) { in kdb_md()
1683 diag = kdbgetularg(argv[nextarg+1], &val); in kdb_md()
1684 if (!diag) in kdb_md()
1750 addr &= ~(bytesperword-1); in kdb_md()
1770 repeat -= n; in kdb_md()
1771 z = (z + num - 1) / num; in kdb_md()
1773 int s = num * (z-2); in kdb_md()
1774 kdb_printf(kdb_machreg_fmt0 "-" kdb_machreg_fmt0 in kdb_md()
1776 addr, addr + bytesperword * s - 1); in kdb_md()
1778 repeat -= s; in kdb_md()
1787 * kdb_mm - This function implements the 'mm' command.
1788 * mm address-expression new-value
1794 int diag; in kdb_mm() local
1808 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL); in kdb_mm()
1809 if (diag) in kdb_mm()
1810 return diag; in kdb_mm()
1814 diag = kdbgetaddrarg(argc, argv, &nextarg, &contents, NULL, NULL); in kdb_mm()
1815 if (diag) in kdb_mm()
1816 return diag; in kdb_mm()
1821 width = argv[0][2] ? (argv[0][2] - '0') : (KDB_WORD_SIZE); in kdb_mm()
1822 diag = kdb_putword(addr, contents, width); in kdb_mm()
1823 if (diag) in kdb_mm()
1824 return diag; in kdb_mm()
1832 * kdb_go - This function implements the 'go' command.
1833 * go [address-expression]
1838 int diag; in kdb_go() local
1850 diag = kdbgetaddrarg(argc, argv, &nextarg, in kdb_go()
1852 if (diag) in kdb_go()
1853 return diag; in kdb_go()
1858 diag = KDB_CMD_GO; in kdb_go()
1874 return diag; in kdb_go()
1878 * kdb_rd - This function implements the 'rd' command.
1945 * kdb_rm - This function implements the 'rm' (register modify) command.
1946 * rm register-name new-contents
1953 int diag; in kdb_rm() local
1970 diag = kdbgetu64arg(argv[2], ®64); in kdb_rm()
1971 if (diag) in kdb_rm()
1972 return diag; in kdb_rm()
1974 diag = kdb_check_regs(); in kdb_rm()
1975 if (diag) in kdb_rm()
1976 return diag; in kdb_rm()
1978 diag = KDB_BADREG; in kdb_rm()
1981 diag = 0; in kdb_rm()
1985 if (!diag) { in kdb_rm()
2004 return diag; in kdb_rm()
2013 * kdb_sr - This function implements the 'sr' (SYSRQ key) command
2014 * which interfaces to the soi-disant MAGIC SYSRQ functionality.
2015 * sr <magic-sysrq-code>
2027 kdb_trap_printk--; in kdb_sr()
2034 * kdb_ef - This function implements the 'regs' (display exception
2038 * regs address-expression
2044 int diag; in kdb_ef() local
2053 diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL); in kdb_ef()
2054 if (diag) in kdb_ef()
2055 return diag; in kdb_ef()
2061 * kdb_env - This function implements the 'env' command. Display the
2078 * kdb_dmesg - This function implements the 'dmesg' command to display
2084 int diag; in kdb_dmesg() local
2109 diag = kdbgetintenv("LOGGING", &logging); in kdb_dmesg()
2110 if (!diag && logging) { in kdb_dmesg()
2123 else if (adjust - lines >= n) in kdb_dmesg()
2125 "lines printed\n", n, n - adjust); in kdb_dmesg()
2129 skip = n - lines - adjust; in kdb_dmesg()
2151 skip--; in kdb_dmesg()
2154 if (!lines--) in kdb_dmesg()
2159 kdb_printf("%.*s\n", (int)len - 1, buf); in kdb_dmesg()
2180 if (!atomic_add_unless(&kdb_nmi_disabled, -1, 0)) in kdb_param_enable_nmi()
2181 return -EINVAL; in kdb_param_enable_nmi()
2192 * kdb_cpu - This function implements the 'cpu' command.
2204 for (start_cpu = -1, i = 0; i < NR_CPUS; i++) { in kdb_cpu_status()
2211 if (kdb_task_state_char(KDB_TSK(i)) == '-') in kdb_cpu_status()
2212 state = '-'; /* idle task */ in kdb_cpu_status()
2220 if (start_cpu < i-1) in kdb_cpu_status()
2221 kdb_printf("-%d", i-1); in kdb_cpu_status()
2234 if (start_cpu < i-1) in kdb_cpu_status()
2235 kdb_printf("-%d", i-1); in kdb_cpu_status()
2245 int diag; in kdb_cpu() local
2255 diag = kdbgetularg(argv[1], &cpunum); in kdb_cpu()
2256 if (diag) in kdb_cpu()
2257 return diag; in kdb_cpu()
2283 if (kdb_task_state(p, "-")) in kdb_ps_suppressed()
2292 kdb_printf("%d idle process%s (state -)%s\n", in kdb_ps_suppressed()
2314 (void *)p, p->pid, p->parent->pid, in kdb_ps1()
2317 (void *)(&p->thread), in kdb_ps1()
2319 p->comm); in kdb_ps1()
2332 * kdb_ps - This function implements the 'ps' command which shows a
2346 kdb_printf("%-*s Pid Parent [*] cpu State %-*s Command\n", in kdb_ps()
2371 * kdb_pid - This function implements the 'pid' command which switches
2379 int diag; in kdb_pid() local
2388 diag = kdbgetularg(argv[1], &val); in kdb_pid()
2389 if (diag) in kdb_pid()
2401 kdb_current_task->comm, in kdb_pid()
2402 kdb_current_task->pid); in kdb_pid()
2413 * kdb_help - This function implements the 'help' and '?' commands.
2419 kdb_printf("%-15.15s %-20.20s %s\n", "Command", "Usage", "Description"); in kdb_help()
2420 kdb_printf("-----------------------------" in kdb_help()
2421 "-----------------------------\n"); in kdb_help()
2426 if (!kdb_check_flags(kt->flags, kdb_cmd_enabled, true)) in kdb_help()
2428 if (strlen(kt->usage) > 20) in kdb_help()
2430 kdb_printf("%-15.15s %-20s%s%s\n", kt->name, in kdb_help()
2431 kt->usage, space, kt->help); in kdb_help()
2437 * kdb_kill - This function implements the 'kill' commands.
2451 if ((sig >= 0) || !valid_signal(-sig)) { in kdb_kill()
2452 kdb_printf("Invalid signal parameter.<-signal>\n"); in kdb_kill()
2455 sig = -sig; in kdb_kill()
2471 p = p->group_leader; in kdb_kill()
2486 val->uptime = div_u64(uptime, NSEC_PER_SEC); in kdb_sysinfo()
2487 val->loads[0] = avenrun[0]; in kdb_sysinfo()
2488 val->loads[1] = avenrun[1]; in kdb_sysinfo()
2489 val->loads[2] = avenrun[2]; in kdb_sysinfo()
2490 val->procs = nr_threads-1; in kdb_sysinfo()
2497 * kdb_summary - This function implements the 'summary' command.
2509 kdb_printf("version %s\n", init_uts_ns.name.version); in kdb_summary()
2531 #define K(x) ((x) << (PAGE_SHIFT - 10)) in kdb_summary()
2539 * kdb_per_cpu - This function implements the 'per_cpu' command.
2544 int cpu, diag, nextarg = 1; in kdb_per_cpu() local
2550 diag = kdbgetaddrarg(argc, argv, &nextarg, &symaddr, NULL, NULL); in kdb_per_cpu()
2551 if (diag) in kdb_per_cpu()
2552 return diag; in kdb_per_cpu()
2555 diag = kdbgetularg(argv[2], &bytesperword); in kdb_per_cpu()
2556 if (diag) in kdb_per_cpu()
2557 return diag; in kdb_per_cpu()
2565 diag = kdbgetularg(argv[3], &whichcpu); in kdb_per_cpu()
2566 if (diag) in kdb_per_cpu()
2567 return diag; in kdb_per_cpu()
2593 diag = kdb_getword(&val, addr, bytesperword); in kdb_per_cpu()
2594 if (diag) { in kdb_per_cpu()
2595 kdb_printf("%5d " kdb_bfd_vma_fmt0 " - unable to " in kdb_per_cpu()
2596 "read, diag=%d\n", cpu, addr, diag); in kdb_per_cpu()
2628 * kdb_register() - This function is used to register a kernel debugger
2640 if (strcmp(kp->name, cmd->name) == 0) { in kdb_register()
2642 cmd->name, cmd->func, cmd->help); in kdb_register()
2647 list_add_tail(&cmd->list_node, &kdb_cmds_head); in kdb_register()
2653 * kdb_register_table() - This function is used to register a kdb command
2660 while (len--) { in kdb_register_table()
2661 list_add_tail(&kp->list_node, &kdb_cmds_head); in kdb_register_table()
2667 * kdb_unregister() - This function is used to unregister a kernel debugger
2674 list_del(&cmd->list_node); in kdb_unregister()
2852 * internal command re-enters kdb_parse() and is safety
2859 .usage = "<-signal> <pid>",
2904 int i, diag; in kdb_cmd_init() local
2906 diag = kdb_parse(kdb_cmds[i]); in kdb_cmd_init()
2907 if (diag) in kdb_cmd_init()
2908 kdb_printf("kdb command %s failed, kdb diag %d\n", in kdb_cmd_init()
2909 kdb_cmds[i], diag); in kdb_cmd_init()