Replace `__hsunix_nanosleep` wrapper with CApiFFI
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 30 Jan 2016 21:42:23 +0000 (22:42 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 30 Jan 2016 23:19:53 +0000 (00:19 +0100)
System/Posix/Unistd.hsc
cbits/HsUnix.c
include/HsUnix.h

index 3f2d115..7f79113 100644 (file)
@@ -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
 
index 49f90e8..e54bccf 100644 (file)
@@ -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
index e276726..7b404fc 100644 (file)
@@ -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