'The length parameter must be a ctypes.c_uint64.'

def __call__(self, fd, mode, offset, length):

    if (not self.noop):
        if (FALLOCATE_RESERVE > 0):
            st = os.fstatvfs(fd)
            free = ((st.f_frsize * st.f_bavail) - length.value)
            if FALLOCATE_IS_PERCENT:
                free = ((float(free) / float((st.f_frsize * st.f_blocks))) * 100)
            if (float(free) <= float(FALLOCATE_RESERVE)):
                raise OSError(errno.ENOSPC, ('FALLOCATE_RESERVE    fail    %s    <=    %s' % (free, FALLOCATE_RESERVE)))
    args = {'fallocate': (fd, mode, offset, length), 'posix_fallocate': (fd, offset, length)}
    return self.fallocate(*args[self.func_name])
