From: sewardj Date: Thu, 20 Dec 2001 17:38:41 +0000 (+0000) Subject: [project @ 2001-12-20 17:38:40 by sewardj] X-Git-Tag: Approximately_9120_patches~356 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;ds=sidebyside;h=fd37eea431c38e8adcf90de05f8c74293e891aa5;p=ghc-hetmet.git [project @ 2001-12-20 17:38:40 by sewardj] Move some small inline-in-C functions out of PrelPosix.hsc and into the supporting cbits sources, where they belong. Following this change, can you now compile the entire Prelude on x86-linux with the native code generator, and get something which actually works properly. --- diff --git a/ghc/lib/std/PrelPosix.hsc b/ghc/lib/std/PrelPosix.hsc index c18124d..b558b47 100644 --- a/ghc/lib/std/PrelPosix.hsc +++ b/ghc/lib/std/PrelPosix.hsc @@ -1,4 +1,4 @@ -{-# OPTIONS -fno-implicit-prelude #-} +{-# OPTIONS -fno-implicit-prelude -#include "PrelIOUtils.h" #-} -- --------------------------------------------------------------------------- -- @@ -101,23 +101,13 @@ ioe_unknownfiletype = IOError Nothing UnsupportedOperation "fdType" "unknown file type" Nothing foreign import "s_isreg_PrelPosix_wrap" unsafe s_isreg :: CMode -> Bool -#def inline int s_isreg_PrelPosix_wrap(m) { return S_ISREG(m); } - foreign import "s_isdir_PrelPosix_wrap" unsafe s_isdir :: CMode -> Bool -#def inline int s_isdir_PrelPosix_wrap(m) { return S_ISDIR(m); } - foreign import "s_isfifo_PrelPosix_wrap" unsafe s_isfifo :: CMode -> Bool -#def inline int s_isfifo_PrelPosix_wrap(m) { return S_ISFIFO(m); } - foreign import "s_ischr_PrelPosix_wrap" unsafe s_ischr :: CMode -> Bool -#def inline int s_ischr_PrelPosix_wrap(m) { return S_ISCHR(m); } - foreign import "s_isblk_PrelPosix_wrap" unsafe s_isblk :: CMode -> Bool -#def inline int s_isblk_PrelPosix_wrap(m) { return S_ISBLK(m); } #ifndef mingw32_TARGET_OS foreign import "s_issock_PrelPosix_wrap" unsafe s_issock :: CMode -> Bool -#def inline int s_issock_PrelPosix_wrap(m) { return S_ISSOCK(m); } #else s_issock :: CMode -> Bool s_issock cmode = False @@ -312,7 +302,6 @@ foreign import "fork" unsafe foreign import "sigemptyset_PrelPosix_wrap" unsafe c_sigemptyset :: Ptr CSigset -> IO () -#def inline void sigemptyset_PrelPosix_wrap(sigset_t *set) { sigemptyset(set); } foreign import "sigaddset" unsafe c_sigaddset :: Ptr CSigset -> CInt -> IO () diff --git a/ghc/lib/std/cbits/PrelIOUtils.c b/ghc/lib/std/cbits/PrelIOUtils.c index 8f7b8c6..7699277 100644 --- a/ghc/lib/std/cbits/PrelIOUtils.c +++ b/ghc/lib/std/cbits/PrelIOUtils.c @@ -91,3 +91,13 @@ void *prel_PrelIO_memcpy(char *dst, HsInt dst_off, const char *src, size_t sz) return memcpy(dst+dst_off, src, sz); } + +int s_isreg_PrelPosix_wrap(int m) { return S_ISREG(m); } +int s_isdir_PrelPosix_wrap(int m) { return S_ISDIR(m); } +int s_isfifo_PrelPosix_wrap(int m) { return S_ISFIFO(m); } +int s_isblk_PrelPosix_wrap(int m) { return S_ISBLK(m); } +int s_ischr_PrelPosix_wrap(int m) { return S_ISCHR(m); } +#ifndef mingw32_TARGET_OS +int s_issock_PrelPosix_wrap(int m) { return S_ISSOCK(m); } +void sigemptyset_PrelPosix_wrap(sigset_t *set) { sigemptyset(set); } +#endif diff --git a/ghc/lib/std/cbits/PrelIOUtils.h b/ghc/lib/std/cbits/PrelIOUtils.h index 8dd19c1..da26c77 100644 --- a/ghc/lib/std/cbits/PrelIOUtils.h +++ b/ghc/lib/std/cbits/PrelIOUtils.h @@ -25,5 +25,16 @@ extern void* prel_PrelIO_memcpy(char *dst, HsInt dst_off, const char *src, size_ /* writeError.c */ extern void writeErrString__(HsAddr msg_hdr, HsAddr msg, HsInt len); +extern int s_isreg_PrelPosix_wrap(int); +extern int s_isdir_PrelPosix_wrap(int); +extern int s_isfifo_PrelPosix_wrap(int); +extern int s_isblk_PrelPosix_wrap(int); +extern int s_ischr_PrelPosix_wrap(int); +#ifndef mingw32_TARGET_OS +extern int s_issock_PrelPosix_wrap(int); +extern void sigemptyset_PrelPosix_wrap(sigset_t *set); +#endif + + #endif /* __PRELIOUTILS_H__ */