Dialogic® Diva® TTY driver
The Dialogic® Diva® TTY driver is provided only in binary form, and can only be recompiled for your own kernel using the source level package.
This section describes the usage of this driver with customized kernels if the aforementioned method is not applicable.
The Dialogic® Diva® TTY interface relies on a limited amount of exposed kernel services. If the appropriate services do not differ from the services the Dialogic® Diva® TTY driver was originally compiled for, then you can still use the driver with your customized kernel. Therefore, the Diva TTY driver for single processor machines is compiled without symbol version information and can be loaded in every kernel that exports the requested externals.
[20] If the driver cannot be loaded due to different kernel version/name, you can try the forced module load.
[21]
To do so, you can use the Dialogic® Diva® Media Board configuration utility or the insmod -f Divatty.o command.
Drivers for SMP (Multi-processor) systems are compiled using the same symbol version information settings as set by the original kernel configuration.
The Linux kernel is "monolithic". The interface between the kernel and the loadable kernel modules, especially the layout of internal kernel structures, can change depending on the current kernel configuration. It is clear that in case the kernel and the loadable kernel module have different layout of shared structures you can still load the module, but it can lead to instabilities or Oops.
Another cause for Oops and instabilities is the different processor model. The loadable kernel module which is optimized for PentiumPro CPU can cause problems if loaded in the kernel that was optimized for Pentium CPU.
In case your system becomes instable after the Diva TTY driver was loaded you can follow the general rules described below. These rules allow you to create the customized kernel which will be compatible with the Diva TTY driver:
- Select the Dialogic® Diva® RPM package with the name (kernel version) that is closest to the name of the kernel you plan use and that is suited for the CPU that you plan to use, i.e., optimized for i386, i686, ATHLON. Verify that your kernel and the Dialogic® Diva® module are compiled by same GCC compiler generation (GCC 2.XX or GCC 3.XX).
[22]You can use the command objdump -s Divatty.o > info1.txt; objdump - s vmlinux > info2.txt and view the context of the ".comment" sections.
- View with the nm -u Divatty.o command the list of TTY driver kernel services (functions) used by the Dialogic® Diva® System Release software.
- View the definition of structures that are directly used by functions the Dialogic® Diva® TTY driver imports from the kernel. Additionally, view the layout of structures used by macros that contain some of these functions (some functions are used only from macros, especially "skb_xxx", "memcpy", "memset" and similiar functions and macros.
[23]You can receive detailed information about all exported data structures, functions and the structures on which the exported functions depend on if you activate the symbol version information, change the kernel Makefile from 'genksyms' to 'genksyms -D' and execute make modules 2>info.txt && grep Export info.txt > exports.txt.
- Note that the kernel configuration options can change the layout of these structures.
- Now you can compare the settings of these configuration options of your customized kernel and the kernel that the Diva TTY driver was compiled for. You can use include/linux/autoconf.h files for this purpose.
- Use include/linux/autoconf.h to compare the configuration options that can affect the CPU model.
- Change the configuration of your kernel now in order to meet the configuration of the kernel that the Diva TTY driver was compiled for and recompile your kernel.