ddi_peek man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

ddi_peek(9F)		 Kernel Functions for Drivers		  ddi_peek(9F)

NAME
       ddi_peek,  ddi_peek8,  ddi_peek16,  ddi_peek32,	ddi_peek64, ddi_peekc,
       ddi_peeks, ddi_peekl, ddi_peekd - read a value from a location

SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int ddi_peek8(dev_info_t *dip, int8_t *addr, int8_t *valuep);

       int ddi_peek16(dev_info_t *dip, int16_t *addr, int16_t *valuep);

       int ddi_peek32(dev_info_t *dip, int32_t *addr, int32_t *valuep);

       int ddi_peek64(dev_info_t *dip, int64_t *addr, int64_t *valuep);

INTERFACE LEVEL
       Solaris DDI  specific  (Solaris	DDI).  The  ddi_peekc(),  ddi_peeks(),
       ddi_peekl(), and ddi_peekd() functions are obsolete. Use, respectively,
       ddi_peek8(), ddi_peek16(), ddi_peek32(), and ddi_peek64(), instead.

PARAMETERS
       dip	A pointer to the device's dev_info structure.

       addr	Virtual address of the location to be examined.

       valuep	Pointer to a location to hold the result. If a null pointer is
		specified,  then  the value read from the location will simply
		be discarded.

DESCRIPTION
       These routines cautiously attempt to read a value from a specified vir‐
       tual  address,  and  return  the	 value to the caller, using the parent
       nexus driver to assist in the process where necessary.

       If the address is not valid, or the value cannot	 be  read  without  an
       error occurring, an error code is returned.

       The  routines  are most useful when first trying to establish the pres‐
       ence of a device on the system in a driver's  probe(9E)	or  attach(9E)
       routines.

RETURN VALUES
       DDI_SUCCESS     The value at the given virtual address was successfully
		       read, and if valuep is non-null, *valuep will have been
		       updated.

       DDI_FAILURE     An  error  occurred  while trying to read the location.
		       *valuep is unchanged.

CONTEXT
       These functions can be called from user, interrupt, or kernel context.

EXAMPLES
       Example 1: Checking to see that the status  register  of	 a  device  is
       mapped into the kernel address space:

       if (ddi_peek8(dip, csr, (int8_t *)0) != DDI_SUCCESS) {
	       cmn_err(CE_WARN, "Status register not mapped");
	       return (DDI_FAILURE);
       }

       Example 2: Reading and logging the device type of a particular device:

       int
       xx_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
       {
	      ...
	     /* map device registers */
	      ...

	     if (ddi_peek32(dip, id_addr, &id_value) != DDI_SUCCESS) {
		     cmn_err(CE_WARN, "%s%d: cannot read device identifier",
		       ddi_get_name(dip), ddi_get_instance(dip));
		     goto failure;
	     } else
		     cmn_err(CE_CONT, "!%s%d: device type 0x%x\n",
		       ddi_get_name(dip), ddi_get_instance(dip), id_value);
		  ...
		  ...

	     ddi_report_dev(dip);
	     return (DDI_SUCCESS);

       failure:
	     /* free any resources allocated */
	     ...
	     return (DDI_FAILURE);
       }

SEE ALSO
       attach(9E), probe(9E), ddi_poke(9F)

       Writing Device Drivers

NOTES
       The  functions  described  in this manual page previously used symbolic
       names which specified their data access size; the function  names  have
       been  changed so they now specify a fixed-width data size. See the fol‐
       lowing table for the new name equivalents:

       ┌───────────────────────────────────────────────────────────┐
       │Previous Name		      New Name			   │
       │	 ddi_peekc	      ddi_peek8			   │
       │	 ddi_peeks	      ddi_peek16		   │
       │	 ddi_peekl	      ddi_peek32		   │
       │	 ddi_peekd	      ddi_peek64		   │
       └───────────────────────────────────────────────────────────┘

SunOS 5.10			  16 Jan 2006			  ddi_peek(9F)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net