1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _MDB_WHATIS_IMPL_H 27 #define _MDB_WHATIS_IMPL_H 28 29 #include <mdb/mdb_module.h> 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 #define WHATIS_MS(c, s) (((uint64_t)(c)) << (s)) 36 37 #define WHATIS_MAGIC /* whatis 0x2009 */ \ 38 (WHATIS_MS('w', 56) | WHATIS_MS('h', 48) | WHATIS_MS('a', 40) | \ 39 WHATIS_MS('t', 32) | WHATIS_MS('i', 24) | WHATIS_MS('s', 16) | \ 40 WHATIS_MS(0x2009, 0)) 41 42 struct mdb_whatis { 43 uint64_t w_magic; /* just for sanity */ 44 uintptr_t *w_addrs; /* w_naddr sorted addresses */ 45 char *w_addrfound; /* array of w_naddr "found" flags */ 46 size_t w_naddrs; 47 size_t w_match_next; /* next match offset, or 0 if no active match */ 48 uintptr_t w_match_base; /* base of current match */ 49 size_t w_match_size; /* size of current match */ 50 size_t w_found; /* count of set entries in w_addrfound */ 51 uint_t w_flags; /* see WHATIS_* for details */ 52 uint8_t w_done; /* set when no more processing is needed */ 53 }; 54 55 #define WHATIS_PUBLIC 0x0ffff 56 57 /* flags which aren't part of the public interface */ 58 #define WHATIS_ALL 0x10000 /* -a, report all matches */ 59 60 #define WHATIS_PRIO_MIN 99 61 62 extern int cmd_whatis(uintptr_t, uint_t, int, const mdb_arg_t *); 63 extern void whatis_help(void); 64 65 /* built-in callbacks */ 66 extern int whatis_run_mappings(struct mdb_whatis *, void *); 67 68 /* callback at module unload time */ 69 extern void mdb_whatis_unregister_module(mdb_module_t *); 70 71 #ifdef __cplusplus 72 } 73 #endif 74 75 #endif /* _MDB_WHATIS_IMPL_H */ 76