ddi_peek man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana 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 sim‐
		 ply 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.11			  16 Jan 2006			  ddi_peek(9F)
[top]

List of man pages available for OpenIndiana

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