Foreign String

foreign-stringは、EusLispのヒープ外にあるバイトベクトルの1種である。 普通の文字列は、長さとバイトの列を持ったオブジェクトであるが、 foreign-stringは、長さと文字列本体のアドレスを持っている。 foreign-stringは文字列であるが、 いくつかの文字列および列に対する関数は適用できない。 lengtharefreplacesubseqcopy-seqだけが foreign-stringを認識し、 その他の関数の適用はクラッシュの原因となる恐れがある。

foreign-stringは、/dev/a??d??(??は32あるいは16)の特殊ファイルで与えられる I/O空間を参照することがある。 そのデバイスがバイトアクセスにのみ応答するI/O空間の一つに 割り当てられた場合、 replaceは、いつもバイト毎に要素をコピーする。 メモリのlarge chunkを連続的にアクセスしたとき、比較的に遅く動作する。。



make-foreign-string address length [関数]

addressの位置からlengthバイトの foreign-stringのインスタンスを作る。 例えば、(make-foreign-string (unix:malloc 32) 32)は、 EusLispのヒープ外に位置する32バイトメモリを参照部分として作る。




2016-04-05