64-Bit Support
The STREAMS modules and drivers will set a new flag STR_64BIT in the sc_flags field of the strconf_t structure, to indicate their capability to support 64-bit data types.
They will set this flag before calling the str_install subroutine.
At the driver open time, the stream head will set a per-stream 64-bit flag, if all autopushed modules (if any) and the driver support 64-bit data types. The same flag gets updated at the time of module push or pop, based on the module's 64-bit support capability. The system calls that pass data downstream in PSE, putmsg and putpmsg, will check this per-stream flag for that particular stream. Also, certain ioctl subroutines (such as I_STR and I_STRFDINSERT) and transparent ioctls will check this flag too. If the system call is issued by a 64-bit process and this flag is not set, the system call will fail. The 32-bit behavior is not affected by this flag. All of the present operating system Streams modules and drivers will support 64-bit user processes.
At link or unlink operation time, the stream head of upper half of the STREAMS multiplexor updates its per-stream 64-bit flag based on the flag value of the lower half stream head. For example, if the upper half supports 64-bit and lower half does not, then the multiplexor will not support 64-bit processes. This is necessary because all the system calls are processed at the upper half of the multiplexor.