/* ----------------------------------------------------------------------------- * * (c) The GHC Team, 1998-2009 * * General utility functions used in the RTS. * * ---------------------------------------------------------------------------*/ #ifndef RTSUTILS_H #define RTSUTILS_H BEGIN_RTS_PRIVATE #if defined(PARALLEL_RTS) // this is definitely the wrong place; should be in includes/rts/Constants.h // FRESH value for the what_next field, marking a ghost TSO // we abuse this field to store a ptr to a GA in the parallel rts -- UNACCEPTABLE HWL HACK #define ThreadNeverDoAnything 6 /* marks a ghost TSO */ #endif /* ----------------------------------------------------------------------------- * (Checked) dynamic allocation * -------------------------------------------------------------------------- */ void initAllocator(void); void shutdownAllocator(void); void *stgMallocBytes(int n, char *msg) GNUC3_ATTRIBUTE(__malloc__); void *stgReallocBytes(void *p, int n, char *msg); void *stgCallocBytes(int n, int m, char *msg) GNUC3_ATTRIBUTE(__malloc__); void stgFree(void* p); /* ----------------------------------------------------------------------------- * Misc other utilities * -------------------------------------------------------------------------- */ void heapOverflow(void); char *time_str(void); char *ullong_format_string(ullong, char *, rtsBool); #ifdef DEBUG void heapCheckFail( void ); #endif void printRtsInfo(void); /* Alternate to raise(3) for threaded rts, for OpenBSD */ int genericRaise(int sig); int rts_isProfiled(void); #ifdef PARALLEL_RTS nat queue_len(StgTSO *t); nat run_queue_len(Capability *cap); nat print_queue(StgTSO *t); rtsBool isGhostTSO(StgTSO *t); rtsBool looksLikePE(nat n); #define LOOKS_LIKE_PE(n) (looksLikePE(n)) #endif END_RTS_PRIVATE #endif /* RTSUTILS_H */