[ Bottom of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]

Kernel Extensions and Device Support Programming Concepts

32-bit Kernel Extension Considerations

The introduction of the scalable 64-bit ABI requires 32-bit kernel extensions to be modified in order to be used by 64-bit applications on AIX 5.1 and later. Existing AIX 4.3 kernel extensions can still be used without change for 32-bit applications on AIX 5.1 and later. If an AIX 4.3 kernel extension exports 64-bit system calls, the symbols will be marked as invalid for 64-bit processes, and if a 64-bit program requires these symbols, the program will fail to execute.

Once a kernel extension has been updated to support the new 64-bit ABI, there are two ways to indicate that the kernel extension can be used by 64-bit processes again. The first way uses a linker flag to mark the module as a ported kernel extension. Use the bM:LT linker flag to mark the module in this manner. The second way requires changing the sysconfig or kmod_load call used to load the kernel extension. When the SYS_64L flag is passed to sysconfig, or the LD_64L flag is passed to kmod_load, the specified kernel extension will be allowed to export 64-bit system calls.

Kernel extensions in the 64-bit kernel are always assumed to support the 64-bit ABI. The module type, specified by the -bM linker flag, as well as the SYS_64L and LD_64L flags are always ignored when the 64-bit kernel is running.

32-bit device drivers cannot be used by 64-bit applications unless the DEV_64L flag is set in the d_opts field. The DEV_64BIT flag is ignored, and in the 64-bit kernel, DEV_64L is ignored as well.

[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home | Legal | Search ]