/* -----------------------------------------------------------------------------
- * $Id: RtsFlags.c,v 1.64 2003/01/23 12:13:12 simonmar Exp $
+ * $Id: RtsFlags.c,v 1.69 2003/08/22 22:24:13 sof Exp $
*
* (c) The AQUA Project, Glasgow University, 1994-1997
* (c) The GHC Team, 1998-1999
#include "RtsFlags.h"
#include "RtsUtils.h"
#include "BlockAlloc.h"
-#include "Itimer.h" /* CS_MIN_MILLISECS */
+#include "Timer.h" /* CS_MIN_MILLISECS */
#include "Profiling.h"
-#if defined(PROFILING)
-#include "Itimer.h"
-#endif
-
#ifdef HAVE_CTYPE_H
#include <ctype.h>
#endif
/*
* Split argument lists
*/
-int prog_argc; /* an "int" so as to match normal "argc" */
+int prog_argc = 0; /* an "int" so as to match normal "argc" */
char **prog_argv = NULL;
-int rts_argc; /* ditto */
+char *prog_name = NULL; /* 'basename' of prog_argv[0] */
+int rts_argc = 0; /* ditto */
char *rts_argv[MAX_RTS_ARGS];
//@node Constants, Static function decls, Includes
#define RTS 1
#define PGM 0
-char *debug_opts_prefix[] = {
- "_-", /* scheduler */
- "_.", /* interpreter */
- "_,", /* codegen */
- "_;", /* weak */
- "_~", /* gccafs */
- "_@", /* gc */
- "_#", /* block */
- "_&", /* sanity */
- "_:", /* stable */
- "_!", /* prof */
- "_=", /* gran */
- "_=" /* par */
- "_*" /* linker */
-};
-
#if defined(GRAN)
-char *gran_debug_opts_strs[] = {
+static char *gran_debug_opts_strs[] = {
"DEBUG (-bDe, -bD1): event_trace; printing event trace.\n",
"DEBUG (-bDE, -bD2): event_stats; printing event statistics.\n",
"DEBUG (-bDb, -bD4): bq; check blocking queues\n",
};
/* one character codes for the available debug options */
-char gran_debug_opts_flags[] = {
+static char gran_debug_opts_flags[] = {
'e', 'E', 'b', 'G', 'q', 'f', 'r', 'F', 'u', 'S', ':', 'o', 'z', 'P', 't'
};
-/* prefix strings printed with the debug messages of the corresponding type */
-char *gran_debug_opts_prefix[] = {
- "", /* event_trace */
- "", /* event_stats */
- "##", /* bq */
- "**", /* pack */
- "^^", /* checkSparkQ */
- "==", /* thunkStealing */
- "^^", /* randomSteal */
- "+-", /* findWork */
- "", /* unused */
- "++", /* pri */
- "::", /* checkLight */
- "##", /* sortedQ */
- "", /* blockOnFetch */
- "", /* packBuffer */
- "" /* blockOnFetch_sanity */
-};
-
#elif defined(PAR)
-char *par_debug_opts_strs[] = {
+static char *par_debug_opts_strs[] = {
"DEBUG (-qDv, -qD1): verbose; be generally verbose with parallel related stuff.\n",
"DEBUG (-qDq, -qD2): bq; print blocking queues.\n",
"DEBUG (-qDs, -qD4): schedule; scheduling of parallel threads.\n",
};
/* one character codes for the available debug options */
-char par_debug_opts_flags[] = {
+static char par_debug_opts_flags[] = {
'v', 'q', 's', 'e', 'r', 'w', 'F', 'f', 'l', 'o', 'p', 'z'
};
-/* prefix strings printed with the debug messages of the corresponding type */
-char *par_debug_opts_prefix[] = {
- " ", /* verbose */
- "##", /* bq */
- "--", /* schedule */
- "!!", /* free */
- "[]", /* resume */
- ";;", /* weight */
- "%%", /* fetch */
- //",,", /* ack */
- "$$", /* fish */
- "", /* tables */
- "**", /* packet */
- "**" /* pack */
- ":(" /* paranoia */
-};
-
#endif /* PAR */
//@node Static function decls, Command-line option parsing routines, Constants
if (c1 == c2) { break; }
if (*rts_argc < MAX_RTS_ARGS-1) {
- s = malloc(c2-c1+1);
+ s = stgMallocBytes(c2-c1+1, "RtsFlags.c:splitRtsFlags()");
strncpy(s, c1, c2-c1);
s[c2-c1] = '\0';
rts_argv[(*rts_argc)++] = s;
char *last_slash;
/* Remove directory from argv[0] -- default files in current directory */
-
- if ((last_slash = (char *) strrchr(argv[0], '/')) != NULL)
- strcpy(argv[0], last_slash+1);
+ if ((last_slash = (char *) strrchr(argv[0], '/')) != NULL) {
+ prog_name = last_slash+1;
+ } else {
+ prog_name = argv[0];
+ }
total_arg = *argc;
arg = 1;