Technical data

145
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.
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.