[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00295] Re: リソースの取得方法は?



こんにちは、澤田です。

On Mon, 14 Aug 2000 10:15:41 +0900
in [WitchTech 00294] Re: リソースの取得方法は?
Tooru Watanabe <erupi@fa2.so-net.ne.jp> wrote:

> 自己レスですが、あれから調べていて解りました。
> extern void far *_resource;
> に、リソースの先頭を指すポインタが入ってるんですね。で、そこから辿ると。
> お騒がせいたしました。

_resourceなんですが、LSI-C用のスタートアップルーチンでは
ちゃんとpublicになっているのですが、TurboC用の方はなぜかpublicに
なっていません。ですから _resource を使うと TurboC で make が
出来ないソースになってしまうようです。

# c0ww.asm で __resource を public にするだけなんだけど・・
# おそらくミスしてるだけだと思う。


で、まだ私自身試していないのですが、_resouce や _heap というのは
sys/process.h にある ProcContext の _resource, _heap と同義と
思われます。ですから、

#include <sys/process.h>

#define resource_p (_pc->_resource)   /* 特に定義しなくても良いですが */

とすれば、resource_p で同じポインタが取得できるんじゃないでしょうか?
これなら LSI-C, TurboC どちらでも問題ないソースコードになると思います。
ilibILなんかは公式に使われているものなので、_pc を使う事は大丈夫でしょう。

推測ばかりのフォローなんで、もしかして間違っていたらすいません。
私もちょっと前に _resource を直接使ったコードを書いたのですが、
public じゃなかったので _heap の定義アドレスから逆算するというインチキ
技をしてました(^^;。その後で process.h を覗いた・・

ProcContext は、マニュアル中での PCB そのものだと思います。

___
澤田 大輔(die)
email: die@zonze.nu(home), swd@techbrains.co.jp(office)


ML Archives