Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Driver Entry Pointsprop_op(9E)


NAME

 prop_op - report driver property information

SYNOPSIS

 
#include <sys/types.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
int prefixprop_op(dev_t dev, dev_info_t *dip, ddi_prop_op_t prop_op, int flags, char *name, caddr_t valuep , int *lengthp);

INTERFACE LEVEL

 

Solaris DDI specific (Solaris DDI). This entry point is required, but it can be ddi_prop_op(9F).

ARGUMENTS

 
dev
Device number associated with this device.
dip
A pointer to the device information structure for this device.
prop_op
Property operator. Valid operators are:
PROP_LEN
Get property length only. (valuep unaffected).
PROP_LEN_AND_VAL_BUF
Get length and value into caller's buffer. (valuep used as input).
PROP_LEN_AND_VAL_ALLOC
Get length and value into allocated buffer. (valuep returned as pointer to pointer to allocated buffer).
flags
The only possible flag value is:
DDI_PROP_DONTPASS
Do not pass request to parent if property not found.
name
Pointer to name of property to be interrogated.
valuep
If prop_op is PROP_LEN_AND_VAL_BUF, this should be a pointer to the user's buffer. If prop_op is PROP_LEN_AND_VAL_ALLOC, this should be the address of a pointer.
lengthp
On exit, *lengthp will contain the property length. If prop_op is PROP_LEN_AND_VAL_BUF then lengthp should point to an int that contains the length of caller's buffer, before calling prop_op().

DESCRIPTION

 

prop_op() is an entry point which reports the values of certain properties of the driver or device to the system. Each driver must have a prefix prop_op entry point, but most drivers that do not need to create or manage their own properties can use ddi_prop_op() for this entry point. Then the driver can use ddi_prop_update(9F) to create properties for its device.

RETURN VALUES

 

prop_op() should return:

DDI_PROP_SUCCESS
Property found and returned.
DDI_PROP_NOT_FOUND
Property not found.
DDI_PROP_UNDEFINED
Prop explicitly undefined.
DDI_PROP_NO_MEMORY
Property found, but unable to allocate memory. lengthp has the correct property length.
DDI_PROP_BUF_TOO_SMALL
Property found, but the supplied buffer is too small. lengthp has the correct property length.

EXAMPLES

 Example 1. Using prop_op to Report Property Information
 

In the following example, prop_op() intercepts requests for the temperature property. The driver tracks changes to temperature using a variable in the state structure in order to avoid frequent calls to ddi_prop_update(9F). The temperature property is only updated when a request is made for this property. It then uses the system routine ddi_prop_op(9F) to process the property request. If the property request is not specific to a device, the driver does not intercept the request. This is indicated when the value of the dev parameter is equal to DDI_DEV_T_ANY.
 
int temperature;	/* current device temperature */
 .
 .
 .
static int
xxprop_op(dev_t dev, dev_info_t *dip, ddi_prop_op_t prop_op,
     int flags, char *name, caddr_t valuep, int *lengthp)
{
			int  instance;
			struct xxstate *xsp;
     if (dev == DDI_DEV_T_ANY)
				goto skip;
     instance = getminor(dev);
     xsp = ddi_get_soft_state(statep, instance);
     if (xsp == NULL)
				return (DDI_PROP_NOT_FOUND);
     if (strcmp(name, "temperature") == 0) {
				ddi_prop_update_int(dev, dip, "temperature", temperature);
     }
		       /*	other cases...	*/
     skip:
     return (ddi_prop_op(dev, dip, prop_op, flags, name, valuep, lengthp));
}

SEE ALSO

 

Intro(9E), ddi_prop_op(9F), ddi_prop_update(9F)

Writing Device Drivers


SunOS 5.9Go To TopLast Changed 8 Jul 1996

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.