foreign-stringは、EusLispのヒープ外にあるバイトベクトルの1種である。
普通の文字列は、長さとバイトの列を持ったオブジェクトであるが、
foreign-stringは、長さと文字列本体のアドレスを持っている。
foreign-stringは文字列であるが、
いくつかの文字列および列に対する関数は適用できない。
length、aref、replace、subseqとcopy-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