lsvpd v1.0.0
Last edited: 7-5-06
Authors and contributors:
	Brad Peters <bpeters@linux.ibm.com>

Overview and History

lsvpd, the Linus System Vital Product Data provider, provides access to an amazing variety of hardware specific information.  Our goal is, and has always been, to attempt to conform to the AIX lsvpd format as a standard, but due to the fact that lsvpd on Linux has been reverse engineered, certain special case oddities occur from time to time.  

lsvpd on Linux  has undergone several major revisions since it first came into existence in early 2000 (thanks to Martin Schwenke).  Initially, it was a simple set of perl scripts meant to walk the /dev tree, regex'ing details as acquired.  It developed over the years into a full fledged product, made up of a collection of bash and Code.  The C code was added over time primarily to improve performance, but also to decrease environmental requirements.  

The new lsvpd

lsvpd on Linux is now being ported to a completly C++ based implementation, providing the speed necessary to support hotplug at all scales (from 1 to hundreds of devices being plugged in or removed at a time - imagine a large usb hub with many external storage drives attached being added).

The goal is to continue to maintain lsvpd 0.16 for formatting issues, but to discontinue support for new devices or broken device drivers.  lsvpd v0.9 will require a 2.6+ kernel with udev and HAL support, both of which are commonly found in major distributions today.  Formatting will still conform to lsvpd on AIX standards, and the common 'lsvpd', 'lscfg', 'lsmod', etc commands will still be provided.  

API

In addition to the old commands, new C and C++ API's are being provided, so that downstream consumers no longer need to parse piped lsvpd output directly (ugly!).  Some tools have resorted to directly walking the lsvpd on Linux database, which has been stored as a heirarchical series of directories and files on the files system.  This direct access is something we hope to avoid in the future, by providing an API.

Directory Structure

lsvpd on Linux v0.9 is maintained as follows:
	/lsvpd 	: The externally callable library API
	/src	: All the code
	/udev	: The code responsible for interacting with udev (hotplug events)

	<TODO - flesh this out as it develops >



