A foreign-string is a kind of byte-vector whose entity is held somewhere
outside EusLisp's heap.
While a normal string is represented by a sequence of bytes and its length,
a foreign-string holds the length and the address of the string entity.
Although foreign-string is a string,
some string and sequence functions cannot be applicable.
Only length, aref, replace, subseq and copy-seq
recognize the foreign-string,
and application of other functions may cause a crash.
A foreign-string may refer to a part of I/O space usually
taken in /dev/a??d?? special file where ?? is either 32 or 16.
In case the device attached in one of these I/O space only responds
to byte access, replace always copies element byte by byte,
which is relatively slow when a large chunk of memory is accessed
consecutively.
make-foreign-string address length [function]
-
-
makes an instance of foreign-string located at address
and spanning for length bytes.
For example, (make-foreign-string (unix:malloc 32) 32)
makes a reference to a 32-byte memory located outside EusLisp's heap.
k-okada
2013-05-21