diff --git a/System/Posix/Resource.hsc b/System/Posix/Resource.hsc
index 3418ecf8564aa52bba5d6f373df093e6898d481c..309d3945441367298a7168b68cd6712c7ef1f837 100644
--- a/System/Posix/Resource.hsc
+++ b/System/Posix/Resource.hsc
@@ -1,3 +1,4 @@
+{-# LANGUAGE CApiFFI #-}
 #if __GLASGOW_HASKELL__ >= 709
 {-# LANGUAGE Safe #-}
 #else
@@ -57,10 +58,10 @@ data ResourceLimit
 
 data {-# CTYPE "struct rlimit" #-} RLimit
 
-foreign import ccall unsafe "HsUnix.h __hscore_getrlimit"
+foreign import capi unsafe "HsUnix.h getrlimit"
   c_getrlimit :: CInt -> Ptr RLimit -> IO CInt
 
-foreign import ccall unsafe "HsUnix.h __hscore_setrlimit"
+foreign import capi unsafe "HsUnix.h setrlimit"
   c_setrlimit :: CInt -> Ptr RLimit -> IO CInt
 
 getResourceLimit :: Resource -> IO ResourceLimits
diff --git a/cbits/HsUnix.c b/cbits/HsUnix.c
index 09cfc9cd1d3af38e980a604e104d4ae460029607..55f9679d8c4292b9958d640ec40530da3c9be02b 100644
--- a/cbits/HsUnix.c
+++ b/cbits/HsUnix.c
@@ -81,17 +81,6 @@ char *__hscore_mkdtemp(char *filetemplate) {
 }
 #endif
 
-
-#if !defined(irix_HOST_OS)
-int __hscore_getrlimit(int resource, struct rlimit *rlim) {
-    return (getrlimit(resource, rlim));
-}
-
-int __hscore_setrlimit(int resource, struct rlimit *rlim) {
-    return (setrlimit(resource, rlim));
-}
-#endif
-
 #ifdef HAVE_UNSETENV
 int __hsunix_unsetenv(const char *name)
 {
diff --git a/include/HsUnix.h b/include/HsUnix.h
index 98990b286143404daf3550f32b8e2c13800989be..093c9e3dea4dfe5d4acfc292063ca280a74851a0 100644
--- a/include/HsUnix.h
+++ b/include/HsUnix.h
@@ -144,11 +144,6 @@ int __hscore_mkstemps(char *filetemplate, int suffixlen);
 char *__hscore_mkdtemp(char *filetemplate);
 #endif
 
-#if !defined(irix_HOST_OS)
-int __hscore_getrlimit(int resource, struct rlimit *rlim);
-int __hscore_setrlimit(int resource, struct rlimit *rlim);
-#endif
-
 int __hsunix_unsetenv(const char *name);
 
 /* A size that will contain many path names, but not necessarily all