山本です。

rb_thread_create なのですが、こうなっていて

VALUE
rb_thread_create(VALUE (*fn) (/* ??? */), void *arg)
{
    Init_stack((VALUE*)&arg);
    return rb_thread_start_0(fn, (VALUE)arg, rb_thread_alloc(rb_cThread));
}

こうなっています。

static VALUE
rb_thread_start_0(VALUE (*fn) (VALUE, rb_thread_t), VALUE arg, rb_thread_t th)
{

なので /* ??? */ は VALUE, rb_thread_t であるべきようにも思うのですが、rb_thread_t
は eval.c 内部で定義されている型であり、外部には公開されていません。これをどうすべき
でしょうか。