LIBPICLTREE(3PICLTREE) PICL Plug-In Library Functions
NAME
libpicltree - PTree and Plug-in Registration interface library
SYNOPSIS
cc [
flag ...]
file ...
-lpicltree [
library ...]
#include <picltree.h>
DESCRIPTION
The PTree interface is the set of functions and data structures to
access and manipulate the PICL tree. The daemon and the plug-in
modules use the PTree interface.
The Plug-in Registration interface is used by the plug-in modules to
register themselves with the daemon.
The plug-in modules create the nodes and properties of the tree. At
the time of creating a property, the plug-ins specify the property
information in the
ptree_propinfo_t structure defined as:
typedef struct {
int version; /* version */
picl_propinfo_t piclinfo; /* info to clients */
int (*read)(ptree_rarg_t *arg, void *buf);
/* read access function for */
/* volatile prop */
int (*write)(ptree_warg_t *arg, const void *buf);
/* write access function for */
/* volatile prop */
} ptree_propinfo_t;
See
libpicl(3PICL) for more information on PICL tree nodes and
properties.
The maximum size of a property value cannot exceed
PICL_PROPSIZE_MAX.
It is currently set to 512KB.
Volatile Properties
In addition to
PICL_READ and
PICL_WRITE property access modes, the
plug-in modules specify whether a property is volatile or not by
setting the bit
PICL_VOLATILE.
#define PICL_VOLATILE 0x4
For a volatile property, the plug-in module provides the access
functions to read and/or write the property in the
ptree_propinfo_t argument passed when creating the property.
The daemon invokes the access functions of volatile properties when
clients access their values. Two arguments are passed to the read
access functions. The first argument is a pointer to
ptree_rarg_t,
which contains the handle of the node, the handle of the accessed
property and the credentials of the caller. The second argument is a
pointer to the buffer where the value is to be copied.
typedef struct {
picl_nodehdl_t nodeh;
picl_prophdl_t proph;
door_cred_t cred;
} ptree_rarg_t;
The prototype of the read access function for volatile property is:
int read(ptree_rarg_t *rarg, void *buf);
The read function returns
PICL_SUCCESS to indicate successful
completion.
Similarly, when a write access is performed on a volatile property,
the daemon invokes the write access function provided by the plug-in
for that property and passes it two arguments. The first argument is
a pointer to
ptree_warg_t, which contains the handle to the node, the
handle of the accessed property and the credentials of the caller.
The second argument is a pointer to the buffer containing the value
to be written.
typedef struct {
picl_nodehdl_t nodeh;
picl_prophdl_t proph;
door_cred_t cred;
} ptree_warg_t;
The prototype of the write access function for volatile property is:
int write(ptree_warg_t *warg, const void *buf);
The write function returns
PICL_SUCCESS to indicate successful
completion.
For all volatile properties, the 'size' of the property must be
specified to be the maximum possible size of the value. The maximum
size of the value cannot exceed
PICL_PROPSIZE_MAX. This allows a
client to allocate a sufficiently large buffer before retrieving a
volatile property's value.
Plug-in Modules Plug-in modules are shared objects that are located in well-known
directories for the daemon to locate and load them. Plug-in modules
are located in one of the following plug-in directories depending on
the platform-specific nature of the data they collect and publish.
/usr/platform/picl/plugins/`uname -i`/
/usr/platform/picl/plugins/`uname -m`/
/usr/lib/picl/plugins/
A plug-in module may specify its dependency on another plug-in module
using the
-l linker option. The plug-ins are loaded by the PICL
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 more information on plug-in
registration.
The plug-in modules may use the
picld_log(3PICLTREE) function to log
their messages to the system log file.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|MT-Level | MT-Safe |
+---------------+-----------------+
SEE ALSO
libpicltree(3LIB),
libpicl(3PICL),
picld_log(3PICLTREE),
picld_plugin_register(3PICLTREE),
attributes(7) September 12, 2020 LIBPICLTREE(3PICLTREE)