extern "C" int closedir(DIR *dir)
{
  int fd = dirfd(dir);
  if (dmtcp::ProtectedFDs::isProtected(fd)) {
    JTRACE("blocked attempt to closedir protected fd") (fd);
    errno = EBADF;
    return -1;
  }
  return _real_closedir(dir);
}
Beispiel #2
0
extern "C" int closedir(DIR *dir)
{
  int fd = dirfd(dir);
  if (DMTCP_IS_PROTECTED_FD(fd)) {
    JTRACE("blocked attempt to closedir protected fd") (fd);
    errno = EBADF;
    return -1;
  }
  return _real_closedir(dir);
}
Beispiel #3
0
extern "C" int closedir(DIR *dir)
{
  int fd = dirfd(dir);
  if (dmtcp_is_protected_fd(fd)) {
    JTRACE("blocked attempt to closedir protected fd") (fd);
    errno = EBADF;
    return -1;
  }

  DMTCP_DISABLE_CKPT();
  int rv = _real_closedir(dir);
  if (rv == 0 && dmtcp_is_running_state()) {
    process_fd_event(SYS_close, fd);
  }
  DMTCP_ENABLE_CKPT();

  return rv;
}