Created coregrind.h, a counterpart to valgrind.h containing the internal
client requests.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3927 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 76b9e16..3ba22e2 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -37,6 +37,7 @@
 noinst_HEADERS = \
 	core.h			\
 	core_asm.h		\
+	coregrind.h		\
 	pub_core_aspacemgr.h	\
 	pub_core_debuginfo.h	\
 	pub_core_debuglog.h	\
diff --git a/coregrind/core.h b/coregrind/core.h
index 26b7c46..93d96c5 100644
--- a/coregrind/core.h
+++ b/coregrind/core.h
@@ -49,20 +49,6 @@
 
 #include "pub_core_scheduler.h"   // for types 'ThreadArchState'
 
-/* These are the internal client request codes.  The publically-visible
-   request codes are also defined in valgrind.h, and similar headers for
-   some tools. */
-
-/* Get the tool's malloc-wrapping functions */
-#define VG_USERREQ__GET_MALLOCFUNCS	    0x3030
-
-/* Internal equivalent of VALGRIND_PRINTF . */
-#define VG_USERREQ__INTERNAL_PRINTF         0x3103
-
-/* Denote the finish of __libc_freeres_wrapper(). 
-   A synonym for exit. */
-#define VG_USERREQ__LIBC_FREERES_DONE       0x3029
-
 /* ---------------------------------------------------------------------
    Exports of vg_helpers.S
    ------------------------------------------------------------------ */
diff --git a/coregrind/coregrind.h b/coregrind/coregrind.h
new file mode 100644
index 0000000..8f3b984
--- /dev/null
+++ b/coregrind/coregrind.h
@@ -0,0 +1,80 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Internal client requests.                        coregrind.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright (C) 2000-2005 Julian Seward
+      jseward@acm.org
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __COREGRIND_H
+#define __COREGRIND_H
+
+//--------------------------------------------------------------------
+// PURPOSE: This file is the counterpart to valgrind.h.  It contains
+// the client requests that are internal to Valgrind, and not to be seen
+// by client programs.
+//--------------------------------------------------------------------
+
+#include <stdarg.h>
+
+// The strange choice of values here is due to historical reasons -- there
+// used to be many more internal client requests.
+typedef
+   enum { 
+      /* Denote the finish of __libc_freeres_wrapper().  Also causes exit. */
+      VG_USERREQ__LIBC_FREERES_DONE = 0x3029,
+
+      /* Get the tool's malloc-wrapping functions */
+      VG_USERREQ__GET_MALLOCFUNCS   = 0x3030,
+
+      /* Internal equivalent of VALGRIND_PRINTF . */
+      VG_USERREQ__INTERNAL_PRINTF   = 0x3103,
+
+   } Vg_InternalClientRequest;
+
+// Function for printing from code within Valgrind, but which runs on the
+// sim'd CPU.  Must be a function rather than macros so that va_list can
+// be used.
+
+int VALGRIND_INTERNAL_PRINTF(char *format, ...);
+__attribute__((format(__printf__, 1, 2)))
+__attribute__((weak))
+int VALGRIND_INTERNAL_PRINTF(char *format, ...)
+{
+   unsigned long _qzz_res = 0;
+   va_list vargs;
+   va_start(vargs, format);
+   VALGRIND_MAGIC_SEQUENCE(_qzz_res, 0, VG_USERREQ__INTERNAL_PRINTF,
+                           (unsigned long)format, (unsigned long)vargs, 0, 0);
+   va_end(vargs);
+   return _qzz_res;
+}
+
+
+#endif   // __COREGRIND_H
+
+/*--------------------------------------------------------------------*/
+/*--- end                                                          ---*/
+/*--------------------------------------------------------------------*/
diff --git a/coregrind/m_replacemalloc/vg_replace_malloc.c b/coregrind/m_replacemalloc/vg_replace_malloc.c
index 723bcfd..be1a26f 100644
--- a/coregrind/m_replacemalloc/vg_replace_malloc.c
+++ b/coregrind/m_replacemalloc/vg_replace_malloc.c
@@ -45,6 +45,8 @@
    ------------------------------------------------------------------ */
 
 #include "valgrind.h"               // for VALGRIND_NON_SIMD_CALL[12]
+#include "coregrind.h"              // for VALGRIND_INTERNAL_PRINTF
+
 #include "core.h"
 #include "pub_core_debuginfo.h"     // needed for pub_core_redir.h :(
 #include "pub_core_mallocfree.h"    // for VG_MIN_MALLOC_SZB, VG_AR_CLIENT
@@ -81,29 +83,9 @@
 /* Startup hook - called as init section */
 static void init(void) __attribute__((constructor));
 
-// Functions for printing from code within Valgrind, but which runs on the
-// sim'd CPU.  They must be functions rather than macros so that va_list can
-// be used.
-// Nb: at one point, these were used by multiple files that run on the sim'd
-// CPU, and so were *defined* in core.h with the 'weak' attribute.  That was
-// pretty ugly.  It's much better if this is the only file that needs them.
-
-__attribute__((format(__printf__, 1, 2)))
-static int
-internal_printf(char *format, ...)
-{
-   UWord _qzz_res = 0;
-   va_list vargs;
-   va_start(vargs, format);
-   VALGRIND_MAGIC_SEQUENCE(_qzz_res, 0, VG_USERREQ__INTERNAL_PRINTF,
-                           (UWord)format, (UWord)vargs, 0, 0);
-   va_end(vargs);
-   return _qzz_res;
-}
-
 #define MALLOC_TRACE(format, args...)  \
    if (info.clo_trace_malloc)          \
-      internal_printf(format, ## args )
+      VALGRIND_INTERNAL_PRINTF(format, ## args )
 
 /* Below are new versions of malloc, __builtin_new, free, 
    __builtin_delete, calloc, realloc, memalign, and friends.
@@ -312,8 +294,7 @@
          return VG_REPLACE_FUNCTION(libcZdsoZd6,malloc) (new_size); \
       if (new_size <= 0) { \
          VG_REPLACE_FUNCTION(libcZdsoZd6,free)(ptrV); \
-         if (info.clo_trace_malloc) \
-            internal_printf(" = 0" ); \
+         MALLOC_TRACE(" = 0"); \
          return NULL; \
       } \
       if (!init_done) init(); \
diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c
index c7b6e91..1d149e5 100644
--- a/coregrind/m_scheduler/scheduler.c
+++ b/coregrind/m_scheduler/scheduler.c
@@ -53,13 +53,14 @@
 
    This file is almost entirely OS-independent.  The details of how
    the OS handles threading and signalling are abstracted away and
-   implemented elsewhere.
+   implemented elsewhere.  [Some of the functions have worked their
+   way back for the moment, until we do an OS port in earnest...]
  */
 
-#include "valgrind.h" /* for VG_USERREQ__RUNNING_ON_VALGRIND and
-                             VG_USERREQ__DISCARD_TRANSLATIONS, and others */
-#include "core.h"
+#include "valgrind.h"   // for VG_USERREQ__*
+#include "coregrind.h"  // for VG_USERREQ__*
 
+#include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_dispatch.h"
 #include "pub_core_errormgr.h"
diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
index e3dc68b..11c1507 100644
--- a/coregrind/vg_preloaded.c
+++ b/coregrind/vg_preloaded.c
@@ -43,6 +43,8 @@
    ------------------------------------------------------------------ */
 
 #include "valgrind.h"
+#include "coregrind.h"
+
 #include "core.h"
 #include "pub_core_debuginfo.h"     // needed for pub_core_redir.h :(
 #include "pub_core_redir.h"