Windows PowerShell command on Get-command ddi_model_convert_from
MyWebUniversity

Manual Pages for UNIX Operating System command usage for man ddi_model_convert_from

Kernel Functions for Drivers ddi_model_convert_from(9F)

NAME

ddi_model_convert_from - determine data model type mismatch

SYNOPSIS

#include

#include

uint_tddi_model_convert_from(uint_t model);

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

PARAMETERS

model The data model type of the current thread.

DESCRIPTION

ddi_model_convert_from() is used to determine if the current

thread uses a different C Language Type Model than the dev-

ice driver. The 64-bit version of Solaris will require a

64-bit kernel to support both 64-bit and 32-bit user mode

programs. The difference between a 32-bit program and a 64-

bit program is in its C Language Type Model: a 32-bit pro-

gram is ILP32 (integer, longs, and pointers are 32-bit) and

a 64-bit program is LP64 (longs and pointers are 64-bit).

There are a number of driver entry points such as ioctl(9E) and mmap(9E) where it is necessary to identify the C

Language Type Model of the user-mode originator of an kernel

event. For example any data which flows between programs and

the device driver or vice versa need to be identical in for-

mat. A 64-bit device driver may need to modify the format of

the data before sending it to a 32-bit application.

ddi_model_convert_from() is used to determine if data that

is passed between the device driver and the application

requires reformatting to any non-native data model.

RETURN VALUES

DDI_MODEL_ILP32 A conversion to/from ILP32 is necessary.

DDI_MODEL_NONE No conversion is necessary. Current

thread and driver use the same data model.

CONTEXT

ddi_model_convert_from() can be called from any context.

EXAMPLES

Example 1 : Using ddi_model_convert_from() in the ioctl()

entry point to support both 32-bit and 64-bit applications.

SunOS 5.11 Last change: 8 Feb 2001 1

Kernel Functions for Drivers ddi_model_convert_from(9F)

The following is an example how to use

ddi_model_convert_from() in the ioctl() entry point to sup-

port both 32-bit and 64-bit applications.

struct passargs32 { int len;

caddr32_t addr;

}; struct passargs { int len;

caddr_t addr;

};

xxioctl(dev_t dev, int cmd, intptr_t arg, int mode,

cred_t *credp, int *rvalp) {

struct passargs pa;

switch (ddi_model_convert_from(mode & FMODELS)) {

case DDI_MODEL_ILP32:

{ struct passargs32 pa32;

ddi_copyin(arg, &pa32, sizeof (struct passargs32), mode);

pa.len = pa32.len; pa.address = pa32.address; break; }

case DDI_MODEL_NONE:

ddi_copyin(arg, &pa, sizeof (struct passargs), mode);

break; }

do_ioctl(&pa);

.... }

SEE ALSO

ioctl(9E), mmap(9E), ddi_mmap_get_model(9F)

Writing Device Drivers

SunOS 5.11 Last change: 8 Feb 2001 2




Contact us      |      About us      |      Term of use      |       Copyright © 2000-2019 MyWebUniversity.com ™