mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* io.c (maygvl_copy_stream_wait_read): renamed to add prefix to
express GVL state. (nogvl_copy_stream_wait_write): ditto. (nogvl_copy_stream_sendfile): ditto. (maygvl_copy_stream_read): ditto. (nogvl_copy_stream_write): ditto. (nogvl_copy_stream_read_write): ditto. (nogvl_copy_stream_func): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
13a67cfcf2
commit
1dfea33652
2 changed files with 28 additions and 17 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
Sun Jan 4 03:30:18 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* io.c (maygvl_copy_stream_wait_read): renamed to add prefix to
|
||||||
|
express GVL state.
|
||||||
|
(nogvl_copy_stream_wait_write): ditto.
|
||||||
|
(nogvl_copy_stream_sendfile): ditto.
|
||||||
|
(maygvl_copy_stream_read): ditto.
|
||||||
|
(nogvl_copy_stream_write): ditto.
|
||||||
|
(nogvl_copy_stream_read_write): ditto.
|
||||||
|
(nogvl_copy_stream_func): ditto.
|
||||||
|
|
||||||
Sun Jan 4 00:30:50 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
|
Sun Jan 4 00:30:50 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
|
||||||
|
|
||||||
* lib/erb.rb: merged r20850, r17881, r16811, r16763, r16748, r15829,
|
* lib/erb.rb: merged r20850, r17881, r16811, r16763, r16748, r15829,
|
||||||
|
|
34
io.c
34
io.c
|
@ -7345,7 +7345,7 @@ struct copy_stream_struct {
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
copy_stream_wait_read(struct copy_stream_struct *stp)
|
maygvl_copy_stream_wait_read(struct copy_stream_struct *stp)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
rb_fd_zero(&stp->fds);
|
rb_fd_zero(&stp->fds);
|
||||||
|
@ -7360,7 +7360,7 @@ copy_stream_wait_read(struct copy_stream_struct *stp)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
copy_stream_wait_write(struct copy_stream_struct *stp)
|
nogvl_copy_stream_wait_write(struct copy_stream_struct *stp)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
rb_fd_zero(&stp->fds);
|
rb_fd_zero(&stp->fds);
|
||||||
|
@ -7395,7 +7395,7 @@ simple_sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
|
||||||
|
|
||||||
#ifdef USE_SENDFILE
|
#ifdef USE_SENDFILE
|
||||||
static int
|
static int
|
||||||
copy_stream_sendfile(struct copy_stream_struct *stp)
|
nogvl_copy_stream_sendfile(struct copy_stream_struct *stp)
|
||||||
{
|
{
|
||||||
struct stat src_stat, dst_stat;
|
struct stat src_stat, dst_stat;
|
||||||
ssize_t ss;
|
ssize_t ss;
|
||||||
|
@ -7467,7 +7467,7 @@ copy_stream_sendfile(struct copy_stream_struct *stp)
|
||||||
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
||||||
case EWOULDBLOCK:
|
case EWOULDBLOCK:
|
||||||
#endif
|
#endif
|
||||||
if (copy_stream_wait_write(stp) == -1)
|
if (nogvl_copy_stream_wait_write(stp) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
if (rb_thread_interrupted(stp->th))
|
if (rb_thread_interrupted(stp->th))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -7482,7 +7482,7 @@ copy_stream_sendfile(struct copy_stream_struct *stp)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
copy_stream_read(struct copy_stream_struct *stp, char *buf, int len, off_t offset)
|
maygvl_copy_stream_read(struct copy_stream_struct *stp, char *buf, int len, off_t offset)
|
||||||
{
|
{
|
||||||
ssize_t ss;
|
ssize_t ss;
|
||||||
retry_read:
|
retry_read:
|
||||||
|
@ -7505,7 +7505,7 @@ copy_stream_read(struct copy_stream_struct *stp, char *buf, int len, off_t offse
|
||||||
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
|
||||||
case EWOULDBLOCK:
|
case EWOULDBLOCK:
|
||||||
#endif
|
#endif
|
||||||
if (copy_stream_wait_read(stp) == -1)
|
if (maygvl_copy_stream_wait_read(stp) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
goto retry_read;
|
goto retry_read;
|
||||||
#ifdef ENOSYS
|
#ifdef ENOSYS
|
||||||
|
@ -7522,7 +7522,7 @@ copy_stream_read(struct copy_stream_struct *stp, char *buf, int len, off_t offse
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
copy_stream_write(struct copy_stream_struct *stp, char *buf, int len)
|
nogvl_copy_stream_write(struct copy_stream_struct *stp, char *buf, int len)
|
||||||
{
|
{
|
||||||
ssize_t ss;
|
ssize_t ss;
|
||||||
int off = 0;
|
int off = 0;
|
||||||
|
@ -7530,7 +7530,7 @@ copy_stream_write(struct copy_stream_struct *stp, char *buf, int len)
|
||||||
ss = write(stp->dst_fd, buf+off, len);
|
ss = write(stp->dst_fd, buf+off, len);
|
||||||
if (ss == -1) {
|
if (ss == -1) {
|
||||||
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||||
if (copy_stream_wait_write(stp) == -1)
|
if (nogvl_copy_stream_wait_write(stp) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -7546,7 +7546,7 @@ copy_stream_write(struct copy_stream_struct *stp, char *buf, int len)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
copy_stream_read_write(struct copy_stream_struct *stp)
|
nogvl_copy_stream_read_write(struct copy_stream_struct *stp)
|
||||||
{
|
{
|
||||||
char buf[1024*16];
|
char buf[1024*16];
|
||||||
int len;
|
int len;
|
||||||
|
@ -7582,17 +7582,17 @@ copy_stream_read_write(struct copy_stream_struct *stp)
|
||||||
len = sizeof(buf);
|
len = sizeof(buf);
|
||||||
}
|
}
|
||||||
if (use_pread) {
|
if (use_pread) {
|
||||||
ss = copy_stream_read(stp, buf, len, src_offset);
|
ss = maygvl_copy_stream_read(stp, buf, len, src_offset);
|
||||||
if (0 < ss)
|
if (0 < ss)
|
||||||
src_offset += ss;
|
src_offset += ss;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ss = copy_stream_read(stp, buf, len, (off_t)-1);
|
ss = maygvl_copy_stream_read(stp, buf, len, (off_t)-1);
|
||||||
}
|
}
|
||||||
if (ss <= 0) /* EOF or error */
|
if (ss <= 0) /* EOF or error */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ret = copy_stream_write(stp, buf, ss);
|
ret = nogvl_copy_stream_write(stp, buf, ss);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -7605,7 +7605,7 @@ copy_stream_read_write(struct copy_stream_struct *stp)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
copy_stream_func(void *arg)
|
nogvl_copy_stream_func(void *arg)
|
||||||
{
|
{
|
||||||
struct copy_stream_struct *stp = (struct copy_stream_struct *)arg;
|
struct copy_stream_struct *stp = (struct copy_stream_struct *)arg;
|
||||||
#ifdef USE_SENDFILE
|
#ifdef USE_SENDFILE
|
||||||
|
@ -7613,12 +7613,12 @@ copy_stream_func(void *arg)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SENDFILE
|
#ifdef USE_SENDFILE
|
||||||
ret = copy_stream_sendfile(stp);
|
ret = nogvl_copy_stream_sendfile(stp);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto finish; /* error or success */
|
goto finish; /* error or success */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
copy_stream_read_write(stp);
|
nogvl_copy_stream_read_write(stp);
|
||||||
|
|
||||||
#ifdef USE_SENDFILE
|
#ifdef USE_SENDFILE
|
||||||
finish:
|
finish:
|
||||||
|
@ -7661,7 +7661,7 @@ copy_stream_fallback_body(VALUE arg)
|
||||||
ssize_t ss;
|
ssize_t ss;
|
||||||
rb_thread_wait_fd(stp->src_fd);
|
rb_thread_wait_fd(stp->src_fd);
|
||||||
rb_str_resize(buf, buflen);
|
rb_str_resize(buf, buflen);
|
||||||
ss = copy_stream_read(stp, RSTRING_PTR(buf), l, off);
|
ss = maygvl_copy_stream_read(stp, RSTRING_PTR(buf), l, off);
|
||||||
if (ss == -1)
|
if (ss == -1)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
if (ss == 0)
|
if (ss == 0)
|
||||||
|
@ -7800,7 +7800,7 @@ copy_stream_body(VALUE arg)
|
||||||
rb_fd_set(src_fd, &stp->fds);
|
rb_fd_set(src_fd, &stp->fds);
|
||||||
rb_fd_set(dst_fd, &stp->fds);
|
rb_fd_set(dst_fd, &stp->fds);
|
||||||
|
|
||||||
return rb_thread_blocking_region(copy_stream_func, (void*)stp, RUBY_UBF_IO, 0);
|
return rb_thread_blocking_region(nogvl_copy_stream_func, (void*)stp, RUBY_UBF_IO, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue