summaryrefslogtreecommitdiff
path: root/doc/spec/hal-spec.html
diff options
context:
space:
mode:
authorDavid Zeuthen <david@fubar.dk>2006-02-10 04:13:17 +0000
committerDavid Zeuthen <david@fubar.dk>2006-02-10 04:13:17 +0000
commitfa99416f3393fa0dd17e3445f95eb0a4cb77b5c2 (patch)
treeca1283c972ae0896cce40482364aa19a80133298 /doc/spec/hal-spec.html
parent884f6af8a905ba2b9ced20bc05c82705fef11084 (diff)
update generated html
Diffstat (limited to 'doc/spec/hal-spec.html')
-rw-r--r--doc/spec/hal-spec.html12166
1 files changed, 11130 insertions, 1036 deletions
diff --git a/doc/spec/hal-spec.html b/doc/spec/hal-spec.html
index 91df23bb..0589c342 100644
--- a/doc/spec/hal-spec.html
+++ b/doc/spec/hal-spec.html
@@ -1,7 +1,676 @@
-HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
- david@fubar.dk
- IntroductionAbout
- This document concerns the specification of HAL which is a
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>HAL 0.5.7 Specification</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
+><BODY
+CLASS="book"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="BOOK"
+><A
+NAME="index"
+></A
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="title"
+><A
+NAME="AEN2"
+>HAL 0.5.7 Specification</A
+></H1
+><H3
+CLASS="author"
+><A
+NAME="AEN7"
+></A
+>David Zeuthen</H3
+><DIV
+CLASS="affiliation"
+><DIV
+CLASS="address"
+><P
+CLASS="address"
+><br>
+ &nbsp;&nbsp;&nbsp;&nbsp;<CODE
+CLASS="email"
+>&#60;<A
+HREF="mailto:david@fubar.dk"
+>david@fubar.dk</A
+>&#62;</CODE
+><br>
+ &nbsp;&nbsp;</P
+></DIV
+></DIV
+><SPAN
+CLASS="releaseinfo"
+>Version 0.5.7<BR></SPAN
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+><A
+HREF="#introduction"
+>Introduction</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#AEN15"
+>About</A
+></DT
+><DT
+><A
+HREF="#AEN24"
+>Document History</A
+></DT
+><DT
+><A
+HREF="#AEN46"
+>Acknowledgements</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#overview"
+>Overview</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#ov_halarch"
+>Architecture of HAL</A
+></DT
+><DT
+><A
+HREF="#ov_hal_linux26"
+>HAL on Linux 2.6</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#AEN108"
+>Device Objects</A
+></DT
+><DT
+><A
+HREF="#device-capabilities"
+>Device Capabilities</A
+></DT
+><DT
+><A
+HREF="#using-devices"
+>Using devices</A
+></DT
+><DT
+><A
+HREF="#device-properties"
+>Device Properties</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#properties-metadata"
+>Metadata Properties</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#device-properties-info"
+><TT
+CLASS="literal"
+>info</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-linux"
+><TT
+CLASS="literal"
+>linux</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#properties-bus"
+>Physical Properties</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#device-properties-pci"
+><TT
+CLASS="literal"
+>pci</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-serialif"
+><TT
+CLASS="literal"
+>serial</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-usb"
+><TT
+CLASS="literal"
+>usb_device</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-usbif"
+><TT
+CLASS="literal"
+>usb</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-platform"
+><TT
+CLASS="literal"
+>platform</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ide-host"
+><TT
+CLASS="literal"
+>ide_host</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ide"
+><TT
+CLASS="literal"
+>ide</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-scsi_host"
+><TT
+CLASS="literal"
+>scsi_host</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-scsi"
+><TT
+CLASS="literal"
+>scsi</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ieee1394_host"
+><TT
+CLASS="literal"
+>ieee1394_host</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ieee1394_node"
+><TT
+CLASS="literal"
+>ieee1394_node</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ieee1394"
+><TT
+CLASS="literal"
+>ieee1394</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-mmc_host"
+><TT
+CLASS="literal"
+>mmc_host</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-mmc"
+><TT
+CLASS="literal"
+>mmc</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ccw"
+><TT
+CLASS="literal"
+>ccw</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ccwgroup"
+><TT
+CLASS="literal"
+>ccwgroup</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-iucv"
+><TT
+CLASS="literal"
+>iucv</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-block"
+><TT
+CLASS="literal"
+>block</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#properties-functional"
+>Functional Properties</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#device-properties-volume"
+><TT
+CLASS="literal"
+>volume</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-kernel"
+><TT
+CLASS="literal"
+>system</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-volume-disc"
+><TT
+CLASS="literal"
+>volume.disc</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-storage"
+><TT
+CLASS="literal"
+>storage</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-storage-cdrom"
+><TT
+CLASS="literal"
+>storage.cdrom</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-net"
+><TT
+CLASS="literal"
+>net</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-net-80203"
+><TT
+CLASS="literal"
+>net.80203</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-net-80211"
+><TT
+CLASS="literal"
+>net.80211</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-input"
+><TT
+CLASS="literal"
+>input</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-pcmcia_socket"
+><TT
+CLASS="literal"
+>pcmcia_socket namespace</TT
+></A
+></DT
+><DT
+><A
+HREF="#device-properties-printer"
+><TT
+CLASS="literal"
+>printer</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-portable_audio_player"
+><TT
+CLASS="literal"
+>portable_audio_player</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-alsa"
+><TT
+CLASS="literal"
+>alsa</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-oss"
+><TT
+CLASS="literal"
+>oss</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-camera"
+><TT
+CLASS="literal"
+>camera</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-laptop-panel"
+><TT
+CLASS="literal"
+>laptop_panel</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-ac_adaptor"
+><TT
+CLASS="literal"
+>ac_adaptor</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-battery"
+><TT
+CLASS="literal"
+>battery</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-button"
+><TT
+CLASS="literal"
+>button</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-processor"
+><TT
+CLASS="literal"
+>processor</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-display_device"
+><TT
+CLASS="literal"
+>display_device</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-sensor"
+><TT
+CLASS="literal"
+>sensor</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-power-management"
+><TT
+CLASS="literal"
+>power_management</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-tape"
+><TT
+CLASS="literal"
+>tape</TT
+> namespace</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#properties-policy"
+>Policy Properties</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#device-properties-storage-policy-default"
+><TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-storage-policy"
+><TT
+CLASS="literal"
+>storage.policy</TT
+> namespace</A
+></DT
+><DT
+><A
+HREF="#device-properties-volume-policy"
+><TT
+CLASS="literal"
+>volume.policy</TT
+> namespace</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+><A
+HREF="#spec-device-info"
+>Device Information Files</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#fdi-facts"
+>Facts about devices</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#fdi-example-mp3player"
+>Example: MP3 player</A
+></DT
+><DT
+><A
+HREF="#fdi-example-camera"
+>Example: Digital Still Camera</A
+></DT
+><DT
+><A
+HREF="#fdi-example-6in1"
+>Example: Card Reader</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#fdi-policy"
+>Policy settings for devices</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#fdi-example-mountsetting"
+>Storage Devices</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+><A
+HREF="#callouts"
+>Callouts</A
+></DT
+><DT
+><A
+HREF="#dbus-api"
+>D-BUS Network API</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#AEN3718"
+>Interface org.freedesktop.Hal.Manager</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#AEN3729"
+>Example</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#AEN3737"
+>Interface org.freedesktop.Hal.Device</A
+></DT
+></DL
+></DD
+><DT
+><A
+HREF="#enforcing-policy"
+>Enforcing Policy</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#enforcing-stor-vol"
+>Storage Devices</A
+></DT
+><DD
+><DL
+><DT
+><A
+HREF="#stor-vol-policy"
+>Policy for Volumes and Storage devices</A
+></DT
+><DT
+><A
+HREF="#enforcing-storage-fstab"
+>File systems file</A
+></DT
+><DT
+><A
+HREF="#enforcing-storage-locking"
+>Disabling policy agents</A
+></DT
+></DL
+></DD
+></DL
+></DD
+></DL
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="introduction"
+></A
+>Introduction</H1
+><DIV
+CLASS="sect1"
+><H2
+CLASS="sect1"
+><A
+NAME="AEN15"
+>About</A
+></H2
+><P
+>&#13; This document concerns the specification of HAL which is a
piece of software that provides a view of the various hardware
attached to a system. In addition to this, HAL keeps detailed
metadata for each piece of hardware and provide hooks such
@@ -9,23 +678,34 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
in the hardware configuration in order to maintain system
policy.
-
-
+ </P
+><P
+>&#13;
HAL represents a piece of hardware as a
- device object. A device object is
+ <I
+CLASS="emphasis"
+>device object</I
+>. A device object is
identified by a unique identifer and carries a set of
- key/value paris referred to as device
- properties. Some properties are derived from the
- actual hardware, some are merged from device
- information files and some are related to the
+ key/value paris referred to as <I
+CLASS="emphasis"
+>device
+ properties</I
+>. Some properties are derived from the
+ actual hardware, some are merged from <I
+CLASS="emphasis"
+>device
+ information files</I
+> and some are related to the
actual device configuration. This document specifies the set
of device properties and gives them well-defined meaning. This
enable system and desktop level components to distinguish
between the different device objects and discover and
configure devices based on these properties.
-
-
+ </P
+><P
+>&#13;
HAL provides an easy-to-use API through D-BUS which is an IPC
framework that, among other things, provides a system-wide
message-bus that allows applications to talk to one
@@ -34,8 +714,9 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
message-bus when devices are added and removed as well as when
properties on a device are changing.
-
-
+ </P
+><P
+>&#13;
The most important goal of HAL is to provide plug-and-play
facilities for UNIX-like desktops with focus on providing a
rich and extensible description of device characteristics and
@@ -44,37 +725,152 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
implemented on many UNIX-like systems. The major focus,
initially, is systems running the Linux 2.6 series kernels.
- Document HistoryVersionDateComment0.1September 28, 2003Still important things missing. Released with version
- 0.1 of the implementation0.2December 22, 2003A major rewrite.0.5.7Current draft from CVSAcknowledgements
-
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN24"
+>Document History</A
+></H2
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN26"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Version</TH
+><TH
+>Date</TH
+><TH
+>Comment</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+>0.1</TD
+><TD
+>September 28, 2003</TD
+><TD
+>Still important things missing. Released with version
+ 0.1 of the implementation</TD
+></TR
+><TR
+><TD
+>0.2</TD
+><TD
+>December 22, 2003</TD
+><TD
+>A major rewrite.</TD
+></TR
+><TR
+><TD
+>0.5.7</TD
+><TD
+>&nbsp;</TD
+><TD
+>Current draft from CVS</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN46"
+>Acknowledgements</A
+></H2
+><P
+>&#13;
Havoc Pennington's article
- ''Making
- Hardware Just Work'' motivated this
+ <A
+HREF="http://www.ometer.com/hardware.html"
+TARGET="_top"
+>''Making
+ Hardware Just Work''</A
+> motivated this
work. The specification and software would not exist
without all the useful ideas, suggestions, comments and patches
from the
- Free Desktop and
- HAL
+ <A
+HREF="http://freedesktop.org/mailman/listinfo/xdg"
+TARGET="_top"
+>Free Desktop</A
+> and
+ <A
+HREF="http://freedesktop.org/mailman/listinfo/hal"
+TARGET="_top"
+>HAL</A
+>
mailing lists.
-
-
+ </P
+><P
+>&#13;
All trademarks mentioned belong to their respective owners.
- OverviewArchitecture of HAL
-
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="overview"
+></A
+>Overview</H1
+><DIV
+CLASS="sect1"
+><H2
+CLASS="sect1"
+><A
+NAME="ov_halarch"
+>Architecture of HAL</A
+></H2
+><P
+>&#13;
The HAL consists of a number of components as outlined in the
diagram below. Note that this diagram is high-level and doesn't
capture implementation details.
-
-
-
-
+ </P
+><P
+>&#13; <IMG
+SRC="hal-arch.png">
+ </P
+><P
+>&#13;
Details on each component
-
- HAL daemon
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <I
+CLASS="emphasis"
+>HAL daemon</I
+></P
+><P
+>
A system-wide daemon that maintains a persistent database of
device objects. The daemon is also responsible for merging
@@ -86,8 +882,16 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
level components through callouts and session level
components using the D-BUS interface.
-
- Applications
+ </P
+></LI
+><LI
+><P
+>&#13; <I
+CLASS="emphasis"
+>Applications</I
+></P
+><P
+>
This represents the end consumers of the HAL and comprises
both applications that need to search for a device, but
@@ -98,8 +902,9 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
through HAL, to interact with the device through the
kernel as usual.
-
-
+ </P
+><P
+>&#13;
In addition, this group include desktop environments such
as GNOME or KDE. Specifically, using HAL, desktop
environments may include session-level daemons enforcing
@@ -111,77 +916,183 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
information about network devices, mounting removable
storage and so on.
-
-
+ </P
+><P
+>&#13;
Note that several desktop sessions may be active on the
same system; it is the responsibility of session-level
software to arbitrate the device access between sessions.
-
- Callouts
+ </P
+></LI
+><LI
+><P
+>&#13; <I
+CLASS="emphasis"
+>Callouts</I
+></P
+><P
+>
Callouts are programs invoked when the device object list
is modified As such, callouts can be used to maintain
system-wide policy (that may be specific to the particular
OS) such as changing permissions on device nodes, updating
- the systemwide /etc/fstab file or
+ the systemwide <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file or
configuring the networking subsystem.
-
-
-
+ </P
+></LI
+></UL
+>
+ </P
+><P
+>&#13;
The HAL uses D-BUS to provide a ''network API'' to
applications. As D-BUS is designed to be language independent,
potentially many languages / runtime systems will be able to
easily access the services offered by HAL. The D-BUS API is
- detailed in . Note that HAL doesn't
+ detailed in <A
+HREF="#dbus-api"
+>the Chapter called <I
+>D-BUS Network API</I
+></A
+>. Note that HAL doesn't
enforce any policy at all, this is left for desktop environments
and operating systems vendors to implement. However, to ensure
interoperability between operating systems and desktop
environments, recommendations and best practises on how to
- enforce policy is discussed in .
-
- HAL on Linux 2.6
-
+ enforce policy is discussed in <A
+HREF="#enforcing-policy"
+>the Chapter called <I
+>Enforcing Policy</I
+></A
+>.
+
+ </P
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="ov_hal_linux26"
+>HAL on Linux 2.6</A
+></H2
+><P
+>&#13;
On a Linux 2.6 system HAL is implemented as shown in the diagram
below:
-
-
-
-
+ </P
+><P
+>&#13; <IMG
+SRC="hal-linux26.png">
+ </P
+><P
+>&#13;
Highlights
-
- HAL depends on the udev and
- linux-hotplug packages
-
- The diagram shows an example callout program,
- fstab-sync, that creates/destroys
- mount points and modifies the /etc/fstab
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; HAL depends on the <TT
+CLASS="literal"
+>udev</TT
+> and
+ <TT
+CLASS="literal"
+>linux-hotplug</TT
+> packages
+ </P
+></LI
+><LI
+><P
+>&#13; The diagram shows an example callout program,
+ <TT
+CLASS="literal"
+>fstab-sync</TT
+>, that creates/destroys
+ mount points and modifies the <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
file accordingly whenever storage devices are added or
removed.
-
- A session-level daemon, *-volume-manager,
+ </P
+></LI
+><LI
+><P
+>&#13; A session-level daemon, <TT
+CLASS="literal"
+>*-volume-manager</TT
+>,
for mounting storage devices is shown. This piece of software
- depends on a properly updated /etc/fstab
- file and a setuid mount(1) binary that
+ depends on a properly updated <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
+ file and a setuid <TT
+CLASS="literal"
+>mount(1)</TT
+> binary that
allows an unprivileged user to mount devices marked with option
- user in the /etc/fstab file.
-
- The fstab-sync and
- *-volume-manager programs are only
+ <TT
+CLASS="literal"
+>user</TT
+> in the <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file.
+ </P
+></LI
+><LI
+><P
+>&#13; The <TT
+CLASS="literal"
+>fstab-sync</TT
+> and
+ <TT
+CLASS="literal"
+>*-volume-manager</TT
+> programs are only
examples on how to enforce policy and are not part of HAL
proper. An OS vendor may choose to enforce policy in a
different way e.g. he might want to ignore the
- /etc/fstab file and mount storage volumes
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file and mount storage volumes
in the callout, run a daemon with sufficient privileges
or use another setuid mount wrapper.
- See for more details.
-
-
- Device Objects
-
+ See <A
+HREF="#enforcing-policy"
+>the Chapter called <I
+>Enforcing Policy</I
+></A
+> for more details.
+ </P
+></LI
+></UL
+>
+
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="AEN108"
+></A
+>Device Objects</H1
+><P
+>&#13;
It is important to precisely define the term HAL device
object. It's actually a bit blurry to define in general, it
includes what most UNIX-like systems consider first class
@@ -200,8 +1111,9 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
users normally understand as a single piece of hardware;
a device object represents the smallest addressable unit.
-
-
+ </P
+><P
+>&#13;
Device objects in HAL are organised on a by-connection basis,
e.g. for a given device object X it is possible to find the
device object Y where X is attached to Y. This gives structure
@@ -215,33 +1127,61 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
users are interested in; they are merely used as glue to build
the device tree.
-
-
+ </P
+><P
+>&#13;
In addition to provide information about what kind of hardware
a device object represents (such as a PCI or USB device) and
how to address it, HAL merges information about the functional
interfaces the OS kernel provides in order to use the device;
in most cases this is represented on the device object as a
string property with the name of the special device file in
- /dev. In addition to the special device
+ <TT
+CLASS="literal"
+>/dev</TT
+>. In addition to the special device
file, a number of other useful properties are merged. This
means that both hardware and functional properties are on the
same device object, which is very useful for an application
programmer. For example, an application might query HAL for
the device object that exports the special device file
- /dev/input/mouse2 and learn that this is
+ <TT
+CLASS="literal"
+>/dev/input/mouse2</TT
+> and learn that this is
provide by an USB mouse from a certain manufacturer by
checking the properties that export the USB vendor and product
- identifiers. See and
- for details.
-
-
-
+ identifiers. See <A
+HREF="#device-capabilities"
+>the Chapter called <I
+>Device Capabilities</I
+></A
+> and
+ <A
+HREF="#device-properties"
+>the Chapter called <I
+>Device Properties</I
+></A
+> for details.
+
+ </P
+><P
+>&#13;
On a formal level, a device object is comprised by
-
-
- UDI
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>&#13;
+ <I
+CLASS="emphasis"
+>UDI</I
+></P
+><P
+>
This is an identifier, the Unique Device Identifer, that is
unique for a device object - that is, no other device object
@@ -250,83 +1190,190 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
across device insertions and independent of the physical
port or slot the device may be plugged into.
-
-
- Properties
+ </P
+></LI
+><LI
+><P
+>&#13;
+ <I
+CLASS="emphasis"
+>Properties</I
+></P
+><P
+>
Each device object got a set of properties which are
key/value pairs. The key is an ASCII string while the value
can be one of several types
- string -
- UTF8 stringstrlist -
- sorted list with UTF8 stringsint -
- 32-bit signed integeruint64 -
- 64-bit unsigned integerbool -
- truth valuedouble -
- IEEE754 double precision floating point number
-
-
- Properties of a device object carry all the important
+ <P
+></P
+><UL
+><LI
+><P
+><TT
+CLASS="literal"
+>string</TT
+> -
+ UTF8 string</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>strlist</TT
+> -
+ sorted list with UTF8 strings</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>int</TT
+> -
+ 32-bit signed integer</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>uint64</TT
+> -
+ 64-bit unsigned integer</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>bool</TT
+> -
+ truth value</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>double</TT
+> -
+ IEEE754 double precision floating point number</P
+></LI
+></UL
+>
+
+ </P
+></LI
+></UL
+><P
+>&#13; Properties of a device object carry all the important
information about a device object. For organisational reasons
properties are also namespaced using ''.'' as a separator.
-
-
+ </P
+><P
+>&#13;
It can be useful to classify properties into four groups
- Metadata - Information about how the devices
+ </P
+><P
+></P
+><UL
+><LI
+><P
+>Metadata - Information about how the devices
are connected with respect to each other
(parent/child relationships), what kind of
device it is, what functionality it provides
etc.
- Facts -
+ </P
+></LI
+><LI
+><P
+>Facts -
vendor ID, product ID, disk serial numbers,
number of buttons on a mouse, formats accepted
- by a mp3 player and so on.Usage specific information -
+ by a mp3 player and so on.</P
+></LI
+><LI
+><P
+>Usage specific information -
Network link status, special device file name,
- filesystem mount location etc.Policy -
+ filesystem mount location etc.</P
+></LI
+><LI
+><P
+>Policy -
How the device is to be used be users; usually
- defined by the system administrator.
-
+ defined by the system administrator.</P
+></LI
+></UL
+><P
+>&#13;
The first category is determined by HAL, the next is merged
from either the hardware itself or device information files,
the third is intercepted by monitoring the operating system
and the last is merged from files that only the system
administrator can edit. This specification is concerned with
- precisely defining several properties; see and onwards for more
+ precisely defining several properties; see <A
+HREF="#device-properties"
+>the Chapter called <I
+>Device Properties</I
+></A
+> and onwards for more
information. As a complement to device properties, HAL also
- provides conditions on HAL device
+ provides <I
+CLASS="emphasis"
+>conditions</I
+> on HAL device
objects. Conditions are used to relay events that are
happening on devices which are not easily expressed in
properties. This includes events such as ''processor is
overheating'' or ''block device unmounted''.
-
-
+ </P
+><P
+>&#13;
There is a special hal device object referred to as the ''root
computer device object''. This device object represent the
entire system as a whole and all other devices are either
directly or indirectly childs of this device object. It has
the
- UDI /org/freedesktop/Hal/devices/computer.
-
-
-
+ UDI <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/computer</TT
+>.
+
+ </P
+><P
+>&#13;
The fundamental idea about HAL is that all ''interesting''
information about hardware that a desktop application needs,
can be obtained by querying HAL. Below is a screenshot of a
simple device manager application shipped with HAL
- called hal-device-manager. This
+ called <TT
+CLASS="literal"
+>hal-device-manager</TT
+>. This
application is communicating with the HAL daemon and displays
the tree of device objects. The shown properties are for a
device object representing a harddisk.
-
-
-
-
- Device Capabilities
-
+ </P
+><P
+>&#13; <IMG
+SRC="hal-devices1.png">
+ </P
+><P
+>&#13;
+ </P
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="device-capabilities"
+></A
+>Device Capabilities</H1
+><P
+>&#13;
Mainstream hardware isn't very good at reporting what they are,
they only report, at best, how to interact with them. This is a
problem; many devices, such as MP3 players or digital still
@@ -336,22 +1383,39 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
metadata, the operating system and desktop environment will
present it to the user as just e.g. a mass storage device.
-
-
+ </P
+><P
+>&#13;
As HAL is concerned with merging of external metadata, through
e.g. device information files, there needs to be some scheme on
how to record what the device actually is. This is achieved by
- two textual properties, info.category and
- info.capabilities. The former describes
- what the device is (as a single
+ two textual properties, <TT
+CLASS="literal"
+>info.category</TT
+> and
+ <TT
+CLASS="literal"
+>info.capabilities</TT
+>. The former describes
+ <I
+CLASS="emphasis"
+>what the device is</I
+> (as a single
alphanumeric keyword) and the latter describes
- what the device does (as a number of
+ <I
+CLASS="emphasis"
+>what the device does</I
+> (as a number of
alphanumeric keywords separated by whitespace). The keywords
available for use is defined in this document; we'll refer to
- them in following simply as capabilities.
-
-
-
+ them in following simply as <I
+CLASS="emphasis"
+>capabilities</I
+>.
+
+ </P
+><P
+>&#13;
HAL itself, assigns capabilities on device detection time by
inspecting the device class (if available, it depends on the
bus type) and looking at information from the operating system
@@ -362,8 +1426,9 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
gives maximum flexibility, while maintaining a base level of
capability detection.
-
-
+ </P
+><P
+>&#13;
The idea of HAL is that existing device capability specific
libraries (such as libghoto2), would advertise what kind of HAL
capabilities they are able to handle. As this happens over
@@ -372,8 +1437,9 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
library, or service, the application programmer can use to
access the device.
-
-
+ </P
+><P
+>&#13;
Having a capability also means that part of the property
namespace, prefixed with the capability name, will be populated
with more specific information about the capability. Indeed,
@@ -385,21 +1451,38 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
device. For example, the latter may specify ''USB Storage
Device'' or ''proprietary protocol, use libfooplayer''.
-
-
+ </P
+><P
+>&#13;
Just as device objects can appear and disappear at any time
(e.g. when a device is plugged in respectively removed),
capabilities can also appear and disappear - one example of
this happening is when device drivers are loaded and unloaded.
-
-
+ </P
+><P
+>&#13;
Finally, capabilities have an inheritance scheme, e.g. if a device
- has a capability foo.bar, it must also have
- the capability foo.
-
- Using devices
-
+ has a capability <TT
+CLASS="literal"
+>foo.bar</TT
+>, it must also have
+ the capability <TT
+CLASS="literal"
+>foo</TT
+>.
+
+ </P
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="using-devices"
+></A
+>Using devices</H1
+><P
+>&#13;
While the HAL daemon provides generic operations that apply to
all devices (though some may be no-ops), HAL is not concerned
with providing non-generic device operations. Specifically, one
@@ -407,312 +1490,3803 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
that target a specific class of devices such as cameras or mp3
players.
-
-
- For instance, libgphoto2 could be extended
+ </P
+><P
+>&#13;
+ For instance, <TT
+CLASS="literal"
+>libgphoto2</TT
+> could be extended
such that the application programmer can simply pass the UDI of
the camera he wishes to interact with
- and libghoto2 would then, via D-BUS, acquire
+ and <TT
+CLASS="literal"
+>libghoto2</TT
+> would then, via D-BUS, acquire
the bus-specific information required, the address so to speak,
from the HAL daemon, and then interact directly with the
hardware.
-
-
+ </P
+><P
+>&#13;
Another option is to use the existing API of the device library
to discover devices (the library would be using HAL under the
hood) and provide a function to retrieve the HAL UDI of the
device. When the library is built without HAL support this
- function returns NULL, however, when the UDI
+ function returns <TT
+CLASS="literal"
+>NULL</TT
+>, however, when the UDI
is available, then applications using the library can use the
UDI both as stable reference to the device and also to extract
more information directly from the HAL daemon.
- Device Properties
- Properties are arranged in a namespaces using ''.'' as a separator
+ </P
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="device-properties"
+></A
+>Device Properties</H1
+><P
+>&#13; Properties are arranged in a namespaces using ''.'' as a separator
and are key/value pairs. The value may assume different types; currently
int32, double, bool, UTF8 strings and UTF8 string lists are supported.
The key of a property is always an ASCII string without any whitespace.
The properties are updated in real-time.
- Metadata Properties
-
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-metadata"
+>Metadata Properties</A
+></H2
+><P
+>&#13;
The section represents properties that aren't tied to either
physical or functional characteristics of what the device
object represents.
- info namespace
-
- The info namespace contain properties that
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-info"
+><TT
+CLASS="literal"
+>info</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ The <TT
+CLASS="literal"
+>info</TT
+> namespace contain properties that
can be considered metadata about device objects. These
properties are always available.
- Key (type)ValuesMandatoryDescriptioninfo.bus (string)pci, usb, ide_host, ide, block, usb, usbif, scsi_host, scsiYesDescribes what ''physical'' bus the device is connected toinfo.udi (string)example: /org/freedesktop/Hal/devices/pci_10ec_8139YesThe HAL unique device idinfo.persistent (bool)No, but required if info.not_available is set to TRUEIf this property is set, the device will remain in the
- the GDL even if the device is unplugged. NOTE: property not implemented yet info.not_available (bool)NoThe device is currently not available (it may be unplugged
- or powered down) NOTE: property not implemented yet info.capabilities (strlist)example: 'block, storage, storage.cdrom'NoA string list of capabilities describing what the devices doesinfo.category (string)example: storage.cdromNoThe prominent capability describing what the device isinfo.product (string)examples: ''SleekKeyboard'', ''MouseMan 2003'', ''Volume'', ''LS-120 SLIM3 00 UHD Floppy''NoThe name of the deviceinfo.vendor (string)examples: Logitch, MustekNoThe name of the vendor of the deviceinfo.parent (string)example: /org/freedesktop/Hal/devices/ide_1_0Yes, for all non-root device objectsThe UDI of the device object that this device object
- is connected to.info.locked (bool)No
- If this property is available and set
- to TRUE it means that a process
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN202"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.bus</TT
+> (string)</TD
+><TD
+>pci, usb, ide_host, ide, block, usb, usbif, scsi_host, scsi</TD
+><TD
+>Yes</TD
+><TD
+>Describes what ''physical'' bus the device is connected to</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.udi</TT
+> (string)</TD
+><TD
+>example: /org/freedesktop/Hal/devices/pci_10ec_8139</TD
+><TD
+>Yes</TD
+><TD
+>The HAL unique device id</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.persistent</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No, but required if <TT
+CLASS="literal"
+>info.not_available</TT
+> is set to TRUE</TD
+><TD
+>If this property is set, the device will remain in the
+ the GDL even if the device is unplugged. NOTE: property not implemented yet </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.not_available</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The device is currently not available (it may be unplugged
+ or powered down) NOTE: property not implemented yet </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.capabilities</TT
+> (strlist)</TD
+><TD
+>example: 'block, storage, storage.cdrom'</TD
+><TD
+>No</TD
+><TD
+>A string list of capabilities describing what the devices does</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.category</TT
+> (string)</TD
+><TD
+>example: storage.cdrom</TD
+><TD
+>No</TD
+><TD
+>The prominent capability describing what the device is</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.product</TT
+> (string)</TD
+><TD
+>examples: ''SleekKeyboard'', ''MouseMan 2003'', ''Volume'', ''LS-120 SLIM3 00 UHD Floppy''</TD
+><TD
+>No</TD
+><TD
+>The name of the device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.vendor</TT
+> (string)</TD
+><TD
+>examples: Logitch, Mustek</TD
+><TD
+>No</TD
+><TD
+>The name of the vendor of the device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.parent</TT
+> (string)</TD
+><TD
+>example: /org/freedesktop/Hal/devices/ide_1_0</TD
+><TD
+>Yes, for all non-root device objects</TD
+><TD
+>The UDI of the device object that this device object
+ is connected to.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.locked</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If this property is available and set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+> it means that a process
is using the device that the hal device object in
question represents and no other process should attempt
to use or configure the device. The lock is only
advisory.
- info.locked.reason (string)
- example: ''The optical drive is currently being used to
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.locked.reason</TT
+> (string)</TD
+><TD
+>&#13; example: ''The optical drive is currently being used to
record a CD-RW disc.''
-
- Only available if info.locked is set
- to TRUE.
- A localized text suitable for UI displayinfo.locked.dbus_service (string)example: :1.278
- Only available if info.locked is set
- to TRUE.
- The base D-BUS service of the process holding the lock.linux namespace
- This namespace is used to store Linux-specific metadata about the
+ </TD
+><TD
+>&#13; Only available if <TT
+CLASS="literal"
+>info.locked</TT
+> is set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>A localized text suitable for UI display</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.locked.dbus_service</TT
+> (string)</TD
+><TD
+>example: :1.278</TD
+><TD
+>&#13; Only available if <TT
+CLASS="literal"
+>info.locked</TT
+> is set
+ to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>The base D-BUS service of the process holding the lock.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-linux"
+><TT
+CLASS="literal"
+>linux</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace is used to store Linux-specific metadata about the
device object and is only available on Linux systems.
- Key (type)ValuesMandatoryDescriptionlinux.sysfs_path (string)examples: /sys/block/sda/sda1, /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0Yes (only if available for the device) A fully-qualified path into the sysfs filesystem for the
- physical devicelinux.sysfs_path_device (string)Yes (only if available for the device) Normally this property assumes the same value as
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN293"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.sysfs_path</TT
+> (string)</TD
+><TD
+>examples: /sys/block/sda/sda1, /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0</TD
+><TD
+>Yes (only if available for the device) </TD
+><TD
+>A fully-qualified path into the sysfs filesystem for the
+ physical device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.sysfs_path_device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes (only if available for the device) </TD
+><TD
+>Normally this property assumes the same value as
linux.sysfs_path, however for some devices it assumes an
alternate location in the sysfs filesystem. It is used
- internally in HALlinux.acpi_path (string)example: /proc/acpi/button/power/PWRF, /proc/pmu/battery_0No
- A fully-qualified path into the procfs filesystem for a
+ internally in HAL</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.acpi_path</TT
+> (string)</TD
+><TD
+>example: /proc/acpi/button/power/PWRF, /proc/pmu/battery_0</TD
+><TD
+>No</TD
+><TD
+>&#13; A fully-qualified path into the procfs filesystem for a
device object representing an ACPI abstraction.
- linux.driver (string)examples: agpgart-intel, yenta_cardbus, usb, hub, usbhidNoName of the driver bound to this devicelinux.kernel_devname (string)example: usb-0000:00:07.2-1.2NoA name used internally in the Linux kernel to identify
- the device. Used internally in HAL.linux.is_selinux_enabled (bool)No; can only appear on the root computer device objectWhether SELinux is enabled on the system
- Physical Properties
-
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.driver</TT
+> (string)</TD
+><TD
+>examples: agpgart-intel, yenta_cardbus, usb, hub, usbhid</TD
+><TD
+>No</TD
+><TD
+>Name of the driver bound to this device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.kernel_devname</TT
+> (string)</TD
+><TD
+>example: usb-0000:00:07.2-1.2</TD
+><TD
+>No</TD
+><TD
+>A name used internally in the Linux kernel to identify
+ the device. Used internally in HAL.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>linux.is_selinux_enabled</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No; can only appear on the root computer device object</TD
+><TD
+>Whether SELinux is enabled on the system</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-bus"
+>Physical Properties</A
+></H2
+><P
+>&#13;
In this section properties for device objects that represent
physically addressable hardware is described. Availability of
- these depends on the value of the info.bus
+ these depends on the value of the <TT
+CLASS="literal"
+>info.bus</TT
+>
property. These properties are not of particular interest to
application developers, instead they are useful for libraries
and userspace drivers that needs to interact with the device
given a UDI. Knowledge of various bus interconnect
technologies is assumed for this section to be useful.
- pci namespace
-
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-pci"
+><TT
+CLASS="literal"
+>pci</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace contains properties for device objects representing
functions on devices on a PCI bus. These properties are available
- exactly when info.bus equals pci.
-
- Key (type)ValuesMandatoryDescriptionpci.device_class (int)example: 3YesDevice Classpci.device_subclass (int)example: 0YesPCI Device Sub Classpci.device_protocol (int)example: 0YesDevice Protocolpci.product_id (int)example: 0x4c4dYesProduct IDpci.vendor_id (int)example: 0x1002YesVendor IDpci.subsys_product_id (int)example: 0x009eYesSubsystem product idpci.subsys_vendor_id (int)example: 0x1028YesSubsystem vendor idpci.linux.sysfs_path (string)example: /sys/devices/pci0000:00/0000:00:01/0000:01:00.0Yes (only on Linux)Equals linux.sysfs_pathpci.product (string)Rage Mobility P/M AGP 2xNoName of the product per the PCI databasepci.vendor (string)ATI Technologies IncNoName of the vendor per the PCI databasepci.subsys_product (string)Inspiron 7500NoName of the subsystem product per the PCI databasepci.subsys_vendor (string)Dell Computer CorporationNoName of the subsystem vendor per the PCI database
-
+ exactly when <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>pci</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN349"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.device_class</TT
+> (int)</TD
+><TD
+>example: 3</TD
+><TD
+>Yes</TD
+><TD
+>Device Class</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.device_subclass</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>PCI Device Sub Class</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.device_protocol</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Device Protocol</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.product_id</TT
+> (int)</TD
+><TD
+>example: 0x4c4d</TD
+><TD
+>Yes</TD
+><TD
+>Product ID</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.vendor_id</TT
+> (int)</TD
+><TD
+>example: 0x1002</TD
+><TD
+>Yes</TD
+><TD
+>Vendor ID</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.subsys_product_id</TT
+> (int)</TD
+><TD
+>example: 0x009e</TD
+><TD
+>Yes</TD
+><TD
+>Subsystem product id</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.subsys_vendor_id</TT
+> (int)</TD
+><TD
+>example: 0x1028</TD
+><TD
+>Yes</TD
+><TD
+>Subsystem vendor id</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.linux.sysfs_path</TT
+> (string)</TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:01/0000:01:00.0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+></TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.product</TT
+> (string)</TD
+><TD
+>Rage Mobility P/M AGP 2x</TD
+><TD
+>No</TD
+><TD
+>Name of the product per the PCI database</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.vendor</TT
+> (string)</TD
+><TD
+>ATI Technologies Inc</TD
+><TD
+>No</TD
+><TD
+>Name of the vendor per the PCI database</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.subsys_product</TT
+> (string)</TD
+><TD
+>Inspiron 7500</TD
+><TD
+>No</TD
+><TD
+>Name of the subsystem product per the PCI database</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>pci.subsys_vendor</TT
+> (string)</TD
+><TD
+>Dell Computer Corporation</TD
+><TD
+>No</TD
+><TD
+>Name of the subsystem vendor per the PCI database</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
(FIXME: Some key PCI information (bus, slot, port, function
etc.) is missing here)
- serial namespace
-
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-serialif"
+><TT
+CLASS="literal"
+>serial</TT
+> namespace</A
+></H3
+><P
+>&#13;
Device objects that represent serial devices (e.g. /dev/ttyS* or
/dev/ttyUSB*).
- Key (type)ValuesMandatoryDescriptionserial.physical_device (string)example: /org/freedesktop/Hal/devices/pnp_PNP0501YesUDI of the physical device the serial device is bound to.serial.device (string)example: /dev/ttyS0YesThe device node to access the OSS device.serial.port (int)example: 0Yes
- The port number of the device, based on the number in
- serial.device
- serial.type (string)example: platform, usb, unknownYesThis property defines the type of the serial device.usb_device namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN436"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>serial.physical_device</TT
+> (string)</TD
+><TD
+>example: <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/pnp_PNP0501</TT
+></TD
+><TD
+>Yes</TD
+><TD
+>UDI of the physical device the serial device is bound to.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>serial.device</TT
+> (string)</TD
+><TD
+>example: /dev/ttyS0</TD
+><TD
+>Yes</TD
+><TD
+>The device node to access the OSS device.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>serial.port</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The port number of the device, based on the number in
+ <TT
+CLASS="literal"
+>serial.device</TT
+>
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>serial.type</TT
+> (string)</TD
+><TD
+>example: platform, usb, unknown</TD
+><TD
+>Yes</TD
+><TD
+>This property defines the type of the serial device.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-usb"
+><TT
+CLASS="literal"
+>usb_device</TT
+> namespace</A
+></H3
+><P
+>&#13;
For device objects representing USB devices the property
- info.bus will be usb_device,
+ <TT
+CLASS="literal"
+>info.bus</TT
+> will be <TT
+CLASS="literal"
+>usb_device</TT
+>,
and the following properties will be available. Note that the
corresponding USB interfaces are represented by separate
device objects as children.
- Key (type)ValuesMandatoryDescriptionusb_device.bus_number (int)example: 1YesThe USB bus the device is attached tousb_device.configuration_value (int) example: 1YesThe current configuration the USB device is in;
- starting from 1usb_device.num_configurations (int)example: 1YesNumber of configurations this USB device
- can assumeusb_device.device_class (int)example: 0YesUSB Device Classusb_device.device_subclass (int)example: 0YesUSB Device Sub Classusb_device.device_protocol (int)example: 0YesUSB Device Protocolusb_device.is_self_powered (bool)example: falseYesThe device, in the current configuration, is self
- poweredusb_device.can_wake_up (bool)example: trueYesThe device, in the current configuration, can wake upusb_device.max_power (int)example: 98YesMax power drain of device, in mAusb_device.num_interfaces (int)example: 1YesNumber of USB Interfaces in the current configurationusb_device.num_ports (int)example: 0YesNumber of ports on a hub. Zero for non-hubsusb_device.port_number (int)example: 1YesThe port number on the parent hub that the device is attached to, starting from 1usb_device.speed_bcd (int)examples: 0x00150, 0x01200, 0x48000YesSpeed of device, in Mbit/s, in BCD with two decimalsusb_device.version_bcd (int)examples: 0x0100, 0x0110, 0x0200YesUSB version of device in BCD with two decimalsusb_device.level_number (int)example: 2YesDepth in physical USB tree, where the virtual root hub
- is at depth 0usb_device.linux.device_number (string)example: 19Yes (only on Linux)USB Device Number as assigned by the Linux kernelusb_device.linux.parent_number (string)example: 19Yes (only on Linux)Device number of parent device as assigned by the
- Linux kernelusb_device.linux.sysfs_path (string)example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1Yes (only on Linux)Equals linux.sysfs_pathusb_device.product_id (int)example: 0x3005YesUSB Product IDusb_device.vendor_id (int)example: 0x04b3YesUSB Vendor IDusb_device.device_revision_bcd (int)example: 0x0100YesDevice Revision Number encoded in BCD with two decimalsusb_device.serial (string)NoA string uniquely identifying the instance
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN477"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.bus_number</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The USB bus the device is attached to</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.configuration_value</TT
+> (int) </TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The current configuration the USB device is in;
+ starting from 1</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.num_configurations</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of configurations this USB device
+ can assume</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.device_class</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Class</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.device_subclass</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Sub Class</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.device_protocol</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>USB Device Protocol</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.is_self_powered</TT
+> (bool)</TD
+><TD
+>example: false</TD
+><TD
+>Yes</TD
+><TD
+>The device, in the current configuration, is self
+ powered</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.can_wake_up</TT
+> (bool)</TD
+><TD
+>example: true</TD
+><TD
+>Yes</TD
+><TD
+>The device, in the current configuration, can wake up</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.max_power</TT
+> (int)</TD
+><TD
+>example: 98</TD
+><TD
+>Yes</TD
+><TD
+>Max power drain of device, in mA</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.num_interfaces</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of USB Interfaces in the current configuration</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.num_ports</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Number of ports on a hub. Zero for non-hubs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.port_number</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>The port number on the parent hub that the device is attached to, starting from 1</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.speed_bcd</TT
+> (int)</TD
+><TD
+>examples: 0x00150, 0x01200, 0x48000</TD
+><TD
+>Yes</TD
+><TD
+>Speed of device, in Mbit/s, in BCD with two decimals</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.version_bcd</TT
+> (int)</TD
+><TD
+>examples: 0x0100, 0x0110, 0x0200</TD
+><TD
+>Yes</TD
+><TD
+>USB version of device in BCD with two decimals</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.level_number</TT
+> (int)</TD
+><TD
+>example: 2</TD
+><TD
+>Yes</TD
+><TD
+>Depth in physical USB tree, where the virtual root hub
+ is at depth 0</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.linux.device_number</TT
+> (string)</TD
+><TD
+>example: 19</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>USB Device Number as assigned by the Linux kernel</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.linux.parent_number</TT
+> (string)</TD
+><TD
+>example: 19</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Device number of parent device as assigned by the
+ Linux kernel</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.linux.sysfs_path</TT
+> (string)</TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+></TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.product_id</TT
+> (int)</TD
+><TD
+>example: 0x3005</TD
+><TD
+>Yes</TD
+><TD
+>USB Product ID</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.vendor_id</TT
+> (int)</TD
+><TD
+>example: 0x04b3</TD
+><TD
+>Yes</TD
+><TD
+>USB Vendor ID</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.device_revision_bcd</TT
+> (int)</TD
+><TD
+>example: 0x0100</TD
+><TD
+>Yes</TD
+><TD
+>Device Revision Number encoded in BCD with two decimals</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.serial</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>A string uniquely identifying the instance
of the device; ie. it will be different for two devices
of the same type. Note that the serial number is broken
- on some USB devices.usb_device.product (string)example: IBM USB HUB KEYBOARDNoName of the product per the USB ID Databaseusb_device.vendor (string)example: IBM Corp.NoName of the vendor per the USB ID Databaseusb namespace
-
+ on some USB devices.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.product</TT
+> (string)</TD
+><TD
+>example: IBM USB HUB KEYBOARD</TD
+><TD
+>No</TD
+><TD
+>Name of the product per the USB ID Database</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb_device.vendor</TT
+> (string)</TD
+><TD
+>example: IBM Corp.</TD
+><TD
+>No</TD
+><TD
+>Name of the vendor per the USB ID Database</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-usbif"
+><TT
+CLASS="literal"
+>usb</TT
+> namespace</A
+></H3
+><P
+>&#13;
Device objects that represent USB interfaces, ie. when
- info.bus assumes usb,
+ <TT
+CLASS="literal"
+>info.bus</TT
+> assumes <TT
+CLASS="literal"
+>usb</TT
+>,
are represented by the properties below. In addition all
- the usb_device.* properties from the parent
+ the <TT
+CLASS="literal"
+>usb_device.*</TT
+> properties from the parent
USB device is available in this namespace but only with
- the usb prefix instead of
- usb_device.
-
- Key (type)ValuesMandatoryDescriptionusb.interface.class (int)example: 0x03YesUSB Class for the interfaceusb.interface.subclass (int)example: 0x01YesUSB Sub Class for this interfaceusb.interface.protocol (int)example: 0x01YesUSB Protocol for the interfaceusb.interface.number (int)example: 1YesNumber of this interface, starting from zerousb.linux.sysfs_path (string)example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1/1-1.1:1.0Yes (only on Linux)Equals linux.sysfs_pathplatform namespace
-
+ the <TT
+CLASS="literal"
+>usb</TT
+> prefix instead of
+ <TT
+CLASS="literal"
+>usb_device</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN640"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb.interface.class</TT
+> (int)</TD
+><TD
+>example: 0x03</TD
+><TD
+>Yes</TD
+><TD
+>USB Class for the interface</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb.interface.subclass</TT
+> (int)</TD
+><TD
+>example: 0x01</TD
+><TD
+>Yes</TD
+><TD
+>USB Sub Class for this interface</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb.interface.protocol</TT
+> (int)</TD
+><TD
+>example: 0x01</TD
+><TD
+>Yes</TD
+><TD
+>USB Protocol for the interface</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb.interface.number</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Number of this interface, starting from zero</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>usb.linux.sysfs_path</TT
+> (string)</TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1/1-1.1:1.0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+></TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-platform"
+><TT
+CLASS="literal"
+>platform</TT
+> namespace</A
+></H3
+><P
+>&#13;
Devices that are built into the platform or present on busses that
cannot be properly enumerated (e.g. ISA) are represented by device
- objects where info.bus equals
- platform. These kind of devices are commonly,
+ objects where <TT
+CLASS="literal"
+>info.bus</TT
+> equals
+ <TT
+CLASS="literal"
+>platform</TT
+>. These kind of devices are commonly,
somewhat incorrectly, called legacy devices.
- Key (type)ValuesMandatoryDescriptionplatform.id (string)example: serialYesDevice identificationide_host namespace
-
- The ide_host namespace is present for
- device objects where info.bus is set
- to ide_host. Such device objects represent
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN686"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>platform.id</TT
+> (string)</TD
+><TD
+>example: serial</TD
+><TD
+>Yes</TD
+><TD
+>Device identification</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ide-host"
+><TT
+CLASS="literal"
+>ide_host</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ The <TT
+CLASS="literal"
+>ide_host</TT
+> namespace is present for
+ device objects where <TT
+CLASS="literal"
+>info.bus</TT
+> is set
+ to <TT
+CLASS="literal"
+>ide_host</TT
+>. Such device objects represent
IDE and ATA host adaptors for harddisks and optical drives as
found in the majority of computer systems.
- Key (type)ValuesMandatoryDescriptionide_host.number (int)YesA unique number identifying the IDE host adaptoride_host.linux.sysfs_path (string)example: /sys/devices/pci0000:00/0000:00:07.1/ide0Yes (only on Linux)Equals linux.sysfs_pathide namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN708"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ide_host.number</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the IDE host adaptor</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ide_host.linux.sysfs_path</TT
+> (string)</TD
+><TD
+>example: /sys/devices/pci0000:00/0000:00:07.1/ide0</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Equals <TT
+CLASS="literal"
+>linux.sysfs_path</TT
+></TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ide"
+><TT
+CLASS="literal"
+>ide</TT
+> namespace</A
+></H3
+><P
+>&#13;
ATA and IDE drives are represented by device objects where
- info.bus equals ide. The
+ <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>ide</TT
+>. The
following properties are available for such device objects.
- Key (type)ValuesMandatoryDescriptionide.host (int)YesCorresponds
- to ide_host.host_number of
- the ide_host device that is the
- parent of this device objectide.channel (int)YesIdentifies the IDE channel of the host interfacescsi_host namespace
-
- The scsi_host namespace is present for
- device objects where info.bus is set
- to scsi_host. Such device objects represent
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN736"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ide.host</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Corresponds
+ to <TT
+CLASS="literal"
+>ide_host.host_number</TT
+> of
+ the <TT
+CLASS="literal"
+>ide_host</TT
+> device that is the
+ parent of this device object</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ide.channel</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Identifies the IDE channel of the host interface</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-scsi_host"
+><TT
+CLASS="literal"
+>scsi_host</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ The <TT
+CLASS="literal"
+>scsi_host</TT
+> namespace is present for
+ device objects where <TT
+CLASS="literal"
+>info.bus</TT
+> is set
+ to <TT
+CLASS="literal"
+>scsi_host</TT
+>. Such device objects represent
SCSI host adaptors for SCSI devices as found in some computer
systems.
- Key (type)ValuesMandatoryDescriptionscsi_host.host (int)YesA unique number identifying the SCSI host adaptorscsi namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN766"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>scsi_host.host</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the SCSI host adaptor</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-scsi"
+><TT
+CLASS="literal"
+>scsi</TT
+> namespace</A
+></H3
+><P
+>&#13;
SCSI devices are represented by device objects where
- info.bus equals scsi.
+ <TT
+CLASS="literal"
+>info.bus</TT
+> equals <TT
+CLASS="literal"
+>scsi</TT
+>.
The following properties are available for such device objects.
- Key (type)ValuesMandatoryDescriptionscsi.host (int)YesCorresponds to scsi_host.host
- of the scsi_host device that is the
- parent of this device objectscsi.bus (int)YesSCSI channel numberscsi.target (int)YesSCSI identifier numberscsi.lun (int)YesSCSI Logical Unit Numberieee1394_host namespace
-
- Device objects with info.bus set to
- ieee1394_host represent IEEE 1394 host
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN787"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>scsi.host</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Corresponds to <TT
+CLASS="literal"
+>scsi_host.host</TT
+>
+ of the <TT
+CLASS="literal"
+>scsi_host</TT
+> device that is the
+ parent of this device object</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>scsi.bus</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI channel number</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>scsi.target</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI identifier number</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>scsi.lun</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>SCSI Logical Unit Number</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394_host"
+><TT
+CLASS="literal"
+>ieee1394_host</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394_host</TT
+> represent IEEE 1394 host
adaptors. The following properties are available for such
device objects.
- Key (type)ValuesMandatoryDescriptionieee1394_host.is_busmgr (bool)YesTODOieee1394_host.is_irn (bool)YesTODOieee1394_host.is_root (bool)YesTODOieee1394_host.node_count (int)YesTODOieee1394_host.nodes_active (int)YesTODOieee1394_node namespace
-
- Device objects with info.bus set to
- ieee1394_node represent IEEE 1394 nodes on
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN828"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_host.is_busmgr</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_host.is_irn</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_host.is_root</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_host.node_count</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_host.nodes_active</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394_node"
+><TT
+CLASS="literal"
+>ieee1394_node</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394_node</TT
+> represent IEEE 1394 nodes on
a IEEE 1394 bus. The following properties are available for
such device objects.
- Key (type)ValuesMandatoryDescriptionieee1394_node.capabilities (int)YesTODOieee1394_node.guid (int)YesTODOieee1394_node.nodeid (int)YesTODOieee1394_node.vendor (int)YesTODOieee1394_node.vendor_id (int)YesTODOieee1394 namespace
-
- Device objects with info.bus set to
- ieee1394 represent IEEE 1394 devices. The
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN873"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_node.capabilities</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_node.guid</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_node.nodeid</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_node.vendor</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394_node.vendor_id</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ieee1394"
+><TT
+CLASS="literal"
+>ieee1394</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>ieee1394</TT
+> represent IEEE 1394 devices. The
following properties are available for such device objects.
- Key (type)ValuesMandatoryDescriptionieee1394.specifier_id (int)YesTODOmmc_host namespace
-
- Device objects with info.bus set to
- mmc_host represent MultiMediaCard or
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN918"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ieee1394.specifier_id</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-mmc_host"
+><TT
+CLASS="literal"
+>mmc_host</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>mmc_host</TT
+> represent MultiMediaCard or
Secure Digital host adaptors. The following properties
are available for such device objects.
- Key (type)ValuesMandatoryDescriptionmmc_host.host (int)YesA unique number identifying the MMC/SD host adaptormmc namespace
-
- Device objects with info.bus set to
- mmc represent MultiMediaCard or Secure
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN939"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc_host.host</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>A unique number identifying the MMC/SD host adaptor</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-mmc"
+><TT
+CLASS="literal"
+>mmc</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to
+ <TT
+CLASS="literal"
+>mmc</TT
+> represent MultiMediaCard or Secure
Digital cards. The following properties are available for
such device objects.
- Key (type)ValuesMandatoryDescriptionmmc.cid (string)example: 0150415330303842413a1a8083003a9dYesCard Identification Data register (unique for every card
- in existence)mmc.csd (string)example: 005d013213598067b6d9cfff1640002dYesCard Specific Data registermmc.scr (string)example: 00a5000000410000Only for SD cardsSD Card Registermmc.rca (int)example: 8083YesCard bus addressmmc.oem (string)YesCard OEM distributormmc.date (string)example: 10/2003YesManufacturing datemmc.serial (int)example: 0x3a1a8083YesCard serial numbermmc.hwrev (int)example: 4YesHardware revisionmmc.fwrev (int)example: 1YesFirmware revisionccw namespace
-
- Device objects that represent s390 ccw devices (when info.bus
- is set to ccw) are represented by the
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN960"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.cid</TT
+> (string)</TD
+><TD
+>example: 0150415330303842413a1a8083003a9d</TD
+><TD
+>Yes</TD
+><TD
+>Card Identification Data register (unique for every card
+ in existence)</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.csd</TT
+> (string)</TD
+><TD
+>example: 005d013213598067b6d9cfff1640002d</TD
+><TD
+>Yes</TD
+><TD
+>Card Specific Data register</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.scr</TT
+> (string)</TD
+><TD
+>example: 00a5000000410000</TD
+><TD
+>Only for SD cards</TD
+><TD
+>SD Card Register</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.rca</TT
+> (int)</TD
+><TD
+>example: 8083</TD
+><TD
+>Yes</TD
+><TD
+>Card bus address</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.oem</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Card OEM distributor</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.date</TT
+> (string)</TD
+><TD
+>example: 10/2003</TD
+><TD
+>Yes</TD
+><TD
+>Manufacturing date</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.serial</TT
+> (int)</TD
+><TD
+>example: 0x3a1a8083</TD
+><TD
+>Yes</TD
+><TD
+>Card serial number</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.hwrev</TT
+> (int)</TD
+><TD
+>example: 4</TD
+><TD
+>Yes</TD
+><TD
+>Hardware revision</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>mmc.fwrev</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Firmware revision</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ccw"
+><TT
+CLASS="literal"
+>ccw</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects that represent s390 ccw devices (when <TT
+CLASS="literal"
+>info.bus
+ </TT
+> is set to <TT
+CLASS="literal"
+>ccw</TT
+>) are represented by the
properties below.
- Key (type)ValuesMandatoryDescriptionccw.devtype (string)example: 1732/01YesDevice type/model or n/accw.cutype (string)example: 1731/01YesControl unit type/modelccw.cmb_enable (int)example: 1YesIf channel measurements are enabledccw.availability (string)example: goodYesCan be one of 'good', 'boxed', 'no path',
- or 'no device'ccw.online (int)example: 1YesOnline statusccw.bus_id (string)example: 0.0.f588YesThe device's bus id in sysfsccw.subchannel.pim (int)example: 0x80Nopath installed maskccw.subchannel.pam (int)example: 0x80Nopath available maskccw.subchannel.pom (int)example: 0xffNopath operational maskccw.subchannel.chpid0..7 (int)example: 0x40Nochannel path ids
-
- The following properties describe ccw devices where
- linux.driver is either dasd-eckd
- or dasd-fba.
-
- Key (type)ValuesMandatoryDescriptionccw.dasd.use_diag (int)example: 0YesIf the device driver shall use diagnose calls to access
- the deviceccw.dasd.readonly (int)example: 0YesIf the device can only be accessed readonlyccw.dasd.discipline (string)example: ECKDNoThe dasd discipline used to access the device
-
- The following properties describe ccw devices where
- linux.driver is zfcp. They are
- only present when ccw.online = 1.
-
- Key (type)ValuesMandatoryDescriptionccw.zfcp.in_recovery (int)example: 0YesShows whether the adapter is currently in recoveryccw.zfcp.failed (int)example: 0YesShows whether the adapter is in failed state
-
- The following properties describe ccw devices where
- linux.driver is of the form tape_3xxx
- .
-
- Key (type)ValuesMandatoryDescriptionccw.tape.state (string)example: IN_USEYesThe current status of the tapeccw.tape.operation (string)example: REWYesA three-letter mnemonic of the current tape operation
- ccw.tape.medium_state (string)example: no mediumNoIf ccw.online = 1, shows whether a tape
- is loadedccw.tape.blocksize (int)example: 512NoIf ccw.online = 1, shows the blocksize
- used for reads and writes to the tape
-
- The following properties describe ccw devices where
- linux.driver is 3270.
-
- Key (type)ValuesMandatoryDescriptionccw.3270.model (int)example: 3YesThe model of the device, determining rows and columns
- ccw.3270.rows (int)example: 32YesThe number of rowsccw.3270.columns (int)example: 80YesThe number of columnsccwgroup namespace
-
- Device objects that represent groups of ccw devices
- (when info.bus is set to ccwgroup
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1029"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.devtype</TT
+> (string)</TD
+><TD
+>example: 1732/01</TD
+><TD
+>Yes</TD
+><TD
+>Device type/model or n/a</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.cutype</TT
+> (string)</TD
+><TD
+>example: 1731/01</TD
+><TD
+>Yes</TD
+><TD
+>Control unit type/model</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.cmb_enable</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>If channel measurements are enabled</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.availability</TT
+> (string)</TD
+><TD
+>example: good</TD
+><TD
+>Yes</TD
+><TD
+>Can be one of 'good', 'boxed', 'no path',
+ or 'no device'</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.online</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Online status</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.bus_id</TT
+> (string)</TD
+><TD
+>example: 0.0.f588</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.subchannel.pim</TT
+> (int)</TD
+><TD
+>example: 0x80</TD
+><TD
+>No</TD
+><TD
+>path installed mask</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.subchannel.pam</TT
+> (int)</TD
+><TD
+>example: 0x80</TD
+><TD
+>No</TD
+><TD
+>path available mask</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.subchannel.pom</TT
+> (int)</TD
+><TD
+>example: 0xff</TD
+><TD
+>No</TD
+><TD
+>path operational mask</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.subchannel.chpid0..7</TT
+> (int)</TD
+><TD
+>example: 0x40</TD
+><TD
+>No</TD
+><TD
+>channel path ids</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is either <TT
+CLASS="literal"
+>dasd-eckd</TT
+>
+ or <TT
+CLASS="literal"
+>dasd-fba</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1103"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.dasd.use_diag</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>If the device driver shall use diagnose calls to access
+ the device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.dasd.readonly</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>If the device can only be accessed readonly</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.dasd.discipline</TT
+> (string)</TD
+><TD
+>example: ECKD</TD
+><TD
+>No</TD
+><TD
+>The dasd discipline used to access the device</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>zfcp</TT
+>. They are
+ only present when <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1135"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.zfcp.in_recovery</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Shows whether the adapter is currently in recovery</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.zfcp.failed</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>Shows whether the adapter is in failed state</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is of the form <TT
+CLASS="literal"
+>tape_3xxx
+ </TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1160"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.tape.state</TT
+> (string)</TD
+><TD
+>example: IN_USE</TD
+><TD
+>Yes</TD
+><TD
+>The current status of the tape</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.tape.operation</TT
+> (string)</TD
+><TD
+>example: REW</TD
+><TD
+>Yes</TD
+><TD
+>A three-letter mnemonic of the current tape operation
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.tape.medium_state</TT
+> (string)</TD
+><TD
+>example: no medium</TD
+><TD
+>No</TD
+><TD
+>If <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>, shows whether a tape
+ is loaded</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.tape.blocksize</TT
+> (int)</TD
+><TD
+>example: 512</TD
+><TD
+>No</TD
+><TD
+>If <TT
+CLASS="literal"
+>ccw.online = 1</TT
+>, shows the blocksize
+ used for reads and writes to the tape</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccw</TT
+> devices where
+ <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>3270</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1199"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.3270.model</TT
+> (int)</TD
+><TD
+>example: 3</TD
+><TD
+>Yes</TD
+><TD
+>The model of the device, determining rows and columns
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.3270.rows</TT
+> (int)</TD
+><TD
+>example: 32</TD
+><TD
+>Yes</TD
+><TD
+>The number of rows</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccw.3270.columns</TT
+> (int)</TD
+><TD
+>example: 80</TD
+><TD
+>Yes</TD
+><TD
+>The number of columns</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ccwgroup"
+><TT
+CLASS="literal"
+>ccwgroup</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects that represent groups of <TT
+CLASS="literal"
+>ccw</TT
+> devices
+ (when <TT
+CLASS="literal"
+>info.bus</TT
+> is set to <TT
+CLASS="literal"
+>ccwgroup</TT
+>
have the properties specified below.
- Key (type)ValuesMandatoryDescriptionccwgroup.online (int)example: 1YesOnline statusccwgroup.bus_id (string)example: 0.0.f588YesThe device's bus id in sysfs
-
- The following properties describe ccwgroup devices
- where linux.driver is qeth.
-
- Key (type)ValuesMandatoryDescriptionccwgroup.qeth.large_send (string)
- example: TSONoWhether large send is provided. Can be "no", "EDDP"
- (software) or "TSO" (hardware).ccwgroup.qeth.card_type (string)example: OSD_1000YesType of the cardccwgroup.qeth.checksumming (string)
- example: sw checksummingNoThe method used to checksum incoming packetsccwgroup.qeth.canonical_macaddr (int)
- example: 0NoSpecifies the token ring macaddress format. Not valid in
- layer2 mode and for ethernet devices.ccwgroup.qeth.broadcast_mode (string)
- example: broadcast_allringsNoThe scope of token ring broadcasts. Not valid in layer2
- mode and for ethernet devices.ccwgroup.qeth.fake_broadcast (int)
- example: 0NoWhether to fake broadcast capability. Not valid in layer2
- mode.ccwgroup.qeth.fake_ll (int)example: 0NoWhether to add a faked link level header to packets.
- Not valid in layer2 mode.ccwgroup.qeth.layer2 (int)example: 0NoWhether the card operates in layer 2 modeccwgroup.qeth.portname (string)example: OSAPORTNoThe port name which has been specified for the cardccwgroup.qeth.portno (int)example: 0NoThe relative port number on the cardccwgroup.qeth.buffer_count (int)example: 16YesNumber of inbound buffers usedccwgroup.qeth.add_hhlen (int)example: 0NoHow much additional space is provided in the hardware
- header in skbs in front of packetsccwgroup.qeth.priority_queueing
- (string)example: always queue 2NoWhich priority queueing algorithm is to be usedccwgroup.qeth.route4 (string)example: noNoWhether the card has a routing functionality for ipv4.
- Not valid in layer2 mode.ccwgroup.qeth.route6 (string)example: noNoWhether the card has a routing functionality for ipv6.
- Not valid in layer2 mode.ccwgroup.qeth.state (string)example: UP (LAN ONLINE)YesThe device's current state
-
- The following properties describe ccwgroup devices
- where linux.driver is ctc.
-
- Key (type)ValuesMandatoryDescriptionccwgroup.ctc.protocol (int)example: 0YesThe protocol/method used by the connectionccwgroup.ctc.type (string)example: CTC/AYesThe device/connection typeccwgroup.ctc.buffer (int) example: 32768NoThe maximum buffer size of the connection
-
- The following properties describe ccwgroup devices
- where linux.driver is lcs.
-
- Key (type)ValuesMandatoryDescriptionccwgroup.lcs.portnumber (int)example: 0YesThe port on the card that is usedccwgroup.lcs.type (string)example: OSA LCS cardYesThe type of the cardccwgroup.lcs.lancmd_timeout (int)
- example: 5YesThe timeout value for LAN commands in seconds
-
- The following properties describe ccwgroup devices
- where linux.driver is claw.
-
- Key (type)ValuesMandatoryDescriptionccwgroup.claw.api_type (string)YesDetermines the packing algorithm for outgoing pakets
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1233"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.online</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Online status</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.bus_id</TT
+> (string)</TD
+><TD
+>example: 0.0.f588</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>qeth</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1258"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.large_send</TT
+> (string)
+ </TD
+><TD
+>example: TSO</TD
+><TD
+>No</TD
+><TD
+>Whether large send is provided. Can be "no", "EDDP"
+ (software) or "TSO" (hardware).</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.card_type</TT
+> (string)</TD
+><TD
+>example: OSD_1000</TD
+><TD
+>Yes</TD
+><TD
+>Type of the card</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.checksumming</TT
+> (string)
+ </TD
+><TD
+>example: sw checksumming</TD
+><TD
+>No</TD
+><TD
+>The method used to checksum incoming packets</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.canonical_macaddr</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Specifies the token ring macaddress format. Not valid in
+ layer2 mode and for ethernet devices.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.broadcast_mode</TT
+> (string)
+ </TD
+><TD
+>example: broadcast_allrings</TD
+><TD
+>No</TD
+><TD
+>The scope of token ring broadcasts. Not valid in layer2
+ mode and for ethernet devices.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.fake_broadcast</TT
+> (int)
+ </TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether to fake broadcast capability. Not valid in layer2
+ mode.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.fake_ll</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether to add a faked link level header to packets.
+ Not valid in layer2 mode.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.layer2</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>Whether the card operates in layer 2 mode</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.portname</TT
+> (string)</TD
+><TD
+>example: OSAPORT</TD
+><TD
+>No</TD
+><TD
+>The port name which has been specified for the card</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.portno</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>The relative port number on the card</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.buffer_count</TT
+> (int)</TD
+><TD
+>example: 16</TD
+><TD
+>Yes</TD
+><TD
+>Number of inbound buffers used</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.add_hhlen</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>No</TD
+><TD
+>How much additional space is provided in the hardware
+ header in skbs in front of packets</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.priority_queueing</TT
+>
+ (string)</TD
+><TD
+>example: always queue 2</TD
+><TD
+>No</TD
+><TD
+>Which priority queueing algorithm is to be used</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.route4</TT
+> (string)</TD
+><TD
+>example: no</TD
+><TD
+>No</TD
+><TD
+>Whether the card has a routing functionality for ipv4.
+ Not valid in layer2 mode.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.route6</TT
+> (string)</TD
+><TD
+>example: no</TD
+><TD
+>No</TD
+><TD
+>Whether the card has a routing functionality for ipv6.
+ Not valid in layer2 mode.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.qeth.state</TT
+> (string)</TD
+><TD
+>example: UP (LAN ONLINE)</TD
+><TD
+>Yes</TD
+><TD
+>The device's current state</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>ctc</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1367"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.ctc.protocol</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The protocol/method used by the connection</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.ctc.type</TT
+> (string)</TD
+><TD
+>example: CTC/A</TD
+><TD
+>Yes</TD
+><TD
+>The device/connection type</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.ctc.buffer</TT
+> (int) </TD
+><TD
+>example: 32768</TD
+><TD
+>No</TD
+><TD
+>The maximum buffer size of the connection</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>lcs</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1398"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.lcs.portnumber</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The port on the card that is used</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.lcs.type</TT
+> (string)</TD
+><TD
+>example: OSA LCS card</TD
+><TD
+>Yes</TD
+><TD
+>The type of the card</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.lcs.lancmd_timeout</TT
+> (int)
+ </TD
+><TD
+>example: 5</TD
+><TD
+>Yes</TD
+><TD
+>The timeout value for LAN commands in seconds</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>ccwgroup</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>claw</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1429"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.claw.api_type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Determines the packing algorithm for outgoing pakets
(matching the remote peer)
- IPUsing the IP protocolPACKEDUsing an enhanced packing algorithmTCPIPUsing the TCP/IP protocolccwgroup.claw.adapter_name (string)
- example: RS1YesThe host name of the remote communication peer.ccwgroup.claw.host_name (string)example: LNX1YesThe host name of the local adapter.ccwgroup.claw.read_buffer (int)example: 4YesThe number of read buffers allocatedccwgroup.claw.write_buffer (int)example: 5YesThe number of write buffers allocatediucv namespace
-
- Device objects with info.bus set to iucv
- are using the "Intra-User Comminication Vehicle" and are
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>IP</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using the IP protocol</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>PACKED</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using an enhanced packing algorithm</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>TCPIP</TD
+><TD
+>&nbsp;</TD
+><TD
+>Using the TCP/IP protocol</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.claw.adapter_name</TT
+> (string)
+ </TD
+><TD
+>example: RS1</TD
+><TD
+>Yes</TD
+><TD
+>The host name of the remote communication peer.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.claw.host_name</TT
+> (string)</TD
+><TD
+>example: LNX1</TD
+><TD
+>Yes</TD
+><TD
+>The host name of the local adapter.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.claw.read_buffer</TT
+> (int)</TD
+><TD
+>example: 4</TD
+><TD
+>Yes</TD
+><TD
+>The number of read buffers allocated</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>ccwgroup.claw.write_buffer</TT
+> (int)</TD
+><TD
+>example: 5</TD
+><TD
+>Yes</TD
+><TD
+>The number of write buffers allocated</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-iucv"
+><TT
+CLASS="literal"
+>iucv</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with <TT
+CLASS="literal"
+>info.bus</TT
+> set to <TT
+CLASS="literal"
+>iucv
+ </TT
+> are using the "Intra-User Comminication Vehicle" and are
described by the following properties.
- Key (type)ValuesMandatoryDescriptioniucv.bus_id (string)example: netiucv0YesThe device's bus id in sysfs
-
- The following properties describe iucv devices
- where linux.driver is netiucv.
-
- Key (type)ValuesMandatoryDescriptioniucv.netiucv.user (string) example: linux12YesThe guest name of the connection's targetiucv.netiucv.buffer (int) example: 32768YesThe maximum buffer size of the connectionblock namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1489"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>iucv.bus_id</TT
+> (string)</TD
+><TD
+>example: netiucv0</TD
+><TD
+>Yes</TD
+><TD
+>The device's bus id in sysfs</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
+ The following properties describe <TT
+CLASS="literal"
+>iucv</TT
+> devices
+ where <TT
+CLASS="literal"
+>linux.driver</TT
+> is <TT
+CLASS="literal"
+>netiucv</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1508"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>iucv.netiucv.user</TT
+> (string) </TD
+><TD
+>example: linux12</TD
+><TD
+>Yes</TD
+><TD
+>The guest name of the connection's target</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>iucv.netiucv.buffer</TT
+> (int) </TD
+><TD
+>example: 32768</TD
+><TD
+>Yes</TD
+><TD
+>The maximum buffer size of the connection</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-block"
+><TT
+CLASS="literal"
+>block</TT
+> namespace</A
+></H3
+><P
+>&#13;
Device objects representing addressable block devices, such as
- drives and partitions, will have info.bus
- set to block and will export a number of
- properties in the block namespace.
-
- Key (type)ValuesMandatoryDescriptionblock.device (string)example: /dev/sda YesSpecial device file to interact with the block deviceblock.major (int)example: 8YesMajor number of special file to interact with the
- deviceblock.minor (int)example: 1YesMinor number of special file to interact with the
- deviceblock.is_volume (bool)YesTrue only when the block device is a volume that can
+ drives and partitions, will have <TT
+CLASS="literal"
+>info.bus</TT
+>
+ set to <TT
+CLASS="literal"
+>block</TT
+> and will export a number of
+ properties in the <TT
+CLASS="literal"
+>block</TT
+> namespace.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1536"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.device</TT
+> (string)</TD
+><TD
+>example: /dev/sda </TD
+><TD
+>Yes</TD
+><TD
+>Special device file to interact with the block device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.major</TT
+> (int)</TD
+><TD
+>example: 8</TD
+><TD
+>Yes</TD
+><TD
+>Major number of special file to interact with the
+ device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.minor</TT
+> (int)</TD
+><TD
+>example: 1</TD
+><TD
+>Yes</TD
+><TD
+>Minor number of special file to interact with the
+ device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.is_volume</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>True only when the block device is a volume that can
be mounted into the file system. In this case the
- volume capability will be set and
- thus, properties, in the volume
- namespace are available.block.no_partitions (bool)YesFor toplevel block devices, this is TRUE only
+ <TT
+CLASS="literal"
+>volume</TT
+> capability will be set and
+ thus, properties, in the <TT
+CLASS="literal"
+>volume</TT
+>
+ namespace are available.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.no_partitions</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>For toplevel block devices, this is TRUE only
when no known partition tables have been found on the
media (In this case, if the storage device contain a
file system it will be accessible using the same
@@ -720,16 +5294,51 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
and the device object representing the filesystem will
appear as a separate device object as a child). For
the child, that is
- when block.is_volume is true, this
+ when <TT
+CLASS="literal"
+>block.is_volume</TT
+> is true, this
property is TRUE exactly when it was created for a
storage device with
- the storage.no_partitions_hint set
+ the <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+> set
to TRUE.
- block.have_scanned (bool)Yes
- An internal property used by HAL to specify whether a top
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>block.have_scanned</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; An internal property used by HAL to specify whether a top
level block device have already been scanned for filesystems.
- Functional Properties
-
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-functional"
+>Functional Properties</A
+></H2
+><P
+>&#13;
The section describe functional properties of device objects,
that is, properties that are merged onto device objects
representing physically addressable hardware. In most
@@ -738,127 +5347,1277 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
however, as HAL can merge properties from anywhere, they
may have been merged from device information files or callouts.
- volume namespace
-
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume"
+><TT
+CLASS="literal"
+>volume</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is for device objects that represent storage
devices with a filesystem that can be mounted. Such device
- objects will have the capability volume and
+ objects will have the capability <TT
+CLASS="literal"
+>volume</TT
+> and
they will export the properties below. Note that device
- objects can only have the volume capability
- if they already have the capability block
- and the property block.is_volume set to TRUE.
-
- Key (type)ValuesMandatoryDescriptionvolume.ignore (bool)YesThis is a hint to software higher in the stack
+ objects can only have the <TT
+CLASS="literal"
+>volume</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>block</TT
+>
+ and the property <TT
+CLASS="literal"
+>block.is_volume</TT
+> set to TRUE.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1596"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.ignore</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This is a hint to software higher in the stack
that this volume should be ignored. If TRUE, the volume
should be invisible in the UI and mount wrappers should
refuse to mount it on behalf on an unprivileged
user. This is useful for hiding e.g. firmware partitions
(e.g. bootstrap on Mac's) and OS reinstall partitions on
- e.g. OEM systems.volume.is_mounted (bool)YesThis property is TRUE if and only if the volume is mountedvolume.mount_point (string)example: /media/compact_flash1 Yes (is blank only when volume.is_mounted is FALSE)A fully qualified path to the mount point of the volumevolume.fsusage (string)example: filesystemYes
- This property specifies the expected usage of the volume
- filesystemThe volume is a mountable filesystempartitiontableThe volume conatains a partitiontableraidThe volume is a member of a raid set and not mountableotherThe volume is not mountable like a swap partitionunusedThe volume is marked a unused or freevolume.fstype (string)example: ext3Yes (is blank if the filesystem type is unknown)volume.fsversion (string)example: FAT32Version number or subtype of the filesystemvolume.label (string)example: 'Fedora Core 1.90' Yes (is blank if no label is found)The label of the volumevolume.uuid (string)example: 4060-6C11Yes (is blank if no UUID is found)The Universal Unique Identifer for the volumevolume.is_disc (bool)YesIf the volume stems from an optical disc, this
+ e.g. OEM systems.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.is_mounted</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property is TRUE if and only if the volume is mounted</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)</TD
+><TD
+>example: /media/compact_flash1 </TD
+><TD
+>Yes (is blank only when volume.is_mounted is FALSE)</TD
+><TD
+>A fully qualified path to the mount point of the volume</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.fsusage</TT
+> (string)</TD
+><TD
+>example: filesystem</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property specifies the expected usage of the volume
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>filesystem</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is a mountable filesystem</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>partitiontable</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume conatains a partitiontable</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>raid</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is a member of a raid set and not mountable</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>other</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is not mountable like a swap partition</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unused</TD
+><TD
+>&nbsp;</TD
+><TD
+>The volume is marked a unused or free</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.fstype</TT
+> (string)</TD
+><TD
+>example: ext3</TD
+><TD
+>Yes (is blank if the filesystem type is unknown)</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.fsversion</TT
+> (string)</TD
+><TD
+>example: FAT32</TD
+><TD
+>&nbsp;</TD
+><TD
+>Version number or subtype of the filesystem</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.label</TT
+> (string)</TD
+><TD
+>example: 'Fedora Core 1.90' </TD
+><TD
+>Yes (is blank if no label is found)</TD
+><TD
+>The label of the volume</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.uuid</TT
+> (string)</TD
+><TD
+>example: 4060-6C11</TD
+><TD
+>Yes (is blank if no UUID is found)</TD
+><TD
+>The Universal Unique Identifer for the volume</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.is_disc</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>If the volume stems from an optical disc, this
property is true and the device object will also have
- the capability volume.discvolume.block_size (string)No
- The block size of the volume
- volume.num_blocks (string)No
- Number of blocks on the volume
- volume.size (uint64)No
- Size of the volume in bytes
- volume.is_partition (bool)Yes
- If the volume stems from a partition on e.g. a hard
- disk, this property is set to TRUE.
- volume.partition.number (int)
- If, and only if, volume.is_partition
- is set to TRUE.
-
- The number of the partition.
- volume.partition.x86_type (int)examples: 0x83, 0xfd, 0x8e
- No
-
- If available, this is the partition type if the disk for which
+ the capability <TT
+CLASS="literal"
+>volume.disc</TT
+></TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.block_size</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The block size of the volume
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.num_blocks</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Number of blocks on the volume
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.size</TT
+> (uint64)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Size of the volume in bytes
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.is_partition</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If the volume stems from a partition on e.g. a hard
+ disk, this property is set to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.partition.number</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; If, and only if, <TT
+CLASS="literal"
+>volume.is_partition</TT
+>
+ is set to <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>&#13; The number of the partition.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.partition.x86_type</TT
+> (int)</TD
+><TD
+>examples: 0x83, 0xfd, 0x8e</TD
+><TD
+>&#13; No
+ </TD
+><TD
+>&#13; If available, this is the partition type if the disk for which
this volume stems from is using an MS-DOS-style partition table.
-
- Device objects with this capability may emit the following
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; Device objects with this capability may emit the following
device conditions
- Condition NameParametersExampleDescriptionVolumeMount
- block.device (string),
- volume.mount_point (string)
-
- /dev/sda1,
- /media/compact_flash
- Emitted when a volume is mountedVolumeUnmount
- block.device (string),
- volume.mount_point (string)
-
- /dev/sda1,
- /media/compact_flash
- Emitted when a volume is unmountedVolumeUnmountForced
- block.device (string),
- volume.mount_point (string)
-
- /dev/sda1,
- /media/compact_flash
-
- Emitted when a volume is forcibly unmounted because
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1725"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Condition Name</TH
+><TH
+>Parameters</TH
+><TH
+>Example</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>VolumeMount</TT
+></TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>Emitted when a volume is mounted</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>VolumeUnmount</TT
+></TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>Emitted when a volume is unmounted</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>VolumeUnmountForced</TT
+></TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>block.device</TT
+> (string),
+ <TT
+CLASS="literal"
+>volume.mount_point</TT
+> (string)
+ </TD
+><TD
+>&#13; <TT
+CLASS="literal"
+>/dev/sda1</TT
+>,
+ <TT
+CLASS="literal"
+>/media/compact_flash</TT
+>
+ </TD
+><TD
+>&#13; Emitted when a volume is forcibly unmounted because
the media backing the volume was removed.
- system namespace
-
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-kernel"
+><TT
+CLASS="literal"
+>system</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is found on the toplevel "Computer" device,
and represents information about the system and the currently
running kernel.
- Key (type)ValuesMandatoryDescriptionsystem.kernel.name (string)example: LinuxNo
- The name of the kernel, usually the equivalent of
- uname -s.
- system.kernel.version (string)example: 2.6.5-7.104-defaultNo
- The version of the currently running kernel. Usually
- the equivalent of uname -r.
- system.kernel.machine (string)example: i686No
- The "machine hardware name" of the currently running kernel.
- Usually the equivalent of uname -m.
- system.formfactor (string)example: laptop, desktop, server, unknownYes
- The formfactor of the system. Usually the equivalent of
- smbios.chassis.type or set from information
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1768"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.kernel.name</TT
+> (string)</TD
+><TD
+>example: Linux</TD
+><TD
+>No</TD
+><TD
+>&#13; The name of the kernel, usually the equivalent of
+ <TT
+CLASS="literal"
+>uname -s</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.kernel.version</TT
+> (string)</TD
+><TD
+>example: 2.6.5-7.104-default</TD
+><TD
+>No</TD
+><TD
+>&#13; The version of the currently running kernel. Usually
+ the equivalent of <TT
+CLASS="literal"
+>uname -r</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.kernel.machine</TT
+> (string)</TD
+><TD
+>example: i686</TD
+><TD
+>No</TD
+><TD
+>&#13; The "machine hardware name" of the currently running kernel.
+ Usually the equivalent of <TT
+CLASS="literal"
+>uname -m</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.formfactor</TT
+> (string)</TD
+><TD
+>example: laptop, desktop, server, unknown</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The formfactor of the system. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.chassis.type</TT
+> or set from information
about ACPI/APM/PMU properties.
- system.vendor (string)No
- The name of the manufacturer of the machine. Usually the equivalent of
- smbios.system.manufacturer.
- system.product (string)No
- The product name of the machine. Usually the equivalent of
- smbios.system.product and
- smbios.system.version.
- volume.disc namespace
-
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.vendor</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The name of the manufacturer of the machine. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.system.manufacturer</TT
+>.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>system.product</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The product name of the machine. Usually the equivalent of
+ <TT
+CLASS="literal"
+>smbios.system.product</TT
+> and
+ <TT
+CLASS="literal"
+>smbios.system.version</TT
+>.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume-disc"
+><TT
+CLASS="literal"
+>volume.disc</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is for device objects that represent optical
discs, e.g. device objects with the capability
- volume.disc. Such device objects will
- also have the capability volume.
-
- Key (type)ValuesMandatoryDescriptionvolume.disc.has_audio (bool)YesIs true only if the disc contains audiovolume.disc.has_data (bool)YesIs true only if the disc contains datavolume.disc.is_vcd (bool)YesIs true only if the disc is a Video CDvolume.disc.is_svcd (bool)YesIs true only if the disc is a Super Video CDvolume.disc.is_videodvd (bool)YesIs true only if the disc is a Video DVDvolume.disc.is_appendable (bool)YesIs true only if it's possible to write additional datavolume.disc.is_blank (bool)YesIs true only if the disc is blankvolume.disc.is_rewritable (bool)YesIs true only if the disc is rewritablevolume.disc.capacity (uint64)NoCapacity of disc, in bytesvolume.disc.type (string)YesThis property specifies the physical type of the disccd_romCD-ROM disccd_rCD-R disccd_rwCD-RW discdvd_romDVD-ROM discdvd_ramDVD-RAM discdvd_rDVD-R discdvd_rwDVD-RW discdvd_plus_rDVD+R discdvd_plus_rwDVD+RW discunknownUnknown type or lack of support from drive to determine the typestorage namespace
-
+ <TT
+CLASS="literal"
+>volume.disc</TT
+>. Such device objects will
+ also have the capability <TT
+CLASS="literal"
+>volume</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1826"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.has_audio</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc contains audio</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.has_data</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc contains data</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_vcd</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Video CD</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_svcd</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Super Video CD</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_videodvd</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is a Video DVD</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_appendable</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if it's possible to write additional data</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_blank</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is blank</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.is_rewritable</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Is true only if the disc is rewritable</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.capacity</TT
+> (uint64)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Capacity of disc, in bytes</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.disc.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property specifies the physical type of the disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cd_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>CD-RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_rom</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-ROM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_ram</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-RAM disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD-RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_plus_r</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD+R disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>dvd_plus_rw</TD
+><TD
+>&nbsp;</TD
+><TD
+>DVD+RW disc</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unknown</TD
+><TD
+>&nbsp;</TD
+><TD
+>Unknown type or lack of support from drive to determine the type</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage"
+><TT
+CLASS="literal"
+>storage</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is used to describe physical storage devices
and their capabilities. Such device objects will have the
- capability storage and
+ capability <TT
+CLASS="literal"
+>storage</TT
+> and
they will export the properties below. Note that device
- objects can only have the storage capability
- if they already got capability block and the
- property block.is_volume set to FALSE.
- One significant between the storage and
- block namespace is that the properties
- exported in the storage represents
+ objects can only have the <TT
+CLASS="literal"
+>storage</TT
+> capability
+ if they already got capability <TT
+CLASS="literal"
+>block</TT
+> and the
+ property <TT
+CLASS="literal"
+>block.is_volume</TT
+> set to FALSE.
+ One significant between the <TT
+CLASS="literal"
+>storage</TT
+> and
+ <TT
+CLASS="literal"
+>block</TT
+> namespace is that the properties
+ exported in the <TT
+CLASS="literal"
+>storage</TT
+> represents
constant vital product information, whereas the properties
- in the block namespace represent
+ in the <TT
+CLASS="literal"
+>block</TT
+> namespace represent
variable system-dependent information.
- Key (type)ValuesMandatoryDescriptionstorage.bus (string)YesPhysical interface the storage device is attached toideIDE or ATA interfaceusbUSB interfaceieee1394IEEE 1394 interfacescsiSCSI interfacesataSATA interfaceplatformLegacy device that is part of the platformstorage.drive_type (string)Yes
- The type of the drive. Note that it may not be
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN1957"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.bus</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Physical interface the storage device is attached to</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>ide</TD
+><TD
+>&nbsp;</TD
+><TD
+>IDE or ATA interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>usb</TD
+><TD
+>&nbsp;</TD
+><TD
+>USB interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>ieee1394</TD
+><TD
+>&nbsp;</TD
+><TD
+>IEEE 1394 interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>scsi</TD
+><TD
+>&nbsp;</TD
+><TD
+>SCSI interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sata</TD
+><TD
+>&nbsp;</TD
+><TD
+>SATA interface</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>platform</TD
+><TD
+>&nbsp;</TD
+><TD
+>Legacy device that is part of the platform</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.drive_type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the drive. Note that it may not be
possible to probe for some of these properties so in
some cases memory card readers may appear as
harddisks. Device information files can be used to
override this value.
- diskThe device is a harddiskcdromThe device is an optical drive. The device object will also have the capability storage.cdrom in this case.floppyThe device is a floppy disk drivetapeThe device is a tape drivecompact_flashThe device is a card reader for Compact Flash memory cardsmemory_stickThe device is a card reader for MemoryStick memory cardssmart_mediaThe device is a card reader for SmartMedia memory cardssd_mmcThe device is a card reader for SecureDigital/MultiMediaCard memory cardsstorage.removable (bool)YesMedia can be removed from the storage devicestorage.requires_eject (bool)YesThe eject ioctl is required to properly eject the mediastorage.hotpluggable (bool)YesThe storage device can be removed while the system is runningstorage.media_check_enabled (bool)YesIf this property is set to FALSE then HAL will not continuosly poll for media changes. storage.automount_enabled_hint (bool)YesThis property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.storage.no_partitions_hint (bool)Yes
- This property is a hint to programs that maintain the
- /etc/fstab file to signal, when
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>disk</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a harddisk</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cdrom</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is an optical drive. The device object will also have the capability <TT
+CLASS="literal"
+>storage.cdrom</TT
+> in this case.</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>floppy</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a floppy disk drive</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>tape</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a tape drive</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>compact_flash</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for Compact Flash memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>memory_stick</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for MemoryStick memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>smart_media</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for SmartMedia memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sd_mmc</TD
+><TD
+>&nbsp;</TD
+><TD
+>The device is a card reader for SecureDigital/MultiMediaCard memory cards</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.removable</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Media can be removed from the storage device</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.requires_eject</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The eject ioctl is required to properly eject the media</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.hotpluggable</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The storage device can be removed while the system is running</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.media_check_enabled</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>If this property is set to FALSE then HAL will not continuosly poll for media changes. </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.automount_enabled_hint</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property is a hint to programs that maintain the
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file to signal, when
TRUE, that the storage drive (such as floppy or
optical drives) is used for media with no partition
table so an entry can be added ahead of media
@@ -870,108 +6629,1013 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
formatted with a PC style partition table and a single
FAT partition. However, it may be formatted with just
a single FAT partition and no partition table).
- storage.physical_device (string)Yes
- This contains the UDI of the device object
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.physical_device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This contains the UDI of the device object
representing the physical device or blank if
there is no such device (which is TRUE for legacy
devices such as x86 floppy drives). Additionally, a
number of properties are merged from that device
object. Specifically, all properties prefixed
- with storage and, if the physical
+ with <TT
+CLASS="literal"
+>storage</TT
+> and, if the physical
device has several storage ports,
- storage_lunX (where X is number of
+ <TT
+CLASS="literal"
+>storage_lunX</TT
+> (where X is number of
the port starting from zero) are merged and will have
- the prefix storage. See for an example.
- storage.model (string)YesThe name of the drivestorage.vendor (string)YesThe vendor of the drivestorage.serial (string)NoThe serial number of the drivestorage.firmware_revision (string)NoThe revision of the firmware of the drivestorage.icon.drive (string)No
- Name of icon to use for displaying the drive. The name
+ the prefix <TT
+CLASS="literal"
+>storage</TT
+>. See <A
+HREF="#fdi-example-6in1"
+>the Section called <I
+>Example: Card Reader</I
+> in the Chapter called <I
+>Device Information Files</I
+></A
+> for an example.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.model</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The name of the drive</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.vendor</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The vendor of the drive</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.serial</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The serial number of the drive</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.firmware_revision</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>The revision of the firmware of the drive</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.icon.drive</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Name of icon to use for displaying the drive. The name
must comply with freedesktop.org icon-theme specification
and must not be an absolute path.
This property exists such that e.g. OEM's can install
- icons in /usr/share/icons/hicolor
+ icons in <TT
+CLASS="literal"
+>/usr/share/icons/hicolor</TT
+>
a device information file matching their device.
- storage.icon.volume (string)No
- Name of icon to use for displaying volumes from the drive.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.icon.volume</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Name of icon to use for displaying volumes from the drive.
The name must comply with freedesktop.org icon-theme
specification and must not be an absolute path.
This property exists such that e.g. OEM's can install
- icons in /usr/share/icons/hicolor
+ icons in <TT
+CLASS="literal"
+>/usr/share/icons/hicolor</TT
+>
a device information file matching their device.
- storage.cdrom namespace
-
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-cdrom"
+><TT
+CLASS="literal"
+>storage.cdrom</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is used to describe optical storage drives
and their capabilities.Such device objects will have the
- capability storage.cdrom and
+ capability <TT
+CLASS="literal"
+>storage.cdrom</TT
+> and
they will export the properties below. Note that device
- objects can only have the storage.cdrom capability
- if they already got the capability storage.
-
- Key (type)ValuesMandatoryDescriptionstorage.cdrom.cdr (bool)YesTRUE when the optical drive can write CD-R discsstorage.cdrom.cdrw (bool)YesTRUE when the optical drive can blank and write to CD-RW discsstorage.cdrom.dvd (bool)YesTRUE when the optical drive can read DVD-ROM discsstorage.cdrom.dvdr (bool)YesTRUE when the optical drive can write to DVD-R discsstorage.cdrom.dvdrw (bool)YesTRUE when the optical drive can blank and write to DVD-RW discsstorage.cdrom.dvdram (bool)YesTRUE when the optical drive can write to DVD-RAM discsstorage.cdrom.dvdplusr (bool)YesTRUE when the optical drive can write to DVD+R discsstorage.cdrom.dvdplusrw (bool)YesTRUE when the optical drive can blank and write to DVD+RW discsstorage.cdrom.dvdplusrdl (bool)YesTRUE when the optical drive can write to DVD+R Dual-Layer discsstorage.cdrom.support_media_changed (bool)YesTRUE if the drive can generate media changed eventsstorage.cdrom.read_speed (int)YesThe maximum reading speed, in kb/sstorage.cdrom.write_speed (int)YesThe maximum writing speed, in kb/sstorage.cdrom.write_speeds (strlist)NoBy the device supported write speeds in kb/snet namespace
-
+ objects can only have the <TT
+CLASS="literal"
+>storage.cdrom</TT
+> capability
+ if they already got the capability <TT
+CLASS="literal"
+>storage</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2151"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.cdr</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write CD-R discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.cdrw</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to CD-RW discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvd</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can read DVD-ROM discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdr</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD-R discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdrw</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to DVD-RW discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdram</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD-RAM discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdplusr</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD+R discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdplusrw</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can blank and write to DVD+RW discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.dvdplusrdl</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE when the optical drive can write to DVD+R Dual-Layer discs</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.support_media_changed</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TRUE if the drive can generate media changed events</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.read_speed</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The maximum reading speed, in kb/s</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.write_speed</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The maximum writing speed, in kb/s</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.cdrom.write_speeds</TT
+> (strlist)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>By the device supported write speeds in kb/s</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net"
+><TT
+CLASS="literal"
+>net</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is used to describe networking devices and
their capabilities.Such device objects will have the
- capability net and they will export the
+ capability <TT
+CLASS="literal"
+>net</TT
+> and they will export the
properties below. This namespace only describe the generic
aspect of networking devices; specific networking technologies
such as IEEE 802.3 and IEEE 802.11 have separate namespaces.
- Key (type)ValuesMandatoryDescriptionnet.address (string)YesHardware address as a string. Is hardware dependantnet.arp_proto_hw_id (string)YesARP protocol hardware identifiernet.interface (string)YesName of the interface; may change if an interface is
- renamednet.interface_up (bool)YesWhether the interface is upnet.linux.ifindex (string)Yes (only on Linux)Index of the interfacenet.physical_device (string)YesUDI of the physical device the network device is bound to.net.media (string)example: EthernetYesTextual description of the networking medianet.80203 namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2243"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.address</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Hardware address as a string. Is hardware dependant</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.arp_proto_hw_id</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>ARP protocol hardware identifier</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.interface</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Name of the interface; may change if an interface is
+ renamed</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.interface_up</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Whether the interface is up</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.linux.ifindex</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes (only on Linux)</TD
+><TD
+>Index of the interface</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.physical_device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>UDI of the physical device the network device is bound to.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.media</TT
+> (string)</TD
+><TD
+>example: Ethernet</TD
+><TD
+>Yes</TD
+><TD
+>Textual description of the networking media</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net-80203"
+><TT
+CLASS="literal"
+>net.80203</TT
+> namespace</A
+></H3
+><P
+>&#13;
Ethernet networking devices is described in this namespace
for device objects with the capability
- net.80203.
+ <TT
+CLASS="literal"
+>net.80203</TT
+>.
Note that device
- objects can only have the net.80203 capability
- if they already have the capability net.
-
- Key (type)ValuesMandatoryDescriptionnet.80203.link (bool)
- Only if the net.80203 capability is set
- and net.interface_up is
- TRUE.
- True if the ethernet adaptor is connected to a
- another transceiver. NOTE: property not implemented yet.net.80203.rate (uint64)example: 100000000
- Only if the net.80203 capability is set
- and net.80203.link is
- TRUE.
- Bandwidth of connection, in bits/s. NOTE: property not
- implemented yet.net.80203.mac_address (uint64)example: 0x0010605d8ef4Only if the net.80203 is set48-bit address
- net.80211 namespace
-
+ objects can only have the <TT
+CLASS="literal"
+>net.80203</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>net</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2301"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.80203.link</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> capability is set
+ and <TT
+CLASS="literal"
+>net.interface_up</TT
+> is
+ <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>True if the ethernet adaptor is connected to a
+ another transceiver. NOTE: property not implemented yet.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.80203.rate</TT
+> (uint64)</TD
+><TD
+>example: 100000000</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> capability is set
+ and <TT
+CLASS="literal"
+>net.80203.link</TT
+> is
+ <TT
+CLASS="literal"
+>TRUE</TT
+>.
+ </TD
+><TD
+>Bandwidth of connection, in bits/s. NOTE: property not
+ implemented yet.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.80203.mac_address</TT
+> (uint64)</TD
+><TD
+>example: 0x0010605d8ef4</TD
+><TD
+>Only if the <TT
+CLASS="literal"
+>net.80203</TT
+> is set</TD
+><TD
+>48-bit address</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-net-80211"
+><TT
+CLASS="literal"
+>net.80211</TT
+> namespace</A
+></H3
+><P
+>&#13;
Wireless ethernet networking devices is described in this namespace
for device objects with the capability
- net.80211.
+ <TT
+CLASS="literal"
+>net.80211</TT
+>.
Note that device
- objects can only have the net.80211 capability
- if they already have the capability net.
-
- Key (type)ValuesMandatoryDescriptionnet.80211.mac_address (uint64)example: 0x0010605d8ef4
- Only if the net.80211 capability is set
- 48-bit address
- input namespace
-
+ objects can only have the <TT
+CLASS="literal"
+>net.80211</TT
+> capability
+ if they already have the capability <TT
+CLASS="literal"
+>net</TT
+>.
+
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2343"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>net.80211.mac_address</TT
+> (uint64)</TD
+><TD
+>example: 0x0010605d8ef4</TD
+><TD
+>&#13; Only if the <TT
+CLASS="literal"
+>net.80211</TT
+> capability is set
+ </TD
+><TD
+>48-bit address</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13; </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-input"
+><TT
+CLASS="literal"
+>input</TT
+> namespace</A
+></H3
+><P
+>&#13;
This namespace is concerned with human input devices such as
keyboards, mice, pointing devices and game controllers. If a
- device object has the capability input then
+ device object has the capability <TT
+CLASS="literal"
+>input</TT
+> then
the following properties are available
- Key (type)ValuesMandatoryDescriptioninput.device (string)YesSpecial device file for recieving input eventspcmcia_socket namespace
-
- Device objects with the capability pcmcia_socket
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2365"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>input.device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>Special device file for recieving input events</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-pcmcia_socket"
+><TT
+CLASS="literal"
+>pcmcia_socket namespace</TT
+></A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>pcmcia_socket</TT
+>
represent bridge devices (the actual bus of the device may differ)
that PCMCIA cards can be attached to. The following properties are
available.
- Key (type)ValuesMandatoryDescriptionpcmcia_socket.number (int)YesPCMCIA socket number, starting from zeroprinter namespace
-
- Device objects with the capability printer
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2385"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>pcmcia_socket.number</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>PCMCIA socket number, starting from zero</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-printer"
+><TT
+CLASS="literal"
+>printer</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>printer</TT
+>
represent printers. The following properties are available.
- Key (type)ValuesMandatoryDescriptionprinter.device (string)YesTODOprinter.vendor (string)YesTODOprinter.product (string)YesTODOprinter.serial (string)YesTODOprinter.description (string)YesTODOportable_audio_player namespace
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2405"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>printer.device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>printer.vendor</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>printer.product</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>printer.serial</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>printer.description</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>TODO</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-portable_audio_player"
+><TT
+CLASS="literal"
+>portable_audio_player</TT
+> namespace</A
+></H3
+><P
+>&#13;
Device objects with the capability
- portable_audio_player represent portable
+ <TT
+CLASS="literal"
+>portable_audio_player</TT
+> represent portable
audio players that can be attached to a computer to exchange
files. They can also playback audio. Sometimes they can also
record audio. This capability can't, in general, be reliably
@@ -983,100 +7647,625 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
the device object representing the appropriate USB
interface. The following properties are available:
- Key (type)ValuesMandatoryDescriptionportable_audio_player.access_method (string)YesThis property defines how the device is accessed storage
- The device is accessed as a Mass Storage device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2449"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>portable_audio_player.access_method</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property defines how the device is accessed </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>storage</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed as a Mass Storage device
through a kernel driver. Application Developers
should descent down the device object tree to find the
device object of capability
- storage in order to access the
+ <TT
+CLASS="literal"
+>storage</TT
+> in order to access the
device.
- user
- The device is accessed from userspace through
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>user</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed from userspace through
a userspace driver.
- portable_audio_player.output_formats (string)example: audio/mpeg audio/x-ms-wmaYes
- A whitespace-separated list of MIME-types representing
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>portable_audio_player.output_formats</TT
+> (string)</TD
+><TD
+>example: audio/mpeg audio/x-ms-wma</TD
+><TD
+>Yes</TD
+><TD
+>&#13; A whitespace-separated list of MIME-types representing
the kind of audio formats that the device can play back
- portable_audio_player.input_formats (string)example: audio/x-wavYes
- A whitespace-separated list of MIME-types representing
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>portable_audio_player.input_formats</TT
+> (string)</TD
+><TD
+>example: audio/x-wav</TD
+><TD
+>Yes</TD
+><TD
+>&#13; A whitespace-separated list of MIME-types representing
the kind of audio formats that the device can record. If
empty, it means that the device is not capable of recording.
- alsa namespace
-
- Device objects with the capability alsa
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-alsa"
+><TT
+CLASS="literal"
+>alsa</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>alsa</TT
+>
represent all the streams available through ALSA on a soundcard.
- Key (type)ValuesMandatoryDescriptionalsa.card (int)Yes
- Card number in system as registered by ALSA.
- alsa.card_id (string)
- Examples: I82801DBICH4, MP3
- No
- Textual description of the card.
- alsa.device (int)Yes
- Device number assigned by ALSA for a current card.
- alsa.device_file (string)Yes
- The device node to access the ALSA device.
- alsa.device_id (string)
- Examples: Intel 82801DB-ICH4 MIC2 ADC
- No
- Textual description of the specific device for a card
- alsa.physical_device (string)Yes
- UDI of the physical device the ALSA device is bound to.
- alsa.type (string)Yes
- The type of the stream.
- control
- Stream is control device.
- capture
- Stream is capture device.
- playback
- Stream is playback device.
- timer
- Stream is the global ALSA timer device.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2497"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.card</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Card number in system as registered by ALSA.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.card_id</TT
+> (string)</TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>I82801DBICH4</TT
+>, <TT
+CLASS="literal"
+>MP3</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the card.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.device</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Device number assigned by ALSA for a current card.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.device_file</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The device node to access the ALSA device.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.device_id</TT
+> (string)</TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>Intel 82801DB-ICH4 MIC2 ADC</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the specific device for a card
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.physical_device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; UDI of the physical device the ALSA device is bound to.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the stream.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>control</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is control device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>capture</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is capture device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>playback</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is playback device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>timer</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is the global ALSA timer device.
This means, the device is for all ALSA devices/cards.
- sequencer
- Stream is the global ALSA sequencer device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>sequencer</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is the global ALSA sequencer device.
This means, the device is for all ALSA devices/cards.
- unknown
- Stream is unknown device.
- oss namespace
- Device objects with the capability oss
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>unknown</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is unknown device.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-oss"
+><TT
+CLASS="literal"
+>oss</TT
+> namespace</A
+></H3
+><P
+>&#13; Device objects with the capability <TT
+CLASS="literal"
+>oss</TT
+>
represent all the streams available through OSS on a soundcard.
OSS devices could be emulated by ALSA.
-
+ </P
+><P
+>
Note: All OSS devices, except the global devices, are only added if the
kernel supports links from oss device to physical device in sysfs. For a patch
see: http://thread.gmane.org/gmane.comp.freedesktop.hal/2862.
- Key (type)ValuesMandatoryDescriptionoss.card (int)Yes
- Card number in system as registered by OSS (and/or ALSA).
- oss.card_id (string)
- Examples: I82801DBICH4, MP3
- No
- Textual description of the card.
- oss.device (int)Yes
- Device number assigned by OSS/ALSA for a current card.
- alsa.device_file (string)Yes
- The device node to access the OSS device.
- oss.device_id (string)
- Examples: Intel 82801DB-ICH4 MIC2 ADC
- No
- Textual description of the specific device for a card
- oss.physical_device (string)Yes
- UDI of the physical device the OSS device is bound to.
- oss.type (string)Yes
- The type of the stream.
- mixer
- Stream is control/mixer device.
- pcm
- Stream is PCM device.
- midi
- Stream is MIDI device.
- sequencer
- Stream is a global OSS sequencer device.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2593"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.card</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Card number in system as registered by OSS (and/or ALSA).
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.card_id</TT
+> (string)</TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>I82801DBICH4</TT
+>, <TT
+CLASS="literal"
+>MP3</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the card.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.device</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; Device number assigned by OSS/ALSA for a current card.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>alsa.device_file</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The device node to access the OSS device.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.device_id</TT
+> (string)</TD
+><TD
+>&#13; Examples: <TT
+CLASS="literal"
+>Intel 82801DB-ICH4 MIC2 ADC</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; Textual description of the specific device for a card
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.physical_device</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; UDI of the physical device the OSS device is bound to.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>oss.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The type of the stream.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>mixer</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is control/mixer device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>pcm</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is PCM device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>midi</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is MIDI device.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>sequencer</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is a global OSS sequencer device.
This means, the device is for all OSS devices/cards.
- unknown
- Stream is unknown device.
- camera namespace
-
- Device objects with the capability camera
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>unknown</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Stream is unknown device.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-camera"
+><TT
+CLASS="literal"
+>camera</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>camera</TT
+>
represent digital still cameras that can be attached to a
computer to exchange files. This does not include card readers
for memory cards used for cameras. This capability can't, in
@@ -1089,358 +8278,2273 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
representing the appropriate USB interface. The following
properties are available:
- Key (type)ValuesMandatoryDescriptioncamera.access_method (string)YesThis property defines how the device is accessed storage
- The device is accessed as a Mass Storage device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2682"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>camera.access_method</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>This property defines how the device is accessed </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>storage</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed as a Mass Storage device
through a kernel driver. Application Developers
should descent down the device object tree to find the
device object of capability
- storage in order to access the
+ <TT
+CLASS="literal"
+>storage</TT
+> in order to access the
device.
- user
- The device is accessed from userspace through
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>user</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device is accessed from userspace through
a userspace driver.
- camera.libgphoto2.support (bool)No
- If true, the device is supported by a userspace driver
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+><TD
+>&nbsp;</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>camera.libgphoto2.support</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If true, the device is supported by a userspace driver
from the libgphoto2 project.
- laptop_panel namespace
-
- Device objects with the capability laptop_panel
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-laptop-panel"
+><TT
+CLASS="literal"
+>laptop_panel</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>laptop_panel</TT
+>
represent devices capable of changing the brightness of the display.
- Key (type)ValuesMandatoryDescriptionlaptop_panel.num_levels (int)Yes
- The brightness levels supported by the adaptor.
- laptop_panel.access_method (string)Yes
- The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
- ac_adaptor namespace
-
- Device objects with the capability ac_adaptor
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2724"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>laptop_panel.num_levels</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The brightness levels supported by the adaptor.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>laptop_panel.access_method</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-ac_adaptor"
+><TT
+CLASS="literal"
+>ac_adaptor</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>ac_adaptor</TT
+>
represent all the devices capable of powering the system from AC power
- Key (type)ValuesMandatoryDescriptionac_adaptor.present (bool)Yes
- The state of the adaptor, i.e. whether it is providing power to
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2750"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ac_adaptor.present</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The state of the adaptor, i.e. whether it is providing power to
the unit from mains power.
- battery namespace
-
- Device objects with the capability battery
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-battery"
+><TT
+CLASS="literal"
+>battery</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>battery</TT
+>
represent all the devices having some battery (in many cases -
rechargeable) inside.
- Key (type)ValuesMandatoryDescriptionbattery.present (bool)Yes
- This is present as some smart batteries can have acpi/pmu
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN2770"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.present</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This is present as some smart batteries can have acpi/pmu
entries, and be physically missing.
- battery.type (string)Yes
- This property defines the type of the device holding the
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; This property defines the type of the device holding the
battery. This property is defined for the development
simplicity - battery indicators can use it to find the
proper iconic representation.
- pda
- The device containing the battery is a personal digital
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>pda</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a personal digital
assistant, e.g. a device that looks like a handheld computer
to do specific tasks such as keeping notes or containing
a personal database
- ups
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>ups</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>
A battery powered power supply that is
guaranteed to provide power to a computer in the event of
interruptions in the incoming electrical power. Most of the
time this is an external device.
- primary
- The battery is a primary power source for the system - an
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>primary</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The battery is a primary power source for the system - an
example are laptop batteries.
- mouse
- The device containing the battery is a mouse.
- keyboard
- The device containing the battery is a keyboard.
- keyboard_mouse
- The device containing the battery is a combined mouse and keyboard.
- camera
- The device containing the battery is a camera.
- unknown
- The device containing the battery is not covered by other types.
- battery.charge_level.unit (string)Examples:
- mWh,
- percent
- No
- The physical unit used by the charge level properties
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>mouse</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a mouse.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>keyboard</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a keyboard.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>keyboard_mouse</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a combined mouse and keyboard.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>camera</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is a camera.
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+><TT
+CLASS="literal"
+>unknown</TT
+></TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The device containing the battery is not covered by other types.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.unit</TT
+> (string)</TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>mWh</TT
+>,
+ <TT
+CLASS="literal"
+>percent</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical unit used by the charge level properties
(maximum and current). In many cases, this property is
omitted - which indicates that the charge properties
are measured in some unknown units.
The units should never be mAh as this is not a measurement
of charge.
- battery.charge_level.design (int)Yes
- The maximum level of charge the device was designed for.
- Measured in "battery.charge_level.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.design</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device was designed for.
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.charge_level.last_full (int)Yes
- The maximum level of charge the device could hold the last
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.last_full</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device could hold the last
time it was full.
- Measured in "battery.charge_level.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.charge_level.current (int)Yes
- The current level of charge which the device can is holding.
- Measured in "battery.charge_level.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.current</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The current level of charge which the device can is holding.
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.charge_level.rate (int)No
- The discharge/charge rate measured
- in "battery.charge_level.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.rate</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The discharge/charge rate measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units per second.
- battery.charge_level.warning (int)No
- Once the charge level of the battery drops below this value its
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.warning</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value its
state changes to 'warning'.
- Measured in "battery.charge_level.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.charge_level.low (int)No
- Once the charge level of the battery drops below this value its
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.low</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value its
state changes to 'low'.
- Measured in "battery.charge_level.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.charge_level.granularity_1 (int)No
- Granularity value one of the battery measured
- in "battery.charge_level.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.granularity_1</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Granularity value one of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units .
- battery.charge_level.granularity_2 (int)No
- Granularity value two of the battery measured
- in "battery.charge_level.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.granularity_2</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Granularity value two of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.charge_level.unit"</TT
+>
units.
- battery.reporting.unit (string)Examples:
- mWh,
- mAh,
- percent
- No
- The physical unit used by the charge level properties
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.unit</TT
+> (string)</TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>mWh</TT
+>,
+ <TT
+CLASS="literal"
+>mAh</TT
+>,
+ <TT
+CLASS="literal"
+>percent</TT
+>
+ </TD
+><TD
+>No</TD
+><TD
+>&#13; The physical unit used by the charge level properties
(maximum and current) as reported by the hardware.
In many cases, this property is omitted - which indicates
that the charge properties are measured in some unknown units.
- battery.reporting.design (int)Yes
- The maximum level of charge the device was designed for,
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.design</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The maximum level of charge the device was designed for,
as reported by the hardware.
- Measured in "battery.reporting.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.reporting.last_full (int)No
- The maximum level of charge the device could hold the last
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.last_full</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The maximum level of charge the device could hold the last
time it was full, as reported by the hardware.
- Measured in "battery.reporting.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.reporting.current (int)No
- The current level of charge which the device is holding,
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.current</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The current level of charge which the device is holding,
as reported by the hardware.
- Measured in "battery.reporting.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.reporting.rate (int)No
- The discharge/charge rate as reported by the hardware measured
- in "battery.reporting.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.rate</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The discharge/charge rate as reported by the hardware measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units per second.
- battery.reporting.warning (int)No
- Once the hardware charge level of the battery drops below
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.warning</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the hardware charge level of the battery drops below
this value its state changes to 'warning'.
- Measured in "battery.reporting.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.reporting.low (int)No
- Once the hardware charge level of the battery drops below
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.low</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the hardware charge level of the battery drops below
this value its state changes to 'low'.
- Measured in "battery.reporting.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.reporting.granularity_1 (int)No
- Hardware granularity value one of the battery measured
- in "battery.reporting.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.granularity_1</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Hardware granularity value one of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units .
- battery.reporting.granularity_2 (int)No
- Hardware granularity value two of the battery measured
- in "battery.reporting.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.reporting.granularity_2</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Hardware granularity value two of the battery measured
+ in <TT
+CLASS="literal"
+>"battery.reporting.unit"</TT
+>
units.
- battery.charge_level.capacity_state (string)Examples: ok, criticalNo
- The capacity state of the battery.
- battery.voltage.unit (string)Examples: mVNo
- The physical measurement unit used by the voltage properties
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.capacity_state</TT
+> (string)</TD
+><TD
+>Examples: <TT
+CLASS="literal"
+>ok</TT
+>, <TT
+CLASS="literal"
+>critical</TT
+></TD
+><TD
+>No</TD
+><TD
+>&#13; The capacity state of the battery.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.voltage.unit</TT
+> (string)</TD
+><TD
+>Examples: <TT
+CLASS="literal"
+>mV</TT
+></TD
+><TD
+>No</TD
+><TD
+>&#13; The physical measurement unit used by the voltage properties
(design and current).
- battery.voltage.design (int)Yes
- The voltage level for which the battery is designed for.
- Measured in "battery.voltage.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.voltage.design</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The voltage level for which the battery is designed for.
+ Measured in <TT
+CLASS="literal"
+>"battery.voltage.unit"</TT
+>
units.
- battery.voltage.current (int)Yes
- The voltage level currently emitted by the battery.
- Measured in "battery.voltage.unit"
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.voltage.current</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The voltage level currently emitted by the battery.
+ Measured in <TT
+CLASS="literal"
+>"battery.voltage.unit"</TT
+>
units.
- battery.alarm.unit (string)Examples: mWh, mAhNo
- The physical measurement unit used by the alarm property.
- battery.alarm.design (int)No
- Once the charge level of the battery drops below this value
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.alarm.unit</TT
+> (string)</TD
+><TD
+>Examples: <TT
+CLASS="literal"
+>mWh</TT
+>, <TT
+CLASS="literal"
+>mAh</TT
+></TD
+><TD
+>No</TD
+><TD
+>&#13; The physical measurement unit used by the alarm property.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.alarm.design</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Once the charge level of the battery drops below this value
its state changes to 'alarm'.
- Measured in "battery.alarm.unit"
+ Measured in <TT
+CLASS="literal"
+>"battery.alarm.unit"</TT
+>
units.
- battery.remaining_time (int)No
- Remaining time, in seconds, that the battery can provide
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.remaining_time</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Remaining time, in seconds, that the battery can provide
power (if discharging) or the time until charged (if charging).
This is an estimate and may be imprecise.
This key is not present for invalid data.
- battery.remaining_time.calculate_per_time (bool)No
- If this property is true the
- battery.remaining_time becomes guessed from
- battery.charge_level.current and time.
- battery.charge_level.percentage (int)No
- Charge, normalised to percent. This is useful if an application
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.remaining_time.calculate_per_time</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; If this property is <TT
+CLASS="literal"
+>true</TT
+> the
+ <TT
+CLASS="literal"
+>battery.remaining_time</TT
+> becomes guessed from
+ <TT
+CLASS="literal"
+>battery.charge_level.current</TT
+> and time.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.charge_level.percentage</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Charge, normalised to percent. This is useful if an application
does not want to process the raw values and do all the extra
checks on the result. This key is not present for invalid data.
- battery.is_rechargeable (bool)No
- True if the battery unit is rechargeable, false if its is
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; True if the battery unit is rechargeable, false if its is
one-time (disposable after one usage).
- battery.rechargeable.is_charging (bool)Only if battery.is_rechargeable is TRUE
- TRUE if, and only if, the battery is charging.
- battery.rechargeable.is_discharging (bool)Only if battery.is_rechargeable is TRUE
- TRUE if, and only if, the battery is discharging.
- battery.command_interface (string)No
- The abstract name allowing daemons and/or user-level apps
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.rechargeable.is_charging</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Only if <TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> is TRUE</TD
+><TD
+>&#13; TRUE if, and only if, the battery is charging.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.rechargeable.is_discharging</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Only if <TT
+CLASS="literal"
+>battery.is_rechargeable</TT
+> is TRUE</TD
+><TD
+>&#13; TRUE if, and only if, the battery is discharging.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.command_interface</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The abstract name allowing daemons and/or user-level apps
to distinguish some groups of devices having similar
programming interface. Introduced mostly for the daemons'
coding simplicity.
- battery.vendor (string)No
- Vendor of the battery.
- battery.model (string)No
- Make of the battery.
- battery.technology (string)example: LIONNo
- The technology of the battery.
- battery.serial (string)No
- A string uniquely identifying the instance of the battery;
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.vendor</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Vendor of the battery.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.model</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Make of the battery.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.technology</TT
+> (string)</TD
+><TD
+>example: LION</TD
+><TD
+>No</TD
+><TD
+>&#13; The technology of the battery.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>battery.serial</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string uniquely identifying the instance of the battery;
it will be different for two (otherwise) identical batteries.
- button namespace
-
- Device objects with the capability button
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-button"
+><TT
+CLASS="literal"
+>button</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>button</TT
+>
represent the devices capable of providing a state to the system.
- Key (type)ValuesMandatoryDescriptionbutton.type (string)YesThe type of buttonlid
- The switch on a laptop that senses whether the lid is
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3088"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>button.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The type of button</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>lid</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The switch on a laptop that senses whether the lid is
open or closed
- powerThe main power button on the computer.sleep
- The sleep button on a computer capable of putting the computer
+ </TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>power</TD
+><TD
+>&nbsp;</TD
+><TD
+>The main power button on the computer.</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>sleep</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; The sleep button on a computer capable of putting the computer
into a suspend state
- button.has_state (bool)YesTrue if the button maintains state, e.g. can toggled on/offbutton.state.value (bool)
- Only when button.has_state is
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>button.has_state</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>True if the button maintains state, e.g. can toggled on/off</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>button.state.value</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; Only when <TT
+CLASS="literal"
+>button.has_state</TT
+> is
TRUE
- State of the button, TRUE if it is enabled
-
+ </TD
+><TD
+>State of the button, TRUE if it is enabled</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
Device objects with this capability may emit the following events.
- Condition NameParametersExampleDescriptionButtonPressedbutton.type (string)sleepEmitted when a button is pressedprocessor namespace
-
- Device objects with the capability processor
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3132"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Condition Name</TH
+><TH
+>Parameters</TH
+><TH
+>Example</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>ButtonPressed</TT
+></TD
+><TD
+><TT
+CLASS="literal"
+>button.type (string)</TT
+></TD
+><TD
+>sleep</TD
+><TD
+>Emitted when a button is pressed</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-processor"
+><TT
+CLASS="literal"
+>processor</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>processor</TT
+>
represent CPU's in the system.
- Key (type)ValuesMandatoryDescriptionprocessor.number (int)Yes
- The internal processor number in the system, starting from zero
- processor.can_throttle (bool)No
- Whether the processor supports throttling to decrease it's
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3153"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>processor.number</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; The internal processor number in the system, starting from zero
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>processor.can_throttle</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Whether the processor supports throttling to decrease it's
own clock speed
- processor.maximum_speed (long)example: 2200NoThe maximum speed of the processor in units of MHzdisplay_device namespace
-
- Device objects with the capability display_device
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>processor.maximum_speed</TT
+> (long)</TD
+><TD
+>example: 2200</TD
+><TD
+>No</TD
+><TD
+>The maximum speed of the processor in units of MHz</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-display_device"
+><TT
+CLASS="literal"
+>display_device</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>display_device</TT
+>
represent display devices attached to the system.
- Key (type)ValuesMandatoryDescriptiondisplay_device.type (string)YesThe type of display devicelcdLCD panelcrtCRT tubetv_outTV Outdisplay_device.lcd.brightness (int)Only if display_device.type is lcdBrightness level in percentsensor namespace
-
- Device objects with the capability sensor
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3185"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>display_device.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The type of display device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>lcd</TD
+><TD
+>&nbsp;</TD
+><TD
+>LCD panel</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>crt</TD
+><TD
+>&nbsp;</TD
+><TD
+>CRT tube</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>tv_out</TD
+><TD
+>&nbsp;</TD
+><TD
+>TV Out</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>display_device.lcd.brightness</TT
+> (int)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Only if <TT
+CLASS="literal"
+>display_device.type</TT
+> is lcd</TD
+><TD
+>Brightness level in percent</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-sensor"
+><TT
+CLASS="literal"
+>sensor</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>sensor</TT
+>
represent light or temperature sensors in the system.
- Key (type)ValuesMandatoryDescriptionsensor.type (string)YesThe type of sensor devicelightLight sensortemperatureTemperature sensorsensor.location (string)YesThe location of the sensor devicegpuMeasures GPU sourcecpuMeasures CPU sourceexternalMeasures external sourceunknownMeasuring other sourcepower_management namespace
-
- Keys with the prefix power_management
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3227"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>sensor.type</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The type of sensor device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>light</TD
+><TD
+>&nbsp;</TD
+><TD
+>Light sensor</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>temperature</TD
+><TD
+>&nbsp;</TD
+><TD
+>Temperature sensor</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>sensor.location</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>The location of the sensor device</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>gpu</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures GPU source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>cpu</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures CPU source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>external</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measures external source</TD
+></TR
+><TR
+><TD
+>&nbsp;</TD
+><TD
+>unknown</TD
+><TD
+>&nbsp;</TD
+><TD
+>Measuring other source</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-power-management"
+><TT
+CLASS="literal"
+>power_management</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Keys with the prefix <TT
+CLASS="literal"
+>power_management</TT
+>
provide information about power management supported by
your computer.
- Key (type)ValuesMandatoryDescriptionpower_management.type (string)Examples:
- apm,
- acpi,
- pmu
- Yes
- The power management subsystem used on the computer.
- power_management.can_suspend_to_ram (bool)Yes
- If suspend support is compiled into the kernel.
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3283"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>power_management.type</TT
+> (string)</TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>apm</TT
+>,
+ <TT
+CLASS="literal"
+>acpi</TT
+>,
+ <TT
+CLASS="literal"
+>pmu</TT
+>
+ </TD
+><TD
+>Yes</TD
+><TD
+>&#13; The power management subsystem used on the computer.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>power_management.can_suspend_to_ram</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If suspend support is compiled into the kernel.
NB. This may not mean the machine is able to suspend
successfully.
- power_management.can_suspend_to_disk (bool)Yes
- If hibernation support is compiled into the kernel.
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>power_management.can_suspend_to_disk</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>Yes</TD
+><TD
+>&#13; If hibernation support is compiled into the kernel.
NB. This may not mean the machine is able to hibernate
successfully.
- tape namespace
-
- Device objects with the capability tape
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-tape"
+><TT
+CLASS="literal"
+>tape</TT
+> namespace</A
+></H3
+><P
+>&#13;
+ Device objects with the capability <TT
+CLASS="literal"
+>tape</TT
+>
represent tape devices.
- Key (type)ValuesMandatoryDescriptiontape.major (int)example: 254YesThe device's major numbertape.minor (int)example: 0YesThe device's minor numberPolicy Properties
-
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3318"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>tape.major</TT
+> (int)</TD
+><TD
+>example: 254</TD
+><TD
+>Yes</TD
+><TD
+>The device's major number</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>tape.minor</TT
+> (int)</TD
+><TD
+>example: 0</TD
+><TD
+>Yes</TD
+><TD
+>The device's minor number</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="properties-policy"
+>Policy Properties</A
+></H2
+><P
+>&#13;
The properties on a hal device object can be used to express
certain policies about how the device is to be used. This
information can be used by either programs querying hal
directly or by hal callouts. Default policy (e.g. always
mount a file system with the option 'exec') can also be
merged on the root computer device object.
- storage.policy.default namespace
- This namespace specifies the default policy for storage
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-policy-default"
+><TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace specifies the default policy for storage
devices - these properties should be merged on the root computer
device object.
- Key (type)ValuesMandatoryDescriptionstorage.policy.default.use_managed_keyword (string)No
- Whether to use a managed no
- operation keyword when adding entries to
- the File Systems file (/etc/fstab) -
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3346"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.default.use_managed_keyword</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Whether to use a <I
+CLASS="emphasis"
+>managed no
+ operation</I
+> keyword when adding entries to
+ the File Systems file (<TT
+CLASS="literal"
+>/etc/fstab</TT
+>) -
this is used to identify entries added by a program
that modifies this file.
- storage.policy.default.managed_keyword.primary (string)Example: 'managed'NoNo-op keyword to use when adding entries to the file systems filestorage.policy.default.managed_keyword.secondary (string)Example: 'kudzu'No
- Secondary no-op keyword that identifies entries added
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.default.managed_keyword.primary</TT
+> (string)</TD
+><TD
+>Example: 'managed'</TD
+><TD
+>No</TD
+><TD
+>No-op keyword to use when adding entries to the file systems file</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.default.managed_keyword.secondary</TT
+> (string)</TD
+><TD
+>Example: 'kudzu'</TD
+><TD
+>No</TD
+><TD
+>&#13; Secondary no-op keyword that identifies entries added
to the file systems file. The secondary keyword is never
written; only read. This is useful when making a transition
from one managed keyword to another.
- storage.policy.default.mount_option.* (bool)Examples:
- .noauto,
- .exec,
- .console,
- .fscontext=system_u:object_r:removable_tNo
- This is actually an entire namespace that specifies
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+> (bool)</TD
+><TD
+>Examples:
+ <TT
+CLASS="literal"
+>.noauto</TT
+>,
+ <TT
+CLASS="literal"
+>.exec</TT
+>,
+ <TT
+CLASS="literal"
+>.console</TT
+>,
+ <TT
+CLASS="literal"
+>.fscontext=system_u:object_r:removable_t</TT
+></TD
+><TD
+>No</TD
+><TD
+>&#13; This is actually an entire namespace that specifies
what options a storage device should be mounted with,
- e.g. the example .exec should be read as
- storage.policy.default.mount_option.exec
- storage.policy.default.mount_root (string)Example: /media No
- The default mount root to use when computing what
+ e.g. the example <TT
+CLASS="literal"
+>.exec</TT
+> should be read as
+ <TT
+CLASS="literal"
+>storage.policy.default.mount_option.exec</TT
+>
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.default.mount_root</TT
+> (string)</TD
+><TD
+>Example: <TT
+CLASS="literal"
+>/media</TT
+> </TD
+><TD
+>No</TD
+><TD
+>&#13; The default mount root to use when computing what
mount point to use for a storage device
- storage.policy namespace
- This namespace contains properties that can be merged on
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-storage-policy"
+><TT
+CLASS="literal"
+>storage.policy</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace contains properties that can be merged on
individual storage devices to specify how and if the storage
device should be mounted.
- Key (type)ValuesMandatoryDescriptionstorage.policy.should_mount (bool)NoWhether any volumes from this storage device
- should be mountedstorage.policy.desired_mount_point (string)
- No (only applicable if the
- property storage.no_partitions_hint
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3398"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.should_mount</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Whether any volumes from this storage device
+ should be mounted</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.desired_mount_point</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
-
- The desired mount point for this storage device. The
+ </TD
+><TD
+>&#13; The desired mount point for this storage device. The
path must not be fully qualified and there is no
guarantee that and storage policy agents, such as
policy mount wrappers or programs modifying the file
systems file will use this mount point.
- storage.policy.mount_option.* (bool)
- No (only applicable if the
- property storage.no_partitions_hint
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.mount_option.*</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
-
- Mount options to use, see property storage.policy.default.mount_option.*
+ </TD
+><TD
+>&#13; Mount options to use, see property <TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+>
for details.
- storage.policy.mount_filesystem (string)
- No (only applicable if the
- property storage.no_partitions_hint
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>storage.policy.mount_filesystem</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>&#13; No (only applicable if the
+ property <TT
+CLASS="literal"
+>storage.no_partitions_hint</TT
+>
is set to TRUE)
- File system to use when mounting the storage device.volume.policy namespace
- This namespace contains properties that can be merged on
+ </TD
+><TD
+>File system to use when mounting the storage device.</TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="device-properties-volume-policy"
+><TT
+CLASS="literal"
+>volume.policy</TT
+> namespace</A
+></H3
+><P
+>&#13; This namespace contains properties that can be merged on
individual volumes to specify how and if the volume
should be mounted.
- Key (type)ValuesMandatoryDescriptionvolume.policy.should_mount (bool)NoWhether this volume should be mounted at allvolume.policy.mount_filesystem (string)NoFile system to use when mounting the volume.volume.policy.desired_mount_point (string)No
- The desired mount point for this volume. The
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3439"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.policy.should_mount</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>Whether this volume should be mounted at all</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.policy.mount_filesystem</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>File system to use when mounting the volume.</TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.policy.desired_mount_point</TT
+> (string)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; The desired mount point for this volume. The
path must not be fully qualified and there is no
guarantee that and storage policy agents, such as
policy mount wrappers or programs modifying the file
systems file will use this mount point.
- volume.policy.mount_option.* (bool)No
- Mount options to use, see property storage.policy.default.mount_option.*
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>volume.policy.mount_option.*</TT
+> (bool)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; Mount options to use, see property <TT
+CLASS="literal"
+>storage.policy.default.mount_option.*</TT
+>
for details.
- Device Information Files
-
- Device information files (.fdi files is a
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="spec-device-info"
+></A
+>Device Information Files</H1
+><P
+>&#13;
+ Device information files (<TT
+CLASS="literal"
+>.fdi</TT
+> files is a
shorthand) are used to merge arbitrary properties onto device
objects. The way device information files works is that once all
physical properties are merged onto a device object it is tried
@@ -1448,256 +10552,987 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
information files are used for both merging facts and policy
settings about devices.
-
-
+ </P
+><P
+>&#13;
Each device information file got a number of
- &#60;match key="some_property"
- [string|int|bool|..]="required_value" &#62; directives
+ <TT
+CLASS="literal"
+>&#60;match key="some_property"
+ [string|int|bool|..]="required_value" &#62;</TT
+> directives
that is tested against the properties of the device object. If
all the match directives passes then the device information can
- include &#60;[merge|append|prepend] key="some_property"
- type="[string|int|bool|..]"&#62; directives to
+ include <TT
+CLASS="literal"
+>&#60;[merge|append|prepend] key="some_property"
+ type="[string|int|bool|..]"&#62;</TT
+> directives to
respectively merge new properties or append to existing
properties on the device object. It's important to emphasize
that any previously property stemming from device detection can
be overridden by a device information file.
-
-
- The &#60;match&#62;,
- &#60;merge&#62;, &#60;append&#62;
- and &#60;prepend&#62; directives always requires
- the key attribute which must be either a
+ </P
+><P
+>&#13;
+ The <TT
+CLASS="literal"
+>&#60;match&#62;</TT
+>,
+ <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+>, <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+>
+ and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> directives always requires
+ the <TT
+CLASS="literal"
+>key</TT
+> attribute which must be either a
property name on the device object in question or a path to a
property on another device object. The latter case is expressed
either through direct specification of the UDI, such as
- /org/freedesktop/Hal/devices/computer:foo.bar
+ <TT
+CLASS="literal"
+>/org/freedesktop/Hal/devices/computer:foo.bar</TT
+>
or indirect references such as
- @info.parent:baz where the latter means that
+ <TT
+CLASS="literal"
+>@info.parent:baz</TT
+> where the latter means that
the device object specified by the UDI in the string property
- info.parent should be used to query the
- property baz. It is also possible to use
+ <TT
+CLASS="literal"
+>info.parent</TT
+> should be used to query the
+ property <TT
+CLASS="literal"
+>baz</TT
+>. It is also possible to use
multiple indirections, e.g. for a volume on a USB memory stick
- the indirection @block.storage_device:@storage.physical_device:usb.vendor_id
- will reference the usb.vendor_id property
+ the indirection <TT
+CLASS="literal"
+>@block.storage_device:@storage.physical_device:usb.vendor_id</TT
+>
+ will reference the <TT
+CLASS="literal"
+>usb.vendor_id</TT
+> property
on the device object representing the USB interface.
-
-
+ </P
+><P
+>&#13;
When the property to match have been determined a number of
- attributes can be used within the &#60;match&#62;
+ attributes can be used within the <TT
+CLASS="literal"
+>&#60;match&#62;</TT
+>
tag:
-
- string - match a string property; for example
- &#60;match key="foo.bar" string="baz"&#62;
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>string</TT
+> - match a string property; for example
+ <TT
+CLASS="literal"
+>&#60;match key="foo.bar" string="baz"&#62;</TT
+>
will match only if 'foo.bar' is a string property assuming the value 'baz'.
-
- int - match an integer property
-
- uint64 - match property with the 64-bit unsigned type
-
- bool - match a boolean property
-
- double - match a property of type double
-
- exists - used as
- &#60;match key="foo.bar" exists="true"&#62;. Can be used with
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>int</TT
+> - match an integer property
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>uint64</TT
+> - match property with the 64-bit unsigned type
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>bool</TT
+> - match a boolean property
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>double</TT
+> - match a property of type double
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>exists</TT
+> - used as
+ <TT
+CLASS="literal"
+>&#60;match key="foo.bar" exists="true"&#62;</TT
+>. Can be used with
'true' and 'false' respectively to match when a property exists and it doesn't.
-
- empty - can only be used on string properties with 'true' and 'false'. The semantics
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>empty</TT
+> - can only be used on string properties with 'true' and 'false'. The semantics
for 'true' is to match only when the string is non-empty.
-
- is_absolute_path - matches only when a string property represents an absolute path
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>is_absolute_path</TT
+> - matches only when a string property represents an absolute path
(the path doesn't have to exist). Can be used with 'true' or 'false'.
-
- is_ascii - matches only when a string property contain only ASCII characters.
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>is_ascii</TT
+> - matches only when a string property contain only ASCII characters.
Can be used with 'true' or 'false'.
-
- compare_lt - can be used on int, uint64, double and string properties to compare
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_lt</TT
+> - can be used on int, uint64, double and string properties to compare
with a constant. Matches when the given property is less than the given constant
using the default ordering.
-
- compare_le - like compare_lt but matches when less than or equal.
-
- compare_gt - like compare_lt but matches when greater than.
-
- compare_ge - like compare_lt but matches when greater than or equal.
-
- contains - can only be used with string and strlist (string list). For a string key this
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_le</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+> but matches when less than or equal.
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_gt</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+> but matches when greater than.
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>compare_ge</TT
+> - like <TT
+CLASS="literal"
+>compare_lt</TT
+> but matches when greater than or equal.
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>contains</TT
+> - can only be used with string and strlist (string list). For a string key this
matches when the property contains the given (sub-)string. For a string list this match if the given
string match a item of the list.
-
- contains_ncase - like contains but the property and the
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>contains_ncase</TT
+> - like <TT
+CLASS="literal"
+>contains</TT
+> but the property and the
given key are converted to lowercase before check.
-
-
- The &#60;merge&#62;, &#60;append&#62;
- and &#60;prepend&#62; directives all require
- the type attribute which specifies what to
+ </P
+></LI
+></UL
+>
+
+ The <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+>, <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+>
+ and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> directives all require
+ the <TT
+CLASS="literal"
+>type</TT
+> attribute which specifies what to
merge. The following values are supported
-
- string - The value is copied to the property. For example
- &#60;merge key="foo.bar" type="string"&#62;baz&#60;/merge&#62;
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>string</TT
+> - The value is copied to the property. For example
+ <TT
+CLASS="literal"
+>&#60;merge key="foo.bar" type="string"&#62;baz&#60;/merge&#62;</TT
+>
will merge the value 'baz' into the property 'foo.bar'.
-
- strlist - For &#60;merge&#62; the value is
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>strlist</TT
+> - For <TT
+CLASS="literal"
+>&#60;merge&#62;</TT
+> the value is
copied to the property and the current property will be overwritten. For
- &#60;append&#62; and &#60;prepend&#62; the
+ <TT
+CLASS="literal"
+>&#60;append&#62;</TT
+> and <TT
+CLASS="literal"
+>&#60;prepend&#62;</TT
+> the
value is append or prepend to the list as new item.
-
- bool - Can merge the values 'true' or 'false'
-
- int - Merges an integer
-
- uint64 - Merges an unsigned 64-bit integer
-
- double - Merges a double precision floating point number
-
- copy_property - Copies the value of a given property - supports paths with
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>bool</TT
+> - Can merge the values 'true' or 'false'
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>int</TT
+> - Merges an integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>uint64</TT
+> - Merges an unsigned 64-bit integer
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>double</TT
+> - Merges a double precision floating point number
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>copy_property</TT
+> - Copies the value of a given property - supports paths with
direct and indirect UDI's. For example
- &#60;merge key="foo.bar" type="copy_property"&#62;@info.parent:baz.bat&#60;/merge&#62;
- will merge the value of the property baz.bat on the device object with the UDI from
- the property info.parent into the property foo.bar on
+ <TT
+CLASS="literal"
+>&#60;merge key="foo.bar" type="copy_property"&#62;@info.parent:baz.bat&#60;/merge&#62;</TT
+>
+ will merge the value of the property <TT
+CLASS="literal"
+>baz.bat</TT
+> on the device object with the UDI from
+ the property <TT
+CLASS="literal"
+>info.parent</TT
+> into the property <TT
+CLASS="literal"
+>foo.bar</TT
+> on
the device object being processed.
-
-
- The &#60;remove&#62;, directive require only a key and can be used with all keys.
- For strlist there is additionally a special syntax to remove a item from the
+ </P
+></LI
+></UL
+>
+
+ The <TT
+CLASS="literal"
+>&#60;remove&#62;</TT
+>, directive require only a key and can be used with all keys.
+ For <TT
+CLASS="literal"
+>strlist</TT
+> there is additionally a special syntax to remove a item from the
string list. For example to remove item 'bla' from property 'foo.bar':
- &#60;remove key="foo.bar" type="strlist"&#62;bla&#60;/merge&#62;
-
-
-
- Device Information files are stored in the following standard hierachy with the following default
- top level directories information, policy and
- preprobe:
+ <TT
+CLASS="literal"
+>&#60;remove key="foo.bar" type="strlist"&#62;bla&#60;/merge&#62;</TT
+>
- information - device information files to merge device information
+ </P
+><P
+>&#13; Device Information files are stored in the following standard hierachy with the following default
+ top level directories <TT
+CLASS="literal"
+>information</TT
+>, <TT
+CLASS="literal"
+>policy</TT
+> and
+ <TT
+CLASS="literal"
+>preprobe</TT
+>:
+
+ <P
+></P
+><UL
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>information</TT
+> - device information files to merge device information
- 10freedesktop - device information files included with
- the hal tarball20thirdparty - device information files from the device
- manufacturer and installed from media accompanying the hardware30user - device information for specific devices
-
- policy - device information files to merge policy propertys
+ <P
+></P
+><UL
+><LI
+><P
+><TT
+CLASS="literal"
+>10freedesktop</TT
+> - device information files included with
+ the hal tarball</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>20thirdparty</TT
+> - device information files from the device
+ manufacturer and installed from media accompanying the hardware</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>30user</TT
+> - device information for specific devices</P
+></LI
+></UL
+>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>policy</TT
+> - device information files to merge policy propertys
- 10osvendor - device information files included with the
- hal tarball and supplied by the operating system vendor for policy rules20thirdparty - Policy rules from the device
- manufacturer and installed from media accompanying the hardware30user - Policy rules for specific devices
-
- preprobe - device information files to information before probe devices
+ <P
+></P
+><UL
+><LI
+><P
+><TT
+CLASS="literal"
+>10osvendor</TT
+> - device information files included with the
+ hal tarball and supplied by the operating system vendor for policy rules</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>20thirdparty</TT
+> - Policy rules from the device
+ manufacturer and installed from media accompanying the hardware</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>30user</TT
+> - Policy rules for specific devices</P
+></LI
+></UL
+>
+ </P
+></LI
+><LI
+><P
+>&#13; <TT
+CLASS="literal"
+>preprobe</TT
+> - device information files to information before probe devices
- 10osvendor - device information files included with the
- hal tarball and supplied by the operating system vendor20thirdparty - device information files from the device
- manufacturer and installed from media accompanying the hardware30user - device information for specific devices
-
+ <P
+></P
+><UL
+><LI
+><P
+><TT
+CLASS="literal"
+>10osvendor</TT
+> - device information files included with the
+ hal tarball and supplied by the operating system vendor</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>20thirdparty</TT
+> - device information files from the device
+ manufacturer and installed from media accompanying the hardware</P
+></LI
+><LI
+><P
+><TT
+CLASS="literal"
+>30user</TT
+> - device information for specific devices</P
+></LI
+></UL
+>
+ </P
+></LI
+></UL
+>
All device information files are matched for every hal device object.
- Facts about devicesExample: MP3 player
-
-
-
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="fdi-facts"
+>Facts about devices</A
+></H2
+><DIV
+CLASS="sect2"
+><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-mp3player"
+>Example: MP3 player</A
+></H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches an USB Mass Storage based MP3 player
+ by the matching on the USB vendor and product identifiers. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="info.bus" string="usb"&#62;
+ &#60;match key="usb.vendor_id" int="0x066f"&#62;
+ &#60;match key="usb.product_id" int="0x8000"&#62;
+ &#60;merge key="info.category" type="string"&#62;portable_audio_player&#60;/merge&#62;
+ &#60;merge key="info.capabilities" type="string"&#62;portable_audio_player&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.access_method" type="string"&#62;storage&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.output_formats" type="string"&#62;audio/mpeg audio/x-ms-wma&#60;/merge&#62;
+ &#60;merge key="portable_audio_player.input_formats" type="string"&#62;audio/x-wav&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
The final set of properties look like this:
-
-
- Example: Digital Still Camera
-
-
-
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example2.png">
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-camera"
+>Example: Digital Still Camera</A
+></H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches a Sony digital still
+ camera by matching on the USB vendor and product identifers. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="info.bus" string="usb"&#62;
+ &#60;match key="usb.vendor_id" int="0x054c"&#62;
+ &#60;match key="usb.product_id" int="0x0010"&#62;
+ &#60;merge key="info.category" type="string"&#62;camera&#60;/merge&#62;
+ &#60;merge key="info.capabilities" type="string"&#62;camera&#60;/merge&#62;
+ &#60;merge key="camera.access_method" type="string"&#62;storage&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
The final set of properties look like this:
-
-
- Example: Card Reader
-
-
-
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example1.png">
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-6in1"
+>Example: Card Reader</A
+></H3
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;!-- Example: This device information file matches a memory card reader with
+ multiple storage ports that can be active at the same time. --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+ &#60;device&#62;
+ &#60;match key="storage.bus" string="usb"&#62;
+ &#60;match key="@storage.physical_device:usb.vendor_id" int="0x0424"&#62;
+ &#60;match key="@storage.physical_device:usb.product_id" int="0x20fc"&#62;
+ &#60;match key="storage.lun" int="0"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;compact_flash&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="1"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;memory_stick&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="2"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;smart_media&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;match key="storage.lun" int="3"&#62;
+ &#60;merge key="storage.drive_type" type="string"&#62;sd_mmc&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+&#60;/deviceinfo&#62;
+ </PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
As described in the documentation for the
- storage.physical_device property in this device information
+ <TT
+CLASS="literal"
+>storage.physical_device</TT
+> property in <A
+HREF="#device-properties-storage"
+>the Section called <I
+><TT
+CLASS="literal"
+>storage</TT
+> namespace</I
+> in the Chapter called <I
+>Device Properties</I
+></A
+> this device information
file export information about each storage port through the
- property storage.drive_type. Thus, one
- of the four storage devices has the
+ property <TT
+CLASS="literal"
+>storage.drive_type</TT
+>. Thus, one
+ of the four <TT
+CLASS="literal"
+>storage</TT
+> devices has the
following properties that are merged from the device object
that the device information file targets:
-
-
- Policy settings for devices
- Policy settings specifies system specific settings that a
+ </P
+><P
+>&#13; <IMG
+SRC="hal-fdi-example3.png">
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="fdi-policy"
+>Policy settings for devices</A
+></H2
+><P
+>&#13; Policy settings specifies system specific settings that a
system administrator associates with a device instance. In the
context of hal, this can be expressed in terms of device
properties merged on the device object in question. Default
policy can also be merged on the root computer device object.
- Storage Devices
-
+ </P
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="fdi-example-mountsetting"
+>Storage Devices</A
+></H3
+><P
+>&#13;
Policy for storage devices is expressed in the
- storage.policy.default,
- storage.policy and
- volume.policy namespaces, see
- for details.
-
-
- The default policy for storage devices shipped with hal looks like this
-
-
-
- and can be overridden by OS vendors to suit their purposes.
-
- Users can also customize their own rules; some examples follow
-
-
- Callouts
-
+ <TT
+CLASS="literal"
+>storage.policy.default</TT
+>,
+ <TT
+CLASS="literal"
+>storage.policy</TT
+> and
+ <TT
+CLASS="literal"
+>volume.policy</TT
+> namespaces, see
+ <A
+HREF="#properties-policy"
+>the Section called <I
+>Policy Properties</I
+> in the Chapter called <I
+>Device Properties</I
+></A
+> for details.
+
+ </P
+><P
+>&#13; The default policy for storage devices shipped with hal looks like this
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;
+ </PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13; and can be overridden by OS vendors to suit their purposes.
+ </P
+><P
+>&#13; Users can also customize their own rules; some examples follow
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13; &#60;?xml version="1.0" encoding="ISO-8859-1"?&#62; &#60;!-- -*- SGML -*- --&#62;
+
+&#60;deviceinfo version="0.2"&#62;
+
+ &#60;!-- Example: Match volumes from an external USB harddisk enclosure by
+ matching on vendor and model. Use mount points
+
+ my_usbdisk_part_&#60;partition-number&#62;
+
+ NB: some drives (ieee1394 based IIRC) even export the
+ property storage.serial, the unique serial number of the
+ disk which is a better match --&#62;
+ &#60;device&#62;
+ &#60;match key="block.is_volume" bool="true"&#62;
+ &#60;match key="volume.fsusage" string="filesystem"&#62;
+ &#60;match key="@block.storage_device:storage.vendor" string="ST360021"&#62;
+ &#60;match key="@block.storage_device:storage.model" string="A"&#62;
+ &#60;merge key="volume.policy.desired_mount_point" type="string"&#62;my_usbdisk_partition_&#60;/merge&#62;
+ &#60;append key="volume.policy.desired_mount_point" type="copy_property"&#62;volume.partition.number&#60;/append&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+
+ &#60;!-- Example: Match a volume from an USB Storage Based mp3 player
+ by the file system UUID and assign a mount point.
+
+ NB: When reformatting the volume a new UUID will be
+ used and this rule will have to be altered --&#62;
+ &#60;device&#62;
+ &#60;match key="block.is_volume" bool="true"&#62;
+ &#60;match key="volume.fsusage" string="filesystem"&#62;
+ &#60;match key="volume.uuid" string="4150-3F34"&#62;
+ &#60;merge key="volume.policy.desired_mount_point" type="string"&#62;my_mp3_player&#60;/merge&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/match&#62;
+ &#60;/device&#62;
+
+&#60;/deviceinfo&#62;
+ </PRE
+></TD
+></TR
+></TABLE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="callouts"
+></A
+>Callouts</H1
+><P
+>&#13;
Callouts are programs invoked when the device object list is
modified. As such, callouts can be used to maintain system-wide
policy (that may be specific to the particular OS) such as
changing permissions on device nodes, updating the systemwide
- /etc/fstab file or configuring the networking
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file or configuring the networking
subsystem.
-
-
+ </P
+><P
+>&#13;
There are three different classes of callouts. A callout
involves sequentially invoking all executable programs in the
string list in listed order.
- Key (type)ValuesMandatoryDescriptioninfo.callouts.add (string list)No
- A string list with all programmes/callouts which should be
- executed (with HALD_ACTION=add) when the device
+ </P
+><DIV
+CLASS="informaltable"
+><P
+></P
+><A
+NAME="AEN3676"
+></A
+><TABLE
+BORDER="1"
+BGCOLOR="#E0E0E0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><THEAD
+><TR
+><TH
+>Key (type)</TH
+><TH
+>Values</TH
+><TH
+>Mandatory</TH
+><TH
+>Description</TH
+></TR
+></THEAD
+><TBODY
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.callouts.add</TT
+> (string list)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=add</TT
+>) when the device
is added to the GDL (global device list) but just before it is
announced through the D-BUS network API.
- info.callouts.remove (string list)No
- A string list with all programmes/callouts which should be
- executed (with HALD_ACTION=remove) when the
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.callouts.remove</TT
+> (string list)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=remove</TT
+>) when the
device is removed from the GDL (global device list). The device
isn't removed before the last callout has finished.
- info.callouts.preprobe (string list)No
- A string list with all programmes/callouts which should be
- executed (with HALD_ACTION=preprobe) before
+ </TD
+></TR
+><TR
+><TD
+><TT
+CLASS="literal"
+>info.callouts.preprobe</TT
+> (string list)</TD
+><TD
+>&nbsp;</TD
+><TD
+>No</TD
+><TD
+>&#13; A string list with all programmes/callouts which should be
+ executed (with <TT
+CLASS="literal"
+>HALD_ACTION=preprobe</TT
+>) before
the device is added to the GDL (global device list) and before
- the callouts from info.callouts.add are executed.
-
-
+ the callouts from <TT
+CLASS="literal"
+>info.callouts.add</TT
+> are executed.
+ </TD
+></TR
+></TBODY
+></TABLE
+><P
+></P
+></DIV
+><P
+>&#13;
All callouts execute in the same environment as which the HAL
daemon was started. In addition, the UDI of the device object is
- exported in the environment variable UDI. All
+ exported in the environment variable <TT
+CLASS="literal"
+>UDI</TT
+>. All
properties of the device object are exported in the environment
- prefixed with HAL_. If a device is added or
- removed is exported in the environment variable HALD_ACTION
- , if HAL is in shutdown mode the variable
- HALD_SHUTDOWN is set to environment.
+ prefixed with <TT
+CLASS="literal"
+>HAL_</TT
+>. If a device is added or
+ removed is exported in the environment variable <TT
+CLASS="literal"
+>HALD_ACTION
+ </TT
+>, if HAL is in shutdown mode the variable <TT
+CLASS="literal"
+>&#13; HALD_SHUTDOWN</TT
+> is set to environment.
-
+ </P
+><P
+>
The HAL daemon isn't suspended while callouts are executing. Thus,
callouts can communicate with the HAL daemon using the D-BUS network
API. Hence, one application of callouts is to merge or modify
properties on a device object.
- D-BUS Network API
+ </P
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="dbus-api"
+></A
+>D-BUS Network API</H1
+><P
+>
The HAL daemon is a system-wide process that keeps track of a
number of device objects. It communicates with the operating
@@ -1707,10 +11542,16 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
perform generic operations on them such as obtaining exclusive
access. Non-generic operations, such as obtaining pictures from
a camera device, is outside the scope of the HAL daemon; see
- for more information.
-
-
-
+ <A
+HREF="#using-devices"
+>the Chapter called <I
+>Using devices</I
+></A
+> for more information.
+
+ </P
+><P
+>&#13;
HAL has the concept of device stores. When a device is detected
it is placed in the TDL (temporary device list) and then properties
are merged from several sources including device information files
@@ -1718,17 +11559,44 @@ HAL 0.5.7 SpecificationVersion 0.5.7August 6th, 2004DavidZeuthen
GDL (global device list) and first then it becomes ''visible'' for
desktop applications.
- Interface org.freedesktop.Hal.Manager
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN3718"
+>Interface org.freedesktop.Hal.Manager</A
+></H2
+><P
+>
Using D-BUS terminology, the HAL daemon provides the D-BUS
- service org.freedesktop.Hal. This service
+ service <TT
+CLASS="literal"
+>org.freedesktop.Hal</TT
+>. This service
offers a D-BUS object at a well-known
- location /org/freedesktop/Hal/Manager. This
+ location <TT
+CLASS="literal"
+>/org/freedesktop/Hal/Manager</TT
+>. This
object offers a D-BUS
- interface, org.freedesktop.Hal.Manager, for
+ interface, <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+>, for
querying device objects with the following methods:
-
-# Return a list of all devices in the GDL
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;# Return a list of all devices in the GDL
#
# @return List of UDI's
#
@@ -1757,15 +11625,33 @@ array{string} FindDeviceStringMatch(string key, string value)
#
array{string} FindDeviceByCapability(string capability)
-
-
+</PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
This object also emits the following signals on the
- /org/freedesktop/Hal/Manager object on the
- org.freedesktop.Hal.Manager interface that
+ <TT
+CLASS="literal"
+>/org/freedesktop/Hal/Manager</TT
+> object on the
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+> interface that
applications can subscribe to using D-BUS:
-
-
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;
# Notification that a new device have been added to the GDL
#
# @param udi Unique Device Id
@@ -1786,18 +11672,83 @@ void DeviceRemoved(string udi)
#
void NewCapability(string udi, string capability)
-Example
-
+</PRE
+></TD
+></TR
+></TABLE
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="AEN3729"
+>Example</A
+></H3
+><P
+>&#13;
The following brief Python program demonstrates some of the API
-
-
-
-
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13; #!/usr/bin/python
+
+import gtk
+import dbus
+
+def device_added(interface, signal_name, service, path, message):
+ [udi] = message.get_args_list ()
+ print 'Device %s was added'%udi
+
+def device_removed(interface, signal_name, service, path, message):
+ [udi] = message.get_args_list ()
+ print 'Device %s was removed'%udi
+
+
+bus = dbus.Bus (dbus.Bus.TYPE_SYSTEM)
+hal_service = bus.get_service ('org.freedesktop.Hal')
+hal_manager = hal_service.get_object ('/org/freedesktop/Hal/Manager',
+ 'org.freedesktop.Hal.Manager')
+
+devices = hal_manager.GetAllDevices ()
+for d in devices:
+ print 'Found device %s'%d
+
+bus.add_signal_receiver (device_added,
+ 'DeviceAdded',
+ 'org.freedesktop.Hal.Manager',
+ 'org.freedesktop.Hal',
+ '/org/freedesktop/Hal/Manager')
+bus.add_signal_receiver (device_removed,
+ 'DeviceRemoved',
+ 'org.freedesktop.Hal.Manager',
+ 'org.freedesktop.Hal',
+ '/org/freedesktop/Hal/Manager')
+gtk.main()
+</PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
which gives the following output
-
-Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001-disc
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001-disc
Found device /org/freedesktop/Hal/devices/block_TORiSAN DVD-ROM DRD-U624-00000000000000000001
Found device /org/freedesktop/Hal/devices/block_37332a77-105e-4e76-8e99-27d3746e0531
Found device /org/freedesktop/Hal/devices/block_3_2
@@ -1834,21 +11785,50 @@ Device /org/freedesktop/Hal/devices/usbif_usb_46d_c001_410_-1_noserial_0 was add
Device /org/freedesktop/Hal/devices/usb_46d_c001_410_-1_noserial was removed
Device /org/freedesktop/Hal/devices/usbif_usb_46d_c001_410_-1_noserial_0 was removed
-
-
- Interface org.freedesktop.Hal.Device
-
+</PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="AEN3737"
+>Interface org.freedesktop.Hal.Device</A
+></H2
+><P
+>&#13;
Applications use
- the org.freedesktop.Hal.Manager interface to
+ the <TT
+CLASS="literal"
+>org.freedesktop.Hal.Manager</TT
+> interface to
locate the device objects they are interested in. When a device
object (which is really a D-BUS object, note that the UDI is the
objects object_path) is obtained, the HAL daemon provides the
- org.freedesktop.Hal.Device interface on the
+ <TT
+CLASS="literal"
+>org.freedesktop.Hal.Device</TT
+> interface on the
object denoted by the UDI. This interface has the following
methods
-
-
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;
# Set property
#
# @param key Property to set
@@ -1937,14 +11917,26 @@ void Lock(string reason)
# org.freedesktop.Hal.PermissionDenied
#
void Unlock()
-
-
+</PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
The device objects also emits the following signals on the
org.freedesktop.Hal interface that applications can subscribe to
using D-BUS
-
-# Notification that property have been modified
+ </P
+><TABLE
+BORDER="0"
+BGCOLOR="#E0E0E0"
+WIDTH="100%"
+><TR
+><TD
+><PRE
+CLASS="programlisting"
+>&#13;# Notification that property have been modified
#
# @param key Property
# @param added True iff the property have been added
@@ -1961,12 +11953,27 @@ void PropertyModified(string key, bool added, bool removed)
# @param ... Dependent on the condition name
void Condition(string condition, ...)
-
-
+</PRE
+></TD
+></TR
+></TABLE
+><P
+>&#13;
Note that D-BUS supports that applications can opt to receive
signals for only a subset of the devices available.
- Enforcing Policy
+ </P
+></DIV
+></DIV
+><DIV
+CLASS="chapter"
+><HR><H1
+><A
+NAME="enforcing-policy"
+></A
+>Enforcing Policy</H1
+><P
+>
Notwithstanding the fact that HAL avoids to enforce any policy,
it is useful to have a minimal set of guidelines such that
@@ -1974,33 +11981,120 @@ void Condition(string condition, ...)
easily run on another. This chapter contains recommendations
about how to enforce policy to achieve that goal.
- Storage DevicesPolicy for Volumes and Storage devices
- The properties in the storage.policy,
- volume.policy and
- storage.policy.default namespaces should
+ </P
+><DIV
+CLASS="sect1"
+><HR><H2
+CLASS="sect1"
+><A
+NAME="enforcing-stor-vol"
+>Storage Devices</A
+></H2
+><DIV
+CLASS="sect2"
+><H3
+CLASS="sect2"
+><A
+NAME="stor-vol-policy"
+>Policy for Volumes and Storage devices</A
+></H3
+><P
+>&#13; The properties in the <TT
+CLASS="literal"
+>storage.policy</TT
+>,
+ <TT
+CLASS="literal"
+>volume.policy</TT
+> and
+ <TT
+CLASS="literal"
+>storage.policy.default</TT
+> namespaces should
be the preferred way to determine how and if a filesystem
- can be mounted. See
+ can be mounted. See <A
+HREF="#properties-policy"
+>the Section called <I
+>Policy Properties</I
+> in the Chapter called <I
+>Device Properties</I
+></A
+>
for details.
- File systems file
- An operating system vendor should maintain the
- /etc/fstab file through the HAL callout
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="enforcing-storage-fstab"
+>File systems file</A
+></H3
+><P
+>&#13; An operating system vendor should maintain the
+ <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file through the HAL callout
mechanism such that device objects of capability
- volume and storage has
+ <TT
+CLASS="literal"
+>volume</TT
+> and <TT
+CLASS="literal"
+>storage</TT
+> has
a corresponding entry if applicable cf.
- .
-
- The reasoning behind this is, among other things, to
- maintain the invariant that /etc/fstab
+ <A
+HREF="#stor-vol-policy"
+>the Section called <I
+>Policy for Volumes and Storage devices</I
+></A
+>.
+ </P
+><P
+>&#13; The reasoning behind this is, among other things, to
+ maintain the invariant that <TT
+CLASS="literal"
+>/etc/fstab</TT
+>
list all available filesystems. In addition
- the mount(1) program should enable users
+ the <TT
+CLASS="literal"
+>mount(1)</TT
+> program should enable users
without superuser privileges to mount filesystems mentioned
- in the /etc/fstab file as long as they
- have the user option set.
- Disabling policy agents
- Policy agents like volume mounters should ignore when media
+ in the <TT
+CLASS="literal"
+>/etc/fstab</TT
+> file as long as they
+ have the <TT
+CLASS="literal"
+>user</TT
+> option set.
+ </P
+></DIV
+><DIV
+CLASS="sect2"
+><HR><H3
+CLASS="sect2"
+><A
+NAME="enforcing-storage-locking"
+>Disabling policy agents</A
+></H3
+><P
+>&#13; Policy agents like volume mounters should ignore when media
is inserted into a drive that is locked by another
application. Thus, CD burning applications should lock the
device to disable auto mounting or automatic start of the
users preferred CD burning application when respectively
non-blank rewritable or blank media is inserted.
- \ No newline at end of file
+ </P
+></DIV
+></DIV
+></DIV
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file