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);