diff options
author | Herbert Valerio Riedel <hvr@gnu.org> | 2016-01-30 22:42:23 +0100 |
---|---|---|
committer | Herbert Valerio Riedel <hvr@gnu.org> | 2016-01-31 00:19:53 +0100 |
commit | 4c25a0d4af899b43d557a6d2dc1b4291e5f75659 (patch) | |
tree | b160a70ac7f6b11e0afb0df1424bf66a974e776c | |
parent | 944b05c4aa35378db18cee4fcd4e1f02e67ce645 (diff) |
Replace `__hsunix_nanosleep` wrapper with CApiFFI
-rw-r--r-- | System/Posix/Unistd.hsc | 4 | ||||
-rw-r--r-- | cbits/HsUnix.c | 8 | ||||
-rw-r--r-- | include/HsUnix.h | 5 |
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 |