# # $Header: /cvsroot/devicetool/Solaris-DeviceTree/lib/Solaris/DeviceTree/Libdevinfo/MinorNode.pm,v 1.5 2003/12/09 13:04:47 honkbude Exp $ # package Solaris::DeviceTree::Libdevinfo::MinorNode; use 5.006; use strict; use warnings; use Solaris::DeviceTree::Libdevinfo::Impl; our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker =pod =head1 NAME Solaris::DeviceTree::Libdevinfo::MinorNode - Minor node of the Solaris devicetree =head1 SYNOPSIS use Solaris::DeviceTree::Libdevinfo; $tree = new Solaris::DeviceTree::Libdevinfo; @disks = $tree->find_nodes( type => 'disk' ); @minor = @disks->minor_nodes; $name = $minor->name $path = $minor->devfs_path ($majnum,$minnum) = $minor->devt $type = $minor->nodetype $spectype = $minor->spectype if( $minor->is_raw_device ) { ... } if( $minor->is_block_device ) { ... } $treenode = $minor->node =head1 DESCRIPTION This class implements a minor node in the libdevinfo devicetree. This is an internal class to C. There should be no need to generate instances of this class in an application explicitly. Instances are generated only from L. =head1 METHODS The following methods are available: =cut # The constructor takes a SWIG-pointer to the C data structure # of a minor node C and a backreference to the # C object which generates this # instance. sub new { my ($class, $minor, $node) = @_; my $this = bless { _minor => $minor, _node => $node, # if we need infos about the upper node }, ref( $class ) || $class; return $this; } =pod =head2 name Return the name of the minor node. This is used e.g. as suffix of the device filename. For disks this is something like ':a' or ':a,raw'. =cut sub name { my $this = shift; return di_minor_name( $this->{_minor} ); } =pod =head2 devfs_path Return the complete physical path including the minor node =cut sub devfs_path { my $this = shift; return $this->node->devfs_path . ":" . $this->name; } =pod =head2 devt Returns the major and minor device number as a list for the node. The major numbers should be the same for all minor nodes returned by a L node. =cut sub devt { my $this = shift; my $devt = di_minor_devt( $this->{_minor} ); my ($major, $minor) = devt_majorminor( $devt ); return ($major, $minor); } =pod =head2 nodetype Returns the nodetype of the minor node. Legal return values can be taken from Csys/sunddi.hE>. With this call you can differentiate between pseudo nodes, displays and stuff. =cut sub nodetype { my $this = shift; return di_minor_nodetype( $this->{_minor} ); } =pod =head2 spectype Returns the type of the minor node. Returns raw for a raw device block for a block device =cut sub spectype { my $this = shift; my $result; my $spectype = di_minor_spectype( $this->{_minor} ); if( $spectype == $S_IFCHR ) { $result = "raw"; } elsif( $spectype == $S_IFBLK ) { $result = "block"; } return $result; } =pod =head2 is_raw_device Returns true if the minor node is a raw device. =cut sub is_raw_device { my $this = shift; return di_minor_spectype( $this->{_minor} ) == $S_IFCHR; } =pod =head2 is_block_device Returns true if the minor node is a block device. =cut sub is_block_device { my $this = shift; return di_minor_spectype( $this->{_minor} ) == $S_IFBLK; } =pod =head2 node Returns the associated L node. One treenode can (and usually does) have multiple minor nodes. =cut sub node { my $this = shift; return $this->{_node}; } =pod =head1 EXAMPLES =head1 AUTHOR Copyright 1999-2003 Dagobert Michelsen. =head1 SEE ALSO L, L. =cut 1;