[#38919] Ruby 1.8.1 preview4 — matz@... (Yukihiro Matsumoto)

Hi,

44 messages 2003/12/22
[#38921] Re: Ruby 1.8.1 preview4 — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/12/22

Hi, all,

[ruby-list:38983] Re: Ruby 1.8.1 preview4

From: akira yamada / やまだあきら <akira@...>
Date: 2003-12-24 15:42:45 UTC
List: ruby-list #38983
>>>>> In [ruby-list : No.38982] 
>>>>>	matz@ruby-lang.org (Yukihiro Matsumoto) wrote:
> そんな腐った対応をしないでほしいなあ。で、その腐ったプラット
> フォームを同定するcpp識別子はなににしたら良いでしょう?

知人に聞いてみたところによると、
Linuxではsysv contextをサポートしていなくて、
それをglibcがwrapしているんじゃないかとのことです。

glibcのソースやサンプルプログラムによると
実装されていない場合には最終的に

  __set_errno (ENOSYS);
  return -1;

となるようで、

  getcontext() == -1

でかつ

  if(errno == ENOSYS)

ならその環境では使えないということでした。
configureでこのあたりのテストができるとよいかもしれません。


なお、cppで適切に判別できるかどうかという点では
ちょっとわからないんですが、
ヘッダファイルを追いかけるとfeatures.hに

  /* This is here only because every header file already includes this one.
     Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
     <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
     that will always return failure (and set errno to ENOSYS).  */
  #include <gnu/stubs.h>

とあって

  % grep context gnu/stubs.h
  #define __stub_getcontext
  #define __stub_makecontext
  #define __stub_setcontext
  #define __stub_swapcontext

という感じの定義がされているようです。

-- 
やまだあきら / akira yamada <URL:http://arika.org>
Vine Caves, Ltd. <URL:http://vinecaves.com>
(akira@arika.org, akira@debian.org or akira@vinecaves.com)

In This Thread