Print this page
re #11789 rb4330 Update mdb v8 module from Joyent
Re #9567, Rb 2860. V8 support for mdb
@@ -19,12 +19,12 @@
* CDDL HEADER END
*/
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 Joyent, Inc. All rights reserved.
* Copyright (c) 2013 by Delphix. All rights reserved.
- * Copyright (c) 2012 Joyent, Inc. All rights reserved.
*/
#ifndef _MDB_MODAPI_H
#define _MDB_MODAPI_H
@@ -64,11 +64,17 @@
#ifndef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif
+#ifdef MDB_API_VERSION
+#if (MDB_API_VERSION != 3 && MDB_API_VERSION != 4)
+#error "Only modapi versions three and four are supported."
+#endif
+#else /* !MDB_API_VERISON */
#define MDB_API_VERSION 4 /* Current API version number */
+#endif /* MDB_API_VERISON */
/*
* Debugger command function flags:
*/
#define DCMD_ADDRSPEC 0x01 /* Dcmd invoked with explicit address */
@@ -78,15 +84,10 @@
#define DCMD_PIPE_OUT 0x10 /* Dcmd invoked with output set to pipe */
#define DCMD_HDRSPEC(fl) (((fl) & DCMD_LOOPFIRST) || !((fl) & DCMD_LOOP))
/*
- * Debugger tab command function flags
- */
-#define DCMD_TAB_SPACE 0x01 /* Tab cb invoked with trailing space */
-
-/*
* Debugger command function return values:
*/
#define DCMD_OK 0 /* Dcmd completed successfully */
#define DCMD_ERR 1 /* Dcmd failed due to an error */
#define DCMD_USAGE 2 /* Dcmd usage error; abort and print usage */
@@ -111,22 +112,32 @@
uintmax_t a_val;
char a_char;
} a_un;
} mdb_arg_t;
+#if (MDB_API_VERSION >= 4)
+/*
+ * Debugger tab command function flags
+ */
+#define DCMD_TAB_SPACE 0x01 /* Tab cb invoked with trailing space */
+
typedef struct mdb_tab_cookie mdb_tab_cookie_t;
-typedef int mdb_dcmd_f(uintptr_t, uint_t, int, const mdb_arg_t *);
typedef int mdb_dcmd_tab_f(mdb_tab_cookie_t *, uint_t, int,
const mdb_arg_t *);
+#endif /* MDB_API_VERSION >= 4 */
+typedef int mdb_dcmd_f(uintptr_t, uint_t, int, const mdb_arg_t *);
+
typedef struct mdb_dcmd {
const char *dc_name; /* Command name */
const char *dc_usage; /* Usage message (optional) */
const char *dc_descr; /* Description */
mdb_dcmd_f *dc_funcp; /* Command function */
void (*dc_help)(void); /* Command help function (or NULL) */
+#if (MDB_API_VERSION >= 4)
mdb_dcmd_tab_f *dc_tabp; /* Tab completion function */
+#endif
} mdb_dcmd_t;
#define WALK_ERR -1 /* Walk fatal error (terminate walk) */
#define WALK_NEXT 0 /* Walk should continue to next step */
#define WALK_DONE 1 /* Walk is complete (no errors) */
@@ -339,10 +350,11 @@
typedef void (*mdb_callback_f)(void *);
extern void *mdb_callback_add(int, mdb_callback_f, void *);
extern void mdb_callback_remove(void *);
+#if (MDB_API_VERSION >= 4)
#define MDB_TABC_ALL_TYPES 0x1 /* Include array types in type output */
#define MDB_TABC_MEMBERS 0x2 /* Tab comp. types with members */
#define MDB_TABC_NOPOINT 0x4 /* Tab comp. everything but pointers */
#define MDB_TABC_NOARRAY 0x8 /* Don't include array data in output */
@@ -363,10 +375,11 @@
/*
* Tab completion functions for common signatures.
*/
extern int mdb_tab_complete_mt(mdb_tab_cookie_t *, uint_t, int,
const mdb_arg_t *);
+#endif /* MDB_API_VERSION >= 4 */
extern size_t strlcat(char *, const char *, size_t);
extern char *strcat(char *, const char *);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);