2 .\" Copyright (c) 2001 Sun Microsystems, Inc.
3 .\" All Rights Reserved.
4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
7 .TH DDI_MMAP_GET_MODEL 9F "Feb 8, 2001"
9 ddi_mmap_get_model \- return data model type of current thread
14 #include <sys/sunddi.h>
18 \fBuint_t\fR \fBddi_mmap_get_model\fR(\fBvoid\fR);
24 Solaris DDI specific (Solaris DDI).
28 \fBddi_mmap_get_model()\fR returns the \fIC\fR Language Type Model which the
29 current thread expects. \fBddi_mmap_get_model()\fR is used in combination with
30 \fBddi_model_convert_from\fR(9F) in the \fBmmap\fR(9E) driver entry point to
31 determine whether there is a data model mismatch between the current thread and
32 the device driver. The device driver might have to adjust the shape of data
33 structures before exporting them to a user thread which supports a different
39 \fB\fBDDI_MODEL_ILP32\fR \fR
42 Current thread expects 32-bit \fI(ILP32)\fR semantics.
48 \fB\fBDDI_MODEL_LP64\fR \fR
51 Current thread expects 64-bit \fI(LP64)\fR semantics.
57 \fB\fBDDI_FAILURE\fR \fR
60 The \fBddi_mmap_get_model()\fR function was not called from the \fBmmap\fR(9E)
67 The \fBddi_mmap_get_model()\fR function can only be called from the
68 \fBmmap\fR(9E) driver entry point.
71 \fBExample 1 \fR: Using \fBddi_mmap_get_model()\fR
74 The following is an example of the \fBmmap\fR(9E) entry point and how to
75 support 32-bit and 64-bit applications with the same device driver.
89 xxmmap(dev_t dev, off_t off, int prot) {
90 struct data dtc; /* a local copy for clash resolution */
91 struct data *dp = (struct data *)shared_area;
93 switch (ddi_model_convert_from(ddi_mmap_get_model())) {
98 da32p = (struct data32 *)shared_area;
100 dp->len = da32p->len;
101 dp->address = da32->address;
107 /* continues along using dp */
116 \fBmmap\fR(9E), \fBddi_model_convert_from\fR(9F)
119 \fIWriting Device Drivers\fR