Generally, marshalling between Lisp and C data types is done using SBCL's FFI. See Foreign Function Interface.
Some functions accept objects such as filenames or file descriptors. In
the C binding to POSIX these are represented as strings and small
integers respectively. For the Lisp programmer's convenience we
introduce designators such that CL pathnames or open streams can be
passed to these functions. For example, rename
accepts both
pathnames and strings as its arguments.