ldi_open_by_name man page on SmartOS

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

LDI_OPEN_BY_DEV(9F)					   LDI_OPEN_BY_DEV(9F)

NAME
       ldi_open_by_dev,	 ldi_open_by_name, ldi_open_by_devid, ldi_close - open
       and close devices

SYNOPSIS
       #include <sys/sunldi.h>

       int ldi_open_by_dev(dev_t *devp, int otyp, int flag, cred_t  *cr,
	    ldi_handle_t *lhp, ldi_ident_t li);

       int ldi_open_by_name(char  *pathname, int flag, cred_t *cr,
	    ldi_handle_t *lhp, ldi_ident_t li);

       int ldi_open_by_devid(ddi_devid_t devid, char  *minor_name, int flag,
	    cred_t *cr, ldi_handle_t *lhp, ldi_ident_t li);

       int ldi_close(ldi_handle_t lh, int flag, cred_ t *cr);

PARAMETERS
       lh
		     Layered handle

       lhp
		     Pointer to a layered handle that is returned upon a  suc‐
		     cessful open.

       li
		     LDI identifier.

       cr
		     Pointer  to  the  credential  structure  used  to	open a
		     device.

       devp
		     Pointer to a device number.

       pathname
		     Pathname to a device.

       devid
		     Device ID.

       minor_name
		     Minor device node name.

       otyp
		     Flag passed to the driver indicating which	 interface  is
		     open. Valid settings are:

		     OTYP_BLK
				 Open the device block interface.

		     OTYP_CHR
				 Open the device character interface.

		     Only  one	OTYP  flag  can	 be specified. To open streams
		     devices, specify OTYP_CHR.

       flag
		     Bit field that instructs the driver on how	 to  open  the
		     device. Valid settings are:

		     FEXCL
				Open  the  device  with exclusive access; fail
				all other attempts to open the device.

		     FNDELAY
				Open the device and  return  immediately.   Do
				not block the open even if something is wrong.

		     FREAD
				Open the device with read-only permission. (If
				ORed with FWRITE, allow both  read  and	 write
				access).

		     FWRITE
				Open  a	 device with write-only permission (if
				ORed with FREAD,  then	allow  both  read  and
				write access).

		     FNOCTTY
				Open  the  device.  If the device is a tty, do
				not attempt to open it as  a  session-control‐
				ling tty.

DESCRIPTION
       The ldi_open_by_dev(), ldi_open_by_name() and ldi_open_by_devid() func‐
       tions allow a caller to open a block,  character,  or  streams  device.
       Upon  a successful open, a layered handle to the device is returned via
       the layered handle pointed to by lhp.  The  ldi	identifier  passed  to
       these functions is previously allocated with ldi_ident_from_stream(9F),
       ldi_ident_from_dev(9F), and ldi_ident_from_dip(9F).

       The ldi_open_by_dev() function opens a device specified	by  the	 dev_t
       pointed	to by devp.  Upon successful open, the caller should check the
       value of the dev_t to see if it	has  changed.  (Cloning	 devices  will
       change  this value during opens.)   When opening a streams device, otyp
       must be OTYP_CHR.

       The ldi_open_by_devid() function opens a device by  devid.  The	caller
       must specify the minor node name to open.

       The ldi_open_by_name() function opens a device by pathname. Pathname is
       a null terminated string in the kernel address space. Pathname must  be
       an  absolute  path,  meaning that it must begin with '/'. The format of
       the pathname supplied to this function is either a /devices path or any
       other  filesystem path to a device node. Opens utilizing /devices paths
       are supported before root is mounted. Opens utilizing other  filesystem
       paths to device nodes are supported only if root is already mounted.

       The ldi_close() function closes a layered handle that was obtained with
       either ldi_open_by_dev(), ldi_open_by_name(),  or  ldi_open_by_devid().
       After  ldi_close()  returns  the layered handle, the lh that was previ‐
       ously passed in is no longer valid.

RETURN VALUES
       The ldi_close() function returns 0 for success. EINVAL is returned  for
       invalid	input  parameters.  Otherwise,	any  other error number may be
       returned by the device.

       The ldi_open_by_dev() and ldi_open_by_devid() functions return  0  upon
       success. If a failure occurs before the device is open, possible return
       values are shown	 below.	 Otherwise  any	 other	error  number  may  be
       returned by the device.

       EINVAL
		 Invalid input parameters.

       ENODEV
		 Requested device does not exist.

       ENXIO
		 Unsupported device operation or access mode.

       The  ldi_open_by_name()	function  returns 0 upon success. If a failure
       occurs before the device is open,  possible  return  values  are	 shown
       below. Otherwise any other error number may be returned by the device.

       EINVAL
		 Invalid input parameters.

       ENODEV
		 Requested device path does not exist.

       EACCES
		 Search	 permission  is denied on a component of the path pre‐
		 fix, or the file exists and the permissions specified	by  cr
		 are denied.

       ENXIO
		 Unsupported device operation or access mode.

CONTEXT
       These functions may be called from user or kernel context.

       These functions should not be called from a device's attach, detach, or
       power entry point. This could result in a system crash or deadlock.

SEE ALSO
       scsi_vhci(7D),	  ldi_ident_from_dev(9F),      ldi_ident_from_dip(9F),
       ldi_ident_from_stream(9F)

NOTES
       Use   only   OTYP_CHR   or   OTYP_BLK   options	 when	you   use  the
       ldi_open_by_dev() and ldi_open_by_devid() functions to open  a  device.
       Other flags, including OTYP_LYR, have been deprecated and should not be
       used with these interfaces.

       The caller should be aware of cases when multiple  paths	 to  a	single
       device	may   exist.   (This  can  occur  for  scsi  disk  devices  if
       scsi_vhci(7D)) is disabled or a disk  is	 connected  to	multiple  con‐
       trollers not supported by scsi_vhci(7D).

       In these cases, ldi_open_by_devid() returns a device handle that corre‐
       sponds to a  particular path to a target device. This path may  not  be
       the  same across multiple calls to ldi_open_by_devid().	Device handles
       associated  with the same device but different access paths should have
       different filesystem device paths and dev_t values.

       In  the	cases where multiple paths to a device exist and access to the
       device has not been virtualized via MPXIO (as with  scsi	 disk  devices
       not  accessed  via  scsi_vhci(7D)),  the	 LDI does not provide any path
       fail-over capabilities.	If the caller wishes to do their own path man‐
       agement	and  failover they should open all available paths to a device
       via ldi_open_by_name().

				  Aug 9, 2004		   LDI_OPEN_BY_DEV(9F)
[top]

List of man pages available for SmartOS

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