The data path between a user's shell and the terminal is called a stream. The data on a stream contain characters and control information that affect data handling, such as the control sequences that precede a change in code set or communication protocols. Data that enters the stream from the terminal is raw or unprocessed. Data is sequentially processed by STREAMS modules for appropriate use by the shell or an application.
STREAMS provides a way to modularize the processing on a line, allowing processing instructions to be grouped in functional modules. These modules can be added or removed from the line so that different environments can be provided to a terminal according to the user's needs.
The traditional STREAMS TTY environment contains a raw device driver, a line discipline module, and a stream head. The raw device driver provides an I/O interface between the kernel and the hardware. Because it is closest to the physical hardware, it provides basic communication protocols, baud rate switching, and other low level services. The line discipline module is a set of instructions or disciplines that transforms the raw data to processed data. This includes handling the delete character, line kill character, and others. The stream head provides an interface between the user's process and the stream.
The Korean Solaris Operating System uses the modular nature of STREAMS to support Korean. In addition to the traditional TTY modules, this product implements code conversion in STREAMS. Hangul-Hanja conversion is typically supplied by many existing Korean TTYs and is not available in the Korean Solaris TTY environment.
The Korean Solaris Operating System enhances the traditional modules. The line discipline of the operating system handles proper cursor movement for wide characters as well as normal protocols. The Korean Solaris code conversion modules convert between two different character code formats. For example, Packed format, combination code of KS C 5601-1987, can be converted to EUC format, completion code.
Code conversion depends on the appropriate flags or parameters being set. For example, if a Packed code terminal is being used, the input from the terminal is converted to EUC and the output to the terminal is converted to Packed code.
The major modules that can be pushed onto the stream are ldterm, kpack and kjohap.
ldterm is a generic EUC line discipline module. It processes all normal line discipline functions and also handles proper cursor movement and backspacing for wide characters (EUC). See ldterm(7M) for more information.
kpack controls code conversion between Combination code of KS C 5601-1987 and EUC.
kjohap controls code conversion between Combination code of KS C 5601-1992 code and EUC.