fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER START
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * The contents of this file are subject to the terms of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Common Development and Distribution License (the "License").
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You may not use this file except in compliance with the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * or http://www.opensolaris.org/os/licensing.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the License for the specific language governing permissions
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and limitations under the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When distributing Covered Code, include this CDDL HEADER in each
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * If applicable, add the following below this CDDL HEADER, with the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * fields enclosed by brackets "[]" replaced with your own identifying
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * information: Portions Copyright [yyyy] [name of copyright owner]
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER END
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
b8fac8e162eda7e98db13dfa3e439e43f90f41d9jhaslam * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Use is subject to license terms.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#pragma ident "%Z%%M% %I% %E% SMI"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <dtrace.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Not currently providing name equivalents of dtrace_errno, only the error
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * message provided by libdtrace (which cannot be localized). The reason is
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * that the EDT_ enumeration is still private. The DTRACEFLT_ values are
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * public, however, so the API provides string equivalents for runtime faults
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * encountered in the error handler (see dtrace_handle_err()). The API provides
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * the error as a string rather than an integer so that user applications do not
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * break if the integer values change.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeconst char *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_get_fault_name(int fault)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee const char *name = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee switch (fault) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_BADADDR:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_BADADDR";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_BADALIGN:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_BADALIGN";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_ILLOP:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_ILLOP";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_DIVZERO:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_DIVZERO";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_NOSCRATCH:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_NOSCRATCH";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_KPRIV:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_KPRIV";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_UPRIV:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_UPRIV";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_TUPOFLOW:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_TUPOFLOW";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
b8fac8e162eda7e98db13dfa3e439e43f90f41d9jhaslam case DTRACEFLT_BADSTACK:
b8fac8e162eda7e98db13dfa3e439e43f90f41d9jhaslam name = "DTRACEFLT_BADSTACK";
b8fac8e162eda7e98db13dfa3e439e43f90f41d9jhaslam break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTRACEFLT_LIBRARY:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = "DTRACEFLT_LIBRARY";
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee default:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee name = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (name);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}