X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Frts%2FRtsUtils.c;h=e0772044d6d42a4a51d2e40e7fc6fcf834aa0862;hb=042f30fe101324186002581902ea2989345c62c5;hp=c35d038c56668e087995fe28747483618b4aeab5;hpb=a53c1fd832bd00e4a6d995b230bb7b1f31c06a97;p=ghc-hetmet.git diff --git a/ghc/rts/RtsUtils.c b/ghc/rts/RtsUtils.c index c35d038..e077204 100644 --- a/ghc/rts/RtsUtils.c +++ b/ghc/rts/RtsUtils.c @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: RtsUtils.c,v 1.16 2000/05/24 11:01:07 simonmar Exp $ + * $Id: RtsUtils.c,v 1.24 2002/02/14 16:55:07 sof Exp $ * * (c) The GHC Team, 1998-1999 * @@ -8,7 +8,7 @@ * ---------------------------------------------------------------------------*/ /* gettimeofday isn't POSIX */ -#define NON_POSIX_SOURCE +/* #include "PosixSource.h" */ #include "Rts.h" #include "RtsTypes.h" @@ -112,11 +112,22 @@ stgReallocWords (void *p, int n, char *msg) return(stgReallocBytes(p, n * sizeof(W_), msg)); } +void * +stgCallocBytes (int n, int m, char *msg) +{ + int i; + int sz = n * m; + char* p = stgMallocBytes(sz, msg); + for (i = 0; i < sz; i++) p[i] = 0; + return p; +} + void -_stgAssert (char *filename, nat linenum) +_stgAssert (char *filename, unsigned int linenum) { - /* don't fflush(stdout); WORKAROUND bug in Linux glibc */ + fflush(stdout); fprintf(stderr, "ASSERTION FAILED: file %s, line %u\n", filename, linenum); + fflush(stderr); abort(); } @@ -213,20 +224,34 @@ time_str(void) * clean up for us. * -------------------------------------------------------------------------- */ +#if !defined(mingw32_TARGET_OS) void resetNonBlockingFd(int fd) { long fd_flags; -#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__) /* clear the non-blocking flag on this file descriptor */ fd_flags = fcntl(fd, F_GETFL); if (fd_flags & O_NONBLOCK) { fcntl(fd, F_SETFL, fd_flags & ~O_NONBLOCK); } -#endif } +void +setNonBlockingFd(int fd) +{ + long fd_flags; + + /* clear the non-blocking flag on this file descriptor */ + fd_flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, fd_flags | O_NONBLOCK); +} +#else +/* Don't support non-blocking FDs (yet) on mingw */ +void resetNonBlockingFd(int fd STG_UNUSED) {} +void setNonBlockingFd(int fd STG_UNUSED) {} +#endif + static ullong startTime = 0; /* used in a parallel setup */