Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

prop_op(9e) [v7 man page]

prop_op(9E)							Driver Entry Points						       prop_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: "small and bold">DDI_PROP_SUCCESProperty 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.10 8 Jul 1996 prop_op(9E)
Man Page