First created at: 3/15/2007 Last updated at: 3/21/2007 kiconv ------ OVERVIEW This project proposes to add six notable functions, an kiconv module | specific linkage data structure with an accompanying module operations | data structure, five kiconv modules, and a header file with a couple of | notable data structures, kiconv_module_info(9S) and kiconv_ops(9S), for | the support of kernel-level iconv code conversions as described at below and [1]. The interfaces and code conversions are requested by SNAS Technologies group and file system groups such as NFS and PCFS to support necessary code conversions for our software and storage products. Among the new functions, kiconv_open(9F), kiconv(9F), kiconv_close(9F), and kiconvstr(9F) are the code conversion functions for general consumption. Functions kiconv_register_module(9F) and kiconv_unregister_module(9F) are for | kiconv module population management and will be used only by the project team. | Data structures kiconv_module_info(9S) and kiconv_ops(9S) and a header file | are for code conversion module developers and the project team. | The following kiconv module specific linkage and module operations structures | are for code conversion module developers and the project team: | | struct modlkiconv { | struct mod_ops *kiconv_modops; | char *kiconv_linkinfo; | kiconv_module_info_t *kiconv_moddef; | }; | | static int mod_installkiconv(struct modlkiconv *, struct modlinkage *);| static int mod_removekiconv(struct modlkiconv *, struct modlinkage *); | | struct mod_ops mod_kiconvops = { | mod_installkiconv, mod_removekiconv, mod_infonull | }; | | The initial set of code conversions proposed to be supported are shown in the kiconv_open(9F) man page and will be supplied by the project team. Most of the code conversions are coming from kiconv code conversion modules and loaded as needed except ISO-8859-1, ISO-8859-15, CP850, and CP1252 related code conversions that are quite commonly used in the world and require very small memory space (approximately about 1KB) for the mapping tables. Loading of code conversions can be done in two ways: kiconv_open(9F), with embedded info on available code conversions and corresponding modules, can identify and load necessary modules, or, people can manually load a module and let the module register itself with a kiconv module definition including | the supported code conversions. | Among the supported code conversions, unlike other code conversions we plan to support, we do not have legal clearance on the CP720 (DOS Arabic) mapping table yet. Some related people are currently looking for legal guidance or approval on the mapping table for CP720 from a 3'rd party. Depending on that, we may choose not to include the support for the CP720 related code conversions in the initial putback and thus omit from the proposed man page. INTERFACE STABILITY AND RELEASE BINDING There is no notable imported interfaces. The following are the exported interfaces: Interface Stability Reference/Comment kiconv_open(9F), Committed [1] kiconv(9F), kiconv_close(9F), kiconvstr(9F) kiconv_register_module(9F), Project Private [1] | kiconv_unregister_module(9F) sys/kiconv.h, Consolidation Private [1] (Header file and kiconv_module_info(9S), data structures for kiconv_ops(9S), the above functions struct modlkiconv, and and the modules at | struct mod_ops mod_kiconvops below.) | | mod_installkiconv(), Project Private module install and | mod_removekiconv() remove operations. | /kernel/kiconv/ Consolidation Private Directory for kiconv | kernel modules | kiconv_emea Project Private European, Middle | East, and South East | Asian kiconv module | kiconv_ja Project Private Japanese kiconv module | kiconv_ko Project Private Korean kiconv module | kiconv_sc Project Private S. Chinese kiconv | module | kiconv_tc Project Private T. Chinese kiconv | module | Note: For the above kiconv directory and the five kiconv modules, | the project team also asks for the same interface stability for the corresponding 64-bit directories and modules. | The project team asks for Micro/Patch release binding. REFERENCES [1] Man pages at the case directory in flat text files: materials/*.9[fs]