withForeignPtrPrim :: PrimMonad m => ForeignPtr a -> (Ptr a -> m b) -> m b
withForeignPtrPrim  fo act
  = do r <- act (FFU.unsafeForeignPtrToPtr fo)
       touchForeignPtrPrim fo
       return r

withForeignPtrPrim :: PrimMonad m => ForeignPtr a -> (Ptr a -> m b) -> m b
withForeignPtrPrim  fo act
  = do r <- act (FFU.unsafeForeignPtrToPtr fo)
       touchForeignPtrPrim fo
       return r

withForeignPtrPrim  fo act
  = do r <- act (FFU.unsafeForeignPtrToPtr fo)
       touchForeignPtrPrim fo
       return r
