picld

- PICL daemon

Synopsis

/usr/lib/picl/picld

Description

The Platform Information and Control Library (PICL) provides a mechanism to publish
platform-specific information for clients to access in a platform-independent way. picld maintains
and controls access to the PICL information from clients and plug-in modules. The
daemon is started in both single-user and multi-user boot mode.

Upon startup, the PICL daemon loads and initializes the plug-in modules. These
modules use the libpicltree(3PICLTREE) interface to create nodes and properties in the PICL
tree to publish platform configuration information. After the plug-in modules are initialized,
the daemon opens the PICL daemon door to service client requests to
access information in the PICL tree.

PICL Tree

The PICL tree is the repository of all the nodes and properties
created by the plug-in modules to represent the platform configuration. Every node
in the PICL tree is an instance of a well-defined PICL class.
The name of the base PICL class is picl, which defines a
basic set of properties that all nodes in the tree must possess.
Two of those properties are name and _class, where name contains the
name of the node, and the _class contains the PICL class name of
the node. Certain nodes in the PICL tree have well-known names. For
example, the name of the root node of the PICL tree is
/ and the name of the root node of the sub-tree containing
platform device nodes is platform.

PICL plug–in Modules

The PICL plug-in modules are shared objects that publish platform-specific data in
the PICL tree. They are located in well-known directories so that the
daemon can locate and load them.

Plug-in modules are located in one of the following plug-in directories depending
on the plaform-specific nature of the data that they collect and publish:

A plug-in module can specify its dependency on another plug-in module using
the -l or -R linker option. The plug-ins are loaded by the
daemon using dlopen(3C) according to the specified dependencies. Each plug-in module must
define a .init section, which is executed when the plug-in module is
loaded, to register themselves with the daemon. See picld_plugin_register(3PICLTREE) for additional information
on plug-in registration.

The plug-in modules use the libpicltree(3PICLTREE) interface to publish nodes and properties
in the PICL tree so that clients can access them.

When the PICL daemon invokes the initialization routine of the plug-in module,
the plug-in collects the platform information and creates nodes and/or properties to
represent the configuration in the PICL tree. A plug-in can create additional
threads to monitor the platform configuration and update the PICL tree with any
changes. This enables a PICL plug-in to operate as a daemon within
the PICL framework.

An environmental monitor is an example of a plug-in module that uses
a thread to monitor the temperatures and fan speeds of the platform,
then publishes the environmental information in the PICL tree so clients can
access them.

Clients use the libpicl(3PICL) interface to send requests to picld for accessing
the PICL tree.