Not only is the Internet dead, it's starting to smell really bad.:2009年10月上旬

2009/10/01(Thu)

[NetBSD][man] citrus_module(3)

@

某所で某氏が某教祖にドナドナされたとこを見たような気がしたので
今後必要になる可能性もゼロではないと思いマニュアルをでっちageてみるテスト。
用語が一般的かとか一貫性が保ててるかとかこまけぇことはいいんだよ!(AA略

 CITRUS_MODULE(3)          NetBSD Programmer's Manual          CITRUS_MODULE(3)

 NAME
     _citrus_module_t, _citrus_load_module, _citrus_find_getopts,
     _citrus_unload_modle - プラグインモジュール操作インタフェース

 SYNOPSIS
     #include citrus_module.h

     int
     _citrus_load_module(_citrus_module_t * resrict pmodule,
             const char * restrict modname)

     void *
     _citrus_find_getops(_citrus_module_t module,
             const char * restrict namespace, const char * restrict ifname)

     void
     _citrus_unload_module(_citrus_module_t module)

 DESCRIPTION
     _citrus_module_t 型はプラグインモジュールのハンドラで, 実装依存の不透明オ
     ブジェクトです。

     _citrus_load_module() 関数は modname で指定された名前のプラグインモジュー
     ルをロードし, 成功した場合はハンドラを *pmodname に保存します。 pmodule
     および modname が NULL の場合, 動作は未定義です。

     _citrus_find_getops() 関数は module で渡されたハンドラから namespace およ
     び ifname で指定されたインタフェースを検索します。 module が NULL あるい
     は無効な値の場合, また namespace および ifname が NULL の場合, 動作は未定
     義です。

     _citrus_unload_module() 関数はハンドラに関連付いたプラグインモジュールを
     アンロードします。 module が NULL あるいは無効な値の場合, 動作は未定義で
     す。

 RETURN VALUE
     _citrus_load_module() は成功した場合は0, 失敗した場合は実装依存のエラーコ
     ードを返します。

     _citrus_find_getops() は成功した場合はインタフェースのアドレスを, 失敗し
     た場合は NULL を返します。

 IMPLEMENTATION
     現在のNetBSDでは, プラグインモジュール形式は動的共有ライブラリそのもので
     あり _citrus_load_module() は dlopen(3),  _citrus_find_getops() は
     dlsym(3),  そして _citrus_unload_module() は dlclose(3) のラッパーとして
     実装されています。そのため _citrus_module_t は dlopen(3) が返すハンドルと
     同一です。

     プラグインモジュールの検索パスの初期値は <pats.h> で

           #define _PATH_I18NMODULE        "/usr/lib/i18n"

     と定義されていますが, 環境変数 PATH_I18NMODULE で上書可能です。ただしセ
     キュリティの都合上 set-user-ID あるいは set-group-ID された実行ファイルか
     らは無視されます。

 SEE ALSO
     citrus(7) dlopen(3) dlsym(3) dlclose(3)

nroffファイルは こちら、次回はcitrus_ctype(3)の予定の悪寒。

しかしNetBSDのpkgsrc/textproc/ja-groffだとbaseのgroffと比べてちと古いのか
いろいろ使えないマクロあるなぁ。

ま、話を戻すとdlopen(3)の使えないどっかの環境では
当然このファイル(citrus_module.c)を置き換える必要があるわけです。
BSDAuthのようにプラグインモジュールをexecutableとして実装し
socketpair(2)でお話をするなんてのも(性能はともあれ)ありかもしれません。

2009/10/04(Sun)

今日

@

たぶん政府のいう内需拡大ってこういうことなんだと思った。

 SCORE 日経平均 9731  円ドル 89

      友愛 ~~~~~~~

内 内 内 内 内 内 内 内 内 需 需 需 需 需 需 需 需 需 冂  冂  冂  冂  冂      凸

宇宙人ちうかスペースインベーダー。

2009/10/05(Mon)

今日

@

VMware Server2上のNetBSD 5.99.でフロッピをmountしようとすっとtimeoutで刺さるNE。
物理デバイスでもイメージファイルでもおんなじ(まぁNetBSD側から見たら同じだろ)。
cygwinでddしてイメージをscpしてvnconfigして見なかったことにする。

2009/10/07(Wed)

今日

@

G7リストラ危機 G4構想浮上って、 藤井の爺さん(G3)をクビってことなら喜ばしいのだが、はぁ。