X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FRtsUtils.c;h=0e302a79aaa9e0cac6cc6ba182f3dc16b3d0eada;hb=373fabef9643b4e1d0284fe10d5a3c3308fd4acb;hp=c35d038c56668e087995fe28747483618b4aeab5;hpb=a53c1fd832bd00e4a6d995b230bb7b1f31c06a97;p=ghc-hetmet.git diff --git a/ghc/rts/RtsUtils.c b/ghc/rts/RtsUtils.c index c35d038..0e302a7 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.23 2001/10/31 10:30:29 simonmar 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(); } @@ -218,7 +229,7 @@ resetNonBlockingFd(int fd) { long fd_flags; -#if !defined(_WIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__) +#if !defined(mingw32_TARGET_OS) /* clear the non-blocking flag on this file descriptor */ fd_flags = fcntl(fd, F_GETFL); if (fd_flags & O_NONBLOCK) { @@ -227,6 +238,18 @@ resetNonBlockingFd(int fd) #endif } +void +setNonBlockingFd(int fd) +{ + long fd_flags; + +#if !defined(mingw32_TARGET_OS) + /* clear the non-blocking flag on this file descriptor */ + fd_flags = fcntl(fd, F_GETFL); + fcntl(fd, F_SETFL, fd_flags | O_NONBLOCK); +#endif +} + static ullong startTime = 0; /* used in a parallel setup */