projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add HsCoreTy to HsType
[ghc-hetmet.git]
/
rts
/
Hpc.c
diff --git
a/rts/Hpc.c
b/rts/Hpc.c
index
1624079
..
00b5a3d
100644
(file)
--- a/
rts/Hpc.c
+++ b/
rts/Hpc.c
@@
-2,16
+2,16
@@
* (c)2006 Galois Connections, Inc.
*/
* (c)2006 Galois Connections, Inc.
*/
+#include "PosixSource.h"
+#include "Rts.h"
+
+#include "Trace.h"
+
#include <stdio.h>
#include <ctype.h>
#include <stdio.h>
#include <ctype.h>
-#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <string.h>
#include <assert.h>
-#include "Rts.h"
-#include "Hpc.h"
-#include "Trace.h"
-
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
@@
-36,20
+36,14
@@
static pid_t hpc_pid = 0; // pid of this process at hpc-boot time.
static FILE *tixFile; // file being read/written
static int tix_ch; // current char
static FILE *tixFile; // file being read/written
static int tix_ch; // current char
-// This is a cruel hack, we should completely redesign the format specifier handling in the RTS.
-#if SIZEOF_LONG == 8
-#define PRIuWORD64 "lu"
-#else
-#define PRIuWORD64 "llu"
-#endif
-
HpcModuleInfo *modules = 0;
HpcModuleInfo *nextModule = 0;
int totalTixes = 0; // total number of tix boxes.
static char *tixFilename;
HpcModuleInfo *modules = 0;
HpcModuleInfo *nextModule = 0;
int totalTixes = 0; // total number of tix boxes.
static char *tixFilename;
-static void failure(char *msg) {
+static void GNU_ATTRIBUTE(__noreturn__)
+failure(char *msg) {
debugTrace(DEBUG_hpc,"hpc failure: %s\n",msg);
fprintf(stderr,"Hpc failure: %s\n",msg);
if (tixFilename) {
debugTrace(DEBUG_hpc,"hpc failure: %s\n",msg);
fprintf(stderr,"Hpc failure: %s\n",msg);
if (tixFilename) {
@@
-174,14
+168,20
@@
readTix(void) {
static void hpc_init(void) {
char *hpc_tixdir;
static void hpc_init(void) {
char *hpc_tixdir;
+ char *hpc_tixfile;
if (hpc_inited != 0) {
return;
}
hpc_inited = 1;
hpc_pid = getpid();
hpc_tixdir = getenv("HPCTIXDIR");
if (hpc_inited != 0) {
return;
}
hpc_inited = 1;
hpc_pid = getpid();
hpc_tixdir = getenv("HPCTIXDIR");
+ hpc_tixfile = getenv("HPCTIXFILE");
- if (hpc_tixdir != NULL) {
+ /* XXX Check results of mallocs/strdups, and check we are requesting
+ enough bytes */
+ if (hpc_tixfile != NULL) {
+ tixFilename = strdup(hpc_tixfile);
+ } else if (hpc_tixdir != NULL) {
/* Make sure the directory is present;
* conditional code for mkdir lifted from lndir.c
*/
/* Make sure the directory is present;
* conditional code for mkdir lifted from lndir.c
*/
@@
-193,7
+193,7
@@
static void hpc_init(void) {
/* Then, try open the file
*/
tixFilename = (char *) malloc(strlen(hpc_tixdir) + strlen(prog_name) + 12);
/* Then, try open the file
*/
tixFilename = (char *) malloc(strlen(hpc_tixdir) + strlen(prog_name) + 12);
- sprintf(tixFilename,"%s/%s-%d.tix",hpc_tixdir,prog_name,hpc_pid);
+ sprintf(tixFilename,"%s/%s-%d.tix",hpc_tixdir,prog_name,(int)hpc_pid);
} else {
tixFilename = (char *) malloc(strlen(prog_name) + 6);
sprintf(tixFilename, "%s.tix", prog_name);
} else {
tixFilename = (char *) malloc(strlen(prog_name) + 6);
sprintf(tixFilename, "%s.tix", prog_name);
@@
-326,7
+326,7
@@
writeTix(FILE *f) {
}
if (tmpModule->tixArr) {
}
if (tmpModule->tixArr) {
- fprintf(f,"%" PRIuWORD64,tmpModule->tixArr[i]);
+ fprintf(f,"%" FMT_Word64,tmpModule->tixArr[i]);
} else {
fprintf(f,"0");
}
} else {
fprintf(f,"0");
}