Project

General

Profile

« Previous | Next » 

Revision 8840b033

Added by Eric Wong over 7 years ago

dir.c: openat calls release GVL, too

openat(2) also performs a path lookup, so it is also subject
to pathological slowdowns like opendir(3) and open(2) syscalls.

  • dir.c (struct opendir_at_arg): new struct for callback
    (with_gvl_gc_for_fd): new callback for rb_thread_call_with_gvl
    (gc_for_fd_with_gvl): moved up
    (nogvl_opendir_at): extracted from do_opendir
    (opendir_at): new wrapper to release GVL for opendir_at
    (do_opendir): use new wrappers to release GVL
    (nogvl_dir_empty_p): adjust for gc_for_fd_with_gvl

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e