6 linux environment, 1 installation, 1 driver source – Freescale Semiconductor SEC2SWUG User Manual

Page 39: 2 device inode, 2 operation, 1 driver operation in kernel mode, Linux environment, 6linux environment

Advertising
background image

SEC 2.0 Reference Device Driver User’s Guide, Rev. 0

Freescale Semiconductor

PRELIMINARY—SUBJECT TO CHANGE WITHOUT NOTICE

39

Linux Environment

6

Linux Environment

This section describes the driver's adaptation to and interaction with the Linux operating system as applied to PPC
processors

6.1 Installation

6.1.1 Driver Source

The SEC2 driver installs into Linux as a loadable module. To build the driver as a module, it must be installed into
the kernel source tree to be included in the kernel build process. The makefile included with the distribution assumes
this inclusion. As delivered, this directory is defined as

[kernelroot]/drivers/sec2.

Once the driver source is installed, and the kernel source (and modules) are built, module dependency lists updated,
and the built objects are installed in the target filesystem, the driver, (named

sec2drv.o

) is ready for loading when

needed.

6.1.2 Device Inode

Kernel processes may call the driver's functionality directly. On the other hand, user processes must use the kernel's
I/O interface to make driver requests. The only way for user processes to do this it to open the device as a file with
the

open()

system call to get a file descriptor, and then make requests through

ioctl()

. Thus the system will need

a device file created to assign a name to the device.

The driver functions as a

char

device in the target system. As shipped, the driver assumes that the device major

number will be assigned dynamically, and that the minor number will always be zero, since only one instance of the
driver is supported.

Creation of the device's naming inode may be done manually in a development setting, or may be driven by a script
that runs after the driver module loads, and before any user attempts to open a path to the driver. Assuming the
module loaded with a dynamically assigned major number of 254 (look for

sec2

in

/proc/devices

), then the

shell command to accomplish this would normally appear as:

$ mknod c 254 0 /dev/sec2

Once this is done, user tasks can make requests to the driver under the device name

/dev/sec2

.

6.2 Operation

6.2.1 Driver Operation in Kernel Mode

Operation of the SEC2 device under kernel mode is relatively straightforward. Once the driver module has loaded,
which will initialize the device, direct calls to the

ioctl()

entry (named

SEC2_ioctl

in the driver) can be made,

the first two arguments may effectively be ignored.

In kernel mode, request completion may be handled through the standard use of notification callbacks in the request.
The example suite available with the driver shows how this may be accomplished; this suite uses a mutex that the
callback will release in order to allow the request to complete, although the caller may make use of any other type
of event mechanism that suits their preference.

Logical to physical memory space translation is handled internal to the driver.

Advertising