aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Herbert Valerio Riedel <hvr@gnu.org>2016-01-30 22:42:23 +0100
committerGravatar Herbert Valerio Riedel <hvr@gnu.org>2016-01-31 00:19:53 +0100
commit4c25a0d4af899b43d557a6d2dc1b4291e5f75659 (patch)
treeb160a70ac7f6b11e0afb0df1424bf66a974e776c
parent944b05c4aa35378db18cee4fcd4e1f02e67ce645 (diff)
Replace `__hsunix_nanosleep` wrapper with CApiFFI
-rw-r--r--System/Posix/Unistd.hsc4
-rw-r--r--cbits/HsUnix.c8
-rw-r--r--include/HsUnix.h5
3 files changed, 2 insertions, 15 deletions
diff --git a/System/Posix/Unistd.hsc b/System/Posix/Unistd.hsc
index 3f2d115..7f79113 100644
--- a/System/Posix/Unistd.hsc
+++ b/System/Posix/Unistd.hsc
@@ -181,9 +181,9 @@ nanosleep nsecs = do
else throwErrno "nanosleep"
loop (fromIntegral tv_sec0 :: CTime) (fromIntegral tv_nsec0 :: CTime)
-data CTimeSpec
+data {-# CTYPE "struct timespec" #-} CTimeSpec
-foreign import ccall safe "__hsunix_nanosleep"
+foreign import capi safe "HsUnix.h nanosleep"
c_nanosleep :: Ptr CTimeSpec -> Ptr CTimeSpec -> IO CInt
#endif
diff --git a/cbits/HsUnix.c b/cbits/HsUnix.c
index 49f90e8..e54bccf 100644
--- a/cbits/HsUnix.c
+++ b/cbits/HsUnix.c
@@ -34,14 +34,6 @@ int __hsunix_getpwuid_r(uid_t uid, struct passwd *pw, char *buffer,
}
#endif
-#ifdef HAVE_NANOSLEEP
-// nanosleep is a macro on some platforms, so we need a wrapper:
-int __hsunix_nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
-{
- return nanosleep(rqtp, rmtp);
-}
-#endif
-
#ifdef HAVE_PTSNAME
// I cannot figure out how to make the definitions of the following
// functions visible in <stdlib.h> on Linux. But these definitions
diff --git a/include/HsUnix.h b/include/HsUnix.h
index e276726..7b404fc 100644
--- a/include/HsUnix.h
+++ b/include/HsUnix.h
@@ -125,11 +125,6 @@ int __hsunix_getpwuid_r(uid_t, struct passwd *, char *, size_t,
struct passwd **);
#endif
-#ifdef HAVE_NANOSLEEP
-// nanosleep is a macro on some platforms, so we need a wrapper:
-int __hsunix_nanosleep(const struct timespec *, struct timespec *);
-#endif
-
#ifdef HAVE_PTSNAME
// I cannot figure out how to make the definitions of the following
// functions visible in <stdlib.h> on Linux. But these definitions