X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=include%2FHsBase.h;h=0fcc6168b2fd59a656d8d9e13a17bad3a9bbb1b3;hb=9a770bbea938e9469706eb56028de08335b3e808;hp=debf74e74d1cd574d2c3920de4bbc20fa8a9ac72;hpb=91ad6d44f7b29d2ede170e3106042b36c9904da1;p=ghc-base.git diff --git a/include/HsBase.h b/include/HsBase.h index debf74e..0fcc616 100644 --- a/include/HsBase.h +++ b/include/HsBase.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: HsBase.h,v 1.1 2002/02/07 11:13:30 simonmar Exp $ + * $Id: HsBase.h,v 1.17 2002/10/08 08:03:02 wolfgang Exp $ * * (c) The University of Glasgow 2001-2002 * @@ -15,6 +15,7 @@ #include #include +#include #ifdef HAVE_SYS_TYPES_H #include @@ -46,6 +47,9 @@ #ifdef HAVE_UTIME_H #include #endif +#ifdef HAVE_SYS_UTSNAME_H +#include +#endif #if defined(HAVE_GETTIMEOFDAY) # ifdef HAVE_SYS_TIME_H # include @@ -68,9 +72,12 @@ #ifdef HAVE_SYS_TIMES_H #include #endif -#ifdef HAVE_WINSOCK_H +#if defined(HAVE_WINSOCK_H) && defined(__MINGW32__) #include #endif +#ifdef HAVE_LIMITS_H +#include +#endif #if !defined(mingw32_TARGET_OS) && !defined(irix_TARGET_OS) # if defined(HAVE_SYS_RESOURCE_H) @@ -93,11 +100,11 @@ #endif #include "lockFile.h" #include "dirUtils.h" -#include "errUtils.h" -#ifdef _WIN32 +#if defined(__MINGW32__) #include #include +#include "timeUtils.h" #endif /* in ghc_errno.c */ @@ -106,9 +113,69 @@ int *ghcErrno(void); /* in system.c */ HsInt systemCmd(HsAddr cmd); +/* in rawSystem.c */ +HsInt rawSystemCmd(HsAddr cmd); + /* in inputReady.c */ int inputReady(int fd, int msecs, int isSock); +/* in writeError.c */ +void writeErrString__(HsAddr msg_hdr, HsAddr msg, HsInt len); + +/* ----------------------------------------------------------------------------- + 64-bit operations, defined in longlong.c + -------------------------------------------------------------------------- */ + +#ifdef SUPPORT_LONG_LONGS + +StgInt stg_gtWord64 (StgWord64, StgWord64); +StgInt stg_geWord64 (StgWord64, StgWord64); +StgInt stg_eqWord64 (StgWord64, StgWord64); +StgInt stg_neWord64 (StgWord64, StgWord64); +StgInt stg_ltWord64 (StgWord64, StgWord64); +StgInt stg_leWord64 (StgWord64, StgWord64); + +StgInt stg_gtInt64 (StgInt64, StgInt64); +StgInt stg_geInt64 (StgInt64, StgInt64); +StgInt stg_eqInt64 (StgInt64, StgInt64); +StgInt stg_neInt64 (StgInt64, StgInt64); +StgInt stg_ltInt64 (StgInt64, StgInt64); +StgInt stg_leInt64 (StgInt64, StgInt64); + +StgWord64 stg_remWord64 (StgWord64, StgWord64); +StgWord64 stg_quotWord64 (StgWord64, StgWord64); + +StgInt64 stg_remInt64 (StgInt64, StgInt64); +StgInt64 stg_quotInt64 (StgInt64, StgInt64); +StgInt64 stg_negateInt64 (StgInt64); +StgInt64 stg_plusInt64 (StgInt64, StgInt64); +StgInt64 stg_minusInt64 (StgInt64, StgInt64); +StgInt64 stg_timesInt64 (StgInt64, StgInt64); + +StgWord64 stg_and64 (StgWord64, StgWord64); +StgWord64 stg_or64 (StgWord64, StgWord64); +StgWord64 stg_xor64 (StgWord64, StgWord64); +StgWord64 stg_not64 (StgWord64); + +StgWord64 stg_uncheckedShiftL64 (StgWord64, StgInt); +StgWord64 stg_uncheckedShiftRL64 (StgWord64, StgInt); +StgInt64 stg_uncheckedIShiftL64 (StgInt64, StgInt); +StgInt64 stg_uncheckedIShiftRL64 (StgInt64, StgInt); +StgInt64 stg_uncheckedIShiftRA64 (StgInt64, StgInt); + +StgInt64 stg_intToInt64 (StgInt); +StgInt stg_int64ToInt (StgInt64); +StgWord64 stg_int64ToWord64 (StgInt64); + +StgWord64 stg_wordToWord64 (StgWord); +StgWord stg_word64ToWord (StgWord64); +StgInt64 stg_word64ToInt64 (StgWord64); + +StgInt64 stg_integerToInt64 (StgInt sa, StgByteArray /* Really: mp_limb_t* */ da); +StgWord64 stg_integerToWord64 (StgInt sa, StgByteArray /* Really: mp_limb_t* */ da); + +#endif /* SUPPORT_LONG_LONGS */ + /* ----------------------------------------------------------------------------- INLINE functions. @@ -131,9 +198,25 @@ INLINE int __hscore_s_issock(m) { return S_ISSOCK(m); } #endif #ifndef mingw32_TARGET_OS -INLINE void +INLINE int __hscore_sigemptyset( sigset_t *set ) -{ sigemptyset(set); } +{ return sigemptyset(set); } + +INLINE int +__hscore_sigfillset( sigset_t *set ) +{ return sigfillset(set); } + +INLINE int +__hscore_sigaddset( sigset_t * set, int s ) +{ return sigaddset(set,s); } + +INLINE int +__hscore_sigdelset( sigset_t * set, int s ) +{ return sigdelset(set,s); } + +INLINE int +__hscore_sigismember( sigset_t * set, int s ) +{ return sigismember(set,s); } #endif INLINE void * @@ -281,7 +364,7 @@ __hscore_seek_end( void ) INLINE HsInt __hscore_setmode( HsInt fd, HsBool toBin ) { -#ifdef _WIN32 +#if defined(__MINGW32__) return setmode(fd,(toBin == HS_BOOL_TRUE) ? _O_BINARY : _O_TEXT); #else return 0; @@ -292,7 +375,7 @@ INLINE HsInt __hscore_PrelHandle_write( HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz ) { -#ifdef _WIN32 +#if defined(__MINGW32__) if (isSock) { return send(fd,ptr + off, sz, 0); } @@ -304,7 +387,7 @@ INLINE HsInt __hscore_PrelHandle_read( HsInt fd, HsBool isSock, HsAddr ptr, HsInt off, int sz ) { -#ifdef _WIN32 +#if defined(__MINGW32__) if (isSock) { return recv(fd,ptr + off, sz, 0); } @@ -313,7 +396,7 @@ __hscore_PrelHandle_read( HsInt fd, HsBool isSock, HsAddr ptr, } -#ifdef mingw32_TARGET_OS +#if defined(__MINGW32__) INLINE long * __hscore_Time_ghcTimezone( void ) { return &_timezone; } @@ -324,7 +407,7 @@ __hscore_Time_ghcTzname( void ) { return _tzname; } INLINE HsInt __hscore_mkdir( HsAddr pathName, HsInt mode ) { -#if defined(mingw32_TARGET_OS) +#if defined(__MINGW32__) return mkdir(pathName); #else return mkdir(pathName,mode); @@ -517,5 +600,44 @@ __hscore_f_setfl( void ) #endif } +INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); } + +#ifndef mingw32_TARGET_OS +INLINE int __hsposix_SIGABRT() { return SIGABRT; } +INLINE int __hsposix_SIGALRM() { return SIGALRM; } +INLINE int __hsposix_SIGBUS() { return SIGBUS; } +INLINE int __hsposix_SIGCHLD() { return SIGCHLD; } +INLINE int __hsposix_SIGCONT() { return SIGCONT; } +INLINE int __hsposix_SIGFPE() { return SIGFPE; } +INLINE int __hsposix_SIGHUP() { return SIGHUP; } +INLINE int __hsposix_SIGILL() { return SIGILL; } +INLINE int __hsposix_SIGINT() { return SIGINT; } +INLINE int __hsposix_SIGKILL() { return SIGKILL; } +INLINE int __hsposix_SIGPIPE() { return SIGPIPE; } +INLINE int __hsposix_SIGQUIT() { return SIGQUIT; } +INLINE int __hsposix_SIGSEGV() { return SIGSEGV; } +INLINE int __hsposix_SIGSTOP() { return SIGSTOP; } +INLINE int __hsposix_SIGTERM() { return SIGTERM; } +INLINE int __hsposix_SIGTSTP() { return SIGTSTP; } +INLINE int __hsposix_SIGTTIN() { return SIGTTIN; } +INLINE int __hsposix_SIGTTOU() { return SIGTTOU; } +INLINE int __hsposix_SIGUSR1() { return SIGUSR1; } +INLINE int __hsposix_SIGUSR2() { return SIGUSR2; } +#if HAVE_SIGPOLL +INLINE int __hsposix_SIGPOLL() { return SIGPOLL; } +#endif +INLINE int __hsposix_SIGPROF() { return SIGPROF; } +INLINE int __hsposix_SIGSYS() { return SIGSYS; } +INLINE int __hsposix_SIGTRAP() { return SIGTRAP; } +INLINE int __hsposix_SIGURG() { return SIGURG; } +INLINE int __hsposix_SIGVTALRM() { return SIGVTALRM; } +INLINE int __hsposix_SIGXCPU() { return SIGXCPU; } +INLINE int __hsposix_SIGXFSZ() { return SIGXFSZ; } + +INLINE int __hsposix_SIG_BLOCK() { return SIG_BLOCK; } +INLINE int __hsposix_SIG_UNBLOCK() { return SIG_SETMASK; } +INLINE int __hsposix_SIG_SETMASK() { return SIG_UNBLOCK; } +#endif // mingw32_TARGET_OS + #endif