mdb_whatis_impl.h revision 4a1c24318fe7c9bdae38ce58a2e4624597d297e2
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _MDB_WHATIS_IMPL_H
#define _MDB_WHATIS_IMPL_H
#include <mdb/mdb_module.h>
#ifdef __cplusplus
extern "C" {
#endif
#define WHATIS_MS(c, s) (((uint64_t)(c)) << (s))
#define WHATIS_MAGIC /* whatis 0x2009 */ \
(WHATIS_MS('w', 56) | WHATIS_MS('h', 48) | WHATIS_MS('a', 40) | \
WHATIS_MS('t', 32) | WHATIS_MS('i', 24) | WHATIS_MS('s', 16) | \
WHATIS_MS(0x2009, 0))
struct mdb_whatis {
uint64_t w_magic; /* just for sanity */
uintptr_t *w_addrs; /* w_naddr sorted addresses */
char *w_addrfound; /* array of w_naddr "found" flags */
size_t w_naddrs;
size_t w_match_next; /* next match offset, or 0 if no active match */
uintptr_t w_match_base; /* base of current match */
size_t w_match_size; /* size of current match */
size_t w_found; /* count of set entries in w_addrfound */
uint_t w_flags; /* see WHATIS_* for details */
uint8_t w_done; /* set when no more processing is needed */
};
#define WHATIS_PUBLIC 0x0ffff
/* flags which aren't part of the public interface */
#define WHATIS_ALL 0x10000 /* -a, report all matches */
#define WHATIS_PRIO_MIN 99
extern int cmd_whatis(uintptr_t, uint_t, int, const mdb_arg_t *);
extern void whatis_help(void);
/* built-in callbacks */
extern int whatis_run_mappings(struct mdb_whatis *, void *);
/* callback at module unload time */
extern void mdb_whatis_unregister_module(mdb_module_t *);
#ifdef __cplusplus
}
#endif
#endif /* _MDB_WHATIS_IMPL_H */