Parsing XML - Newbie help

R

rh0dium

Hi all,

I am relatively new to python and certainly new to XML parsing. Can
some show me how to get the product text out of this? Really I want to
know this has 2 processors and the are AMD Opteron(tm) Processor 250

I have gotten this far...

class HWParser:

def __init__(self):
if os.path.isfile(LSHW):
lshw=Exec.Exec(LSHW)
lshw.execute('-xml')
else:
print "lshw does not exist", LSWH
return "Unknown"

self.data = lshw.read()
self.error = lshw.error()
self.exit = lshw.poll()

if self.error:
print "Error Exist", self.error
return
else:
self.xml = minidom.parseString(self.data)
self.xml.normalize()

def p (self):
print self.xml.toxml()

If anyone can help me out that would be great!

---

<?xml version="1.0" standalone="yes" ?>
<!-- generated by lshw-B.02.03 -->
<!-- GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42) -->
<node id="cpu:0" claimed="true" class="processor"
handle="DMI:0005">
<description>CPU</description>
<product>AMD Opteron(tm) Processor 250</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>5</physid>
<businfo>cpu@0</businfo>
<version>15.5.10</version>
<slot>CPU0</slot>
<size units="Hz">2400000000</size>
<capacity units="Hz">3000000000</capacity>
<width units="bits">64</width>
<clock units="Hz">1600000000</clock>
<capabilities>
<capability id="fpu" >mathematical co-processor</capability>
<capability id="fpu_exception" >FPU exceptions
reporting</capability>
<capability id="wp" />
<capability id="vme" >virtual mode extensions</capability>
<capability id="de" >debugging extensions</capability>
<capability id="pse" >page size extensions</capability>
<capability id="tsc" >time stamp counter</capability>
<capability id="msr" >model-specific registers</capability>
<capability id="pae" >4GB+ memory addressing (Physical
Address Extension)</capability>
<capability id="mce" >machine check exceptions</capability>
<capability id="cx8" >compare and exchange
8-byte</capability>
<capability id="apic" >on-chip advanced programmable
interrupt controller (APIC)</capability>
<capability id="sep" >fast system calls</capability>
<capability id="mtrr" >memory type range
registers</capability>
<capability id="pge" >page global enable</capability>
<capability id="mca" >machine check architecture</capability>
<capability id="cmov" >conditional move
instruction</capability>
<capability id="pat" >page attribute table</capability>
<capability id="pse36" >36-bit page size
extensions</capability>
<capability id="clflush" />
<capability id="mmx" >multimedia extensions
(MMX)</capability>
<capability id="fxsr" >fast floating point
save/restore</capability>
<capability id="sse" >streaming SIMD extensions
(SSE)</capability>
<capability id="sse2" >streaming SIMD extensions
(SSE2)</capability>
<capability id="syscall" >fast system calls</capability>
<capability id="nx" >no-execute bit (NX)</capability>
<capability id="mmxext" >multimedia extensions
(MMXExt)</capability>
<capability id="x86-64" >64bits extensions
(x86-64)</capability>
<capability id="3dnowext" >multimedia extensions
(3DNow!Ext)</capability>
<capability id="3dnow" >multimedia extensions
(3DNow!)</capability>
</capabilities>
</node>
<node id="cpu:1" claimed="true" class="processor"
handle="DMI:0006">
<description>CPU</description>
<product>AMD Opteron(tm) Processor 250</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>3</physid>
<businfo>cpu@1</businfo>
<version>15.5.10</version>
<slot>CPU1</slot>
<size units="Hz">2400000000</size>
<capacity units="Hz">3000000000</capacity>
<width units="bits">64</width>
<clock units="Hz">1600000000</clock>
<capabilities>
<capability id="fpu" >mathematical co-processor</capability>
<capability id="fpu_exception" >FPU exceptions
reporting</capability>
<capability id="wp" />
<capability id="vme" >virtual mode extensions</capability>
<capability id="de" >debugging extensions</capability>
<capability id="pse" >page size extensions</capability>
<capability id="tsc" >time stamp counter</capability>
<capability id="msr" >model-specific registers</capability>
<capability id="pae" >4GB+ memory addressing (Physical
Address Extension)</capability>
<capability id="mce" >machine check exceptions</capability>
<capability id="cx8" >compare and exchange
8-byte</capability>
<capability id="apic" >on-chip advanced programmable
interrupt controller (APIC)</capability>
<capability id="sep" >fast system calls</capability>
<capability id="mtrr" >memory type range
registers</capability>
<capability id="pge" >page global enable</capability>
<capability id="mca" >machine check architecture</capability>
<capability id="cmov" >conditional move
instruction</capability>
<capability id="pat" >page attribute table</capability>
<capability id="pse36" >36-bit page size
extensions</capability>
<capability id="clflush" />
<capability id="mmx" >multimedia extensions
(MMX)</capability>
<capability id="fxsr" >fast floating point
save/restore</capability>
<capability id="sse" >streaming SIMD extensions
(SSE)</capability>
<capability id="sse2" >streaming SIMD extensions
(SSE2)</capability>
<capability id="syscall" >fast system calls</capability>
<capability id="nx" >no-execute bit (NX)</capability>
<capability id="mmxext" >multimedia extensions
(MMXExt)</capability>
<capability id="x86-64" >64bits extensions
(x86-64)</capability>
<capability id="3dnowext" >multimedia extensions
(3DNow!Ext)</capability>
<capability id="3dnow" >multimedia extensions
(3DNow!)</capability>
</capabilities>
</node>
 
D

Dan M

Hi
I am relatively new to python and certainly new to XML parsing.

Me too. However there are plenty of good docs/tutorials available to
help with both XML and using it in Python.

For XML you may wish to look at http://www.w3schools.com/. It has a very
accessible set of tutorials on XML and related technologies, which I
find make it very quick to get up and running. For what you are trying
to do you may wish to look at XPath, or ideally XQuery although I'm not
sure there is an XQuery implementation in Python.

For Python and XML there is Mark Pilgrim's excellent chapter on Parsing
XML with xml.dom.minidom
(http://diveintopython.org/xml_processing/index.html).

The is also the PyXML project at Sourceforge
(http://pyxml.sourceforge.net/). A list of useful links is maintained
there (http://pyxml.sourceforge.net/topics/).

You may also wish to investigate resources at the Python XML SIG page
(http://www.python.org/sigs/xml-sig/).

These are just some of the sources of information I am using. Hope this
helps.

Cheers

Dan
 
F

Fredrik Lundh

rh0dium said:
I am relatively new to python and certainly new to XML parsing. Can
some show me how to get the product text out of this?

didn't you ask the same question a few days ago? did you read the
replies to that post?

assuming that your sample is correct, you need to process the almost-
but-not-quite-XML file before passing it to an XML processor. here's an
ElementTree-based example that does that:

# see http://effbot.org/zone/element-index.htm
from elementtree import ElementTree as ET

data = open(...).read() # or os.popen(...).read()

# strip off bogus XML declaration
import re
m = re.match("<\?xml[^>]+>", data)
if m:
data = data[m.end():]

# wrap notes in container element
data = "<doc>" + data + "</doc>"

tree = ET.XML(data)

processors = []
for elem in tree.findall(".//node"):
if elem.get("class") == "processor":
processors.append(elem.findtext("product"))
print len(processors)
print processors

given your example, this prints:

2
['AMD Opteron(tm) Processor 250', 'AMD Opteron(tm) Processor 250']

</F>
 
R

rh0dium

Fredrik said:
didn't you ask the same question a few days ago? did you read the
replies to that post?

Yes I did but the XML was malformed.. Actually it still is but you
helped me figure out a way to correct it - Thanks

Here is what I have so far. Now I want to find a child of a child ( I
think that's how you state it ?? ) Below is a piece of the XML which I
am trying to parse.. In short I want to figure out all of the memory
in a system. I can look at the "size" of all "bank:?"'s and add them
up. I am having trouble getting to the children of the "System Memory"

inp = open("xml.test1")
data = inp.read()
inp.close()
# strip off bogus XML declaration
import re
m = re.match("<\?xml[^>]+>", data)
if m:
data = data[m.end():]
# Apparently ampersands are common in lshw.. Get rid of them..
data = data.replace('&ampersand;', '')
# wrap notes in container element
data = "<doc>" + data + "</doc>"

tree = ET.XML(data)

for elem in tree.findall(".//node"):
if elem.get("class") == "memory":
if elem.findtext("description") == "System Memory":
print "Found system memory bank"

Ok so up to here I am ok. I find ( If you want the full xml let me
know) two blocks of system memory. It MUST be "System Memory" only.
Now how do I get a list of all of the children "nodes" of this. They
are named bank:N ( i.e bank:0, bank:1 etc [see below] ). For each one
of those there may ( or may not ) have some memory stuck in it. I can
tell if there is memory because a size is given. I want to a list of
all of the sizes. From there I can say you have sum(memory) in
len(memory) banks of total banks.

Here is what I tried - but I was clearly messing up..

for mem in elem.findall("./node/node")
if elem.get("class") == "memory":
print "Entering Memory Class"
if elem.findtext("size"):
print "Found size",
elem.findtext("size"):

And the XML which goes with that..

<node id="memory:0" claimed="true" class="memory"
handle="DMI:0027">
<description>System Memory</description>
<physid>27</physid>
<slot>System board or motherboard</slot>
<node id="bank:0" claimed="true" class="memory"
handle="DMI:002C">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>0</physid>
<slot>DIMM3B</slot>
</node>
<node id="bank:1" claimed="true" class="memory"
handle="DMI:002D">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>1</physid>
<slot>DIMM3A</slot>
</node>
<node id="bank:2" claimed="true" class="memory"
handle="DMI:002E">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>2</physid>
<serial>96000241</serial>
<slot>DIMM1B</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
<node id="bank:3" claimed="true" class="memory"
handle="DMI:002F">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>3</physid>
<serial>4A000741</serial>
<slot>DIMM1A</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
</node>
<node id="memory:1" claimed="true" class="memory"
handle="DMI:0028">
<description>System Memory</description>
<physid>28</physid>
<slot>System board or motherboard</slot>
<node id="bank:0" claimed="true" class="memory"
handle="DMI:0030">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>0</physid>
<slot>DIMM4B</slot>
</node>
<node id="bank:1" claimed="true" class="memory"
handle="DMI:0031">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>1</physid>
<slot>DIMM4A</slot>
</node>
<node id="bank:2" claimed="true" class="memory"
handle="DMI:0032">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>2</physid>
<serial>95000041</serial>
<slot>DIMM2B</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
<node id="bank:3" claimed="true" class="memory"
handle="DMI:0033">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>3</physid>
<serial>58000E41</serial>
<slot>DIMM2A</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
</node>
<node id="memory:2" class="memory" handle="DMI:0029">
<description>Flash Memory</description>
<physid>29</physid>
<slot>System board or motherboard</slot>
<capacity units="bytes">1048576</capacity>
<node id="bank" class="memory" handle="DMI:0035">
<description>Chip FLASH Non-volatile</description>
<physid>0</physid>
<slot>SYSTEM ROM</slot>
<size units="bytes">1048576</size>
<width units="bits">4</width>
</node>
</node>
<node id="memory:3" class="memory" handle="">
<physid>b</physid>
</node>
<node id="memory:4" class="memory" handle="">
<physid>c</physid>
</node>
<node id="memory:5" class="memory" handle="PCI:00:00.0">
<description>Memory controller</description>
<product>CK804 Memory Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>0</physid>
<businfo>pci@00:00.0</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
</node>


Thanks so much. PS - XML can be a real PITA when the data you throw at
it is not "correct". I actually had started working with sgmllib after
I saw a similar thread. However I ran into the same problem ( child of
child..)

Thanks again.
 
R

rh0dium

rh0dium said:
Ok so up to here I am ok. I find ( If you want the full xml let me
know) two blocks of system memory. It MUST be "System Memory" only.
Now how do I get a list of all of the children "nodes" of this. They
are named bank:N ( i.e bank:0, bank:1 etc [see below] ). For each one
of those there may ( or may not ) have some memory stuck in it. I can
tell if there is memory because a size is given. I want to a list of
all of the sizes. From there I can say you have sum(memory) in
len(memory) banks of total banks.

So here is what I ended up with. I would really like a XML element
tree guru to look at this. Please ensure that is makes sense.. I
really do appreciate the help! Thanks again.

inp = open("xml.test1")
data = inp.read()
inp.close()
# strip off bogus XML declaration
import re
m = re.match("<\?xml[^>]+>", data)
if m:
data = data[m.end():]
# Apparently ampersands are common in lshw.. Get rid of them..
data = data.replace('&ampersand;', '')
# wrap notes in container element
data = "<doc>" + data + "</doc>"

tree = ET.XML(data)
memory_banks = []
totalbanks = 0
processors = []; processor_vendor= []; processor_freq= []
for elem in tree.findall(".//node"):
if elem.get("class") == "system":
vendor=elem.findtext("vendor")
model=elem.findtext("product")
description=elem.findtext("description")
serial=elem.findtext("serial")
if elem.get("class") == "processor":
processors.append(elem.findtext("product"))
processor_vendor.append(elem.findtext("vendor"))
freq1=float(elem.findtext("size"))/1000000000.00
processor_freq.append(str(freq1)+"Ghz")
if elem.get("class") == "memory":
if elem.findtext("description") == "System Memory":
print "Found system memory bank"
if elem.getchildren():
#Can also use: "for child in
element.getchildren():"
for child in elem:
if child.tag == "node":
# We know the node tag has the right
children
for children in child.getchildren():
#Child element tag name
if children.tag == "size":
print "Sizable memory found",
child.findtext("size")

memory_banks.append(int(child.findtext("size")))


XML Data - Full listing..

<?xml version="1.0" standalone="yes" ?>
<!-- generated by lshw-B.02.03 -->
<!-- GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42) -->
<node id="tern.nsc.com" claimed="true" class="system"
handle="DMI:0002">
<description>Mini Tower Computer</description>
<product>HP xw9300 Workstation</product>
<vendor>Hewlett-Packard</vendor>
<version>HP Minitower</version>
<serial>2UA50709NB</serial>
<width units="bits">32</width>
<configuration>
<setting id="boot" value="normal" />
<setting id="chassis" value="mini-tower" />
<setting id="uuid" value="9F122A90-B76F-D911-BBD8-85AE6E840011"
/>
</configuration>
<capabilities>
<capability id="smbios-2.3" >SMBIOS version 2.3</capability>
<capability id="dmi-2.3" >DMI version 2.3</capability>
</capabilities>
<node id="core" claimed="true" class="bus" handle="DMI:0003">
<description>Motherboard</description>
<product>09C4h</product>
<vendor>Hewlett-Packard</vendor>
<physid>0</physid>
<serial>2UA50709NB</serial>
<node id="firmware" claimed="true" class="memory" handle="">
<description>BIOS</description>
<vendor>Hewlett-Packard</vendor>
<physid>1</physid>
<version>786B9 v1.21 (04/25/2005)</version>
<size units="bytes">131072</size>
<capacity units="bytes">983040</capacity>
<capabilities>
<capability id="pci" >PCI bus</capability>
<capability id="pnp" >Plug-and-Play</capability>
<capability id="upgrade" >BIOS EEPROM can be
upgraded</capability>
<capability id="shadowing" >BIOS shadowing</capability>
<capability id="cdboot" >Booting from
CD-ROM/DVD</capability>
<capability id="bootselect" >Selectable boot
path</capability>
<capability id="edd" >Enhanced Disk Drive
extensions</capability>
<capability id="int13floppytoshiba" >Toshiba
floppy</capability>
<capability id="int13floppy360" >5.25" 360KB
floppy</capability>
<capability id="int13floppy1200" >5.25" 1.2MB
floppy</capability>
<capability id="int13floppy720" >3.5" 720KB
floppy</capability>
<capability id="int5printscreen" >Print Screen
key</capability>
<capability id="int9keyboard" >i8042 keyboard
controller</capability>
<capability id="int14serial" >INT14 serial line
control</capability>
<capability id="int17printer" >INT17 printer
control</capability>
<capability id="acpi" >ACPI</capability>
<capability id="usb" >USB legacy emulation</capability>
<capability id="ls120boot" >Booting from
LS-120</capability>
<capability id="zipboot" >Booting from ATAPI
ZIP</capability>
<capability id="biosbootspecification" >BIOS boot
specification</capability>
<capability id="netboot" >Function-key initiated network
service boot</capability>
</capabilities>
</node>
<node id="cpu:0" claimed="true" class="processor"
handle="DMI:0005">
<description>CPU</description>
<product>AMD Opteron(tm) Processor 250</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>5</physid>
<businfo>cpu@0</businfo>
<version>15.5.10</version>
<slot>CPU0</slot>
<size units="Hz">2400000000</size>
<capacity units="Hz">3000000000</capacity>
<width units="bits">64</width>
<clock units="Hz">1600000000</clock>
<capabilities>
<capability id="fpu" >mathematical
co-processor</capability>
<capability id="fpu_exception" >FPU exceptions
reporting</capability>
<capability id="wp" />
<capability id="vme" >virtual mode extensions</capability>
<capability id="de" >debugging extensions</capability>
<capability id="pse" >page size extensions</capability>
<capability id="tsc" >time stamp counter</capability>
<capability id="msr" >model-specific
registers</capability>
<capability id="pae" >4GB+ memory addressing (Physical
Address Extension)</capability>
<capability id="mce" >machine check
exceptions</capability>
<capability id="cx8" >compare and exchange
8-byte</capability>
<capability id="apic" >on-chip advanced programmable
interrupt controller (APIC)</capability>
<capability id="sep" >fast system calls</capability>
<capability id="mtrr" >memory type range
registers</capability>
<capability id="pge" >page global enable</capability>
<capability id="mca" >machine check
architecture</capability>
<capability id="cmov" >conditional move
instruction</capability>
<capability id="pat" >page attribute table</capability>
<capability id="pse36" >36-bit page size
extensions</capability>
<capability id="clflush" />
<capability id="mmx" >multimedia extensions
(MMX)</capability>
<capability id="fxsr" >fast floating point
save/restore</capability>
<capability id="sse" >streaming SIMD extensions
(SSE)</capability>
<capability id="sse2" >streaming SIMD extensions
(SSE2)</capability>
<capability id="syscall" >fast system calls</capability>
<capability id="nx" >no-execute bit (NX)</capability>
<capability id="mmxext" >multimedia extensions
(MMXExt)</capability>
<capability id="x86-64" >64bits extensions
(x86-64)</capability>
<capability id="3dnowext" >multimedia extensions
(3DNow!Ext)</capability>
<capability id="3dnow" >multimedia extensions
(3DNow!)</capability>
</capabilities>
<node id="cache:0" claimed="true" class="memory"
handle="DMI:0007">
<description>L1 cache</description>
<physid>7</physid>
<slot>L1 Data&ampersand;Inst Caches</slot>
<size units="bytes">131072</size>
<capacity units="bytes">131072</capacity>
<capabilities>
<capability id="burst" >Burst</capability>
<capability id="internal" >Internal</capability>
<capability id="write-back" >Write-back</capability>
<capability id="data" >Data cache</capability>
</capabilities>
</node>
<node id="cache:1" claimed="true" class="memory"
handle="DMI:0008">
<description>L2 cache</description>
<physid>8</physid>
<slot>L2 Cache</slot>
<size units="bytes">1048576</size>
<capacity units="bytes">1048576</capacity>
<capabilities>
<capability id="burst" >Burst</capability>
<capability id="internal" >Internal</capability>
<capability id="write-back" >Write-back</capability>
<capability id="unified" >Unified cache</capability>
</capabilities>
</node>
<node id="cache:2" disabled="true" claimed="true"
class="memory" handle="DMI:0009">
<description>L3 cache</description>
<physid>9</physid>
<slot>none</slot>
</node>
</node>
<node id="cpu:1" claimed="true" class="processor"
handle="DMI:0006">
<description>CPU</description>
<product>AMD Opteron(tm) Processor 250</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>3</physid>
<businfo>cpu@1</businfo>
<version>15.5.10</version>
<slot>CPU1</slot>
<size units="Hz">2400000000</size>
<capacity units="Hz">3000000000</capacity>
<width units="bits">64</width>
<clock units="Hz">1600000000</clock>
<capabilities>
<capability id="fpu" >mathematical
co-processor</capability>
<capability id="fpu_exception" >FPU exceptions
reporting</capability>
<capability id="wp" />
<capability id="vme" >virtual mode extensions</capability>
<capability id="de" >debugging extensions</capability>
<capability id="pse" >page size extensions</capability>
<capability id="tsc" >time stamp counter</capability>
<capability id="msr" >model-specific
registers</capability>
<capability id="pae" >4GB+ memory addressing (Physical
Address Extension)</capability>
<capability id="mce" >machine check
exceptions</capability>
<capability id="cx8" >compare and exchange
8-byte</capability>
<capability id="apic" >on-chip advanced programmable
interrupt controller (APIC)</capability>
<capability id="sep" >fast system calls</capability>
<capability id="mtrr" >memory type range
registers</capability>
<capability id="pge" >page global enable</capability>
<capability id="mca" >machine check
architecture</capability>
<capability id="cmov" >conditional move
instruction</capability>
<capability id="pat" >page attribute table</capability>
<capability id="pse36" >36-bit page size
extensions</capability>
<capability id="clflush" />
<capability id="mmx" >multimedia extensions
(MMX)</capability>
<capability id="fxsr" >fast floating point
save/restore</capability>
<capability id="sse" >streaming SIMD extensions
(SSE)</capability>
<capability id="sse2" >streaming SIMD extensions
(SSE2)</capability>
<capability id="syscall" >fast system calls</capability>
<capability id="nx" >no-execute bit (NX)</capability>
<capability id="mmxext" >multimedia extensions
(MMXExt)</capability>
<capability id="x86-64" >64bits extensions
(x86-64)</capability>
<capability id="3dnowext" >multimedia extensions
(3DNow!Ext)</capability>
<capability id="3dnow" >multimedia extensions
(3DNow!)</capability>
</capabilities>
<node id="cache:0" claimed="true" class="memory"
handle="DMI:000A">
<description>L1 cache</description>
<physid>a</physid>
<slot>L1 Data&ampersand;Inst Caches</slot>
<size units="bytes">131072</size>
<capacity units="bytes">131072</capacity>
<capabilities>
<capability id="burst" >Burst</capability>
<capability id="internal" >Internal</capability>
<capability id="write-back" >Write-back</capability>
<capability id="data" >Data cache</capability>
</capabilities>
</node>
<node id="cache:1" claimed="true" class="memory"
handle="DMI:000B">
<description>L2 cache</description>
<physid>b</physid>
<slot>L2 Cache</slot>
<size units="bytes">1048576</size>
<capacity units="bytes">1048576</capacity>
<capabilities>
<capability id="burst" >Burst</capability>
<capability id="internal" >Internal</capability>
<capability id="write-back" >Write-back</capability>
<capability id="unified" >Unified cache</capability>
</capabilities>
</node>
<node id="cache:2" disabled="true" claimed="true"
class="memory" handle="DMI:000C">
<description>L3 cache</description>
<physid>c</physid>
<slot>none</slot>
</node>
</node>
<node id="memory:0" claimed="true" class="memory"
handle="DMI:0027">
<description>System Memory</description>
<physid>27</physid>
<slot>System board or motherboard</slot>
<node id="bank:0" claimed="true" class="memory"
handle="DMI:002C">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>0</physid>
<slot>DIMM3B</slot>
</node>
<node id="bank:1" claimed="true" class="memory"
handle="DMI:002D">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>1</physid>
<slot>DIMM3A</slot>
</node>
<node id="bank:2" claimed="true" class="memory"
handle="DMI:002E">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>2</physid>
<serial>96000241</serial>
<slot>DIMM1B</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
<node id="bank:3" claimed="true" class="memory"
handle="DMI:002F">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>3</physid>
<serial>4A000741</serial>
<slot>DIMM1A</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
</node>
<node id="memory:1" claimed="true" class="memory"
handle="DMI:0028">
<description>System Memory</description>
<physid>28</physid>
<slot>System board or motherboard</slot>
<node id="bank:0" claimed="true" class="memory"
handle="DMI:0030">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>0</physid>
<slot>DIMM4B</slot>
</node>
<node id="bank:1" claimed="true" class="memory"
handle="DMI:0031">
<description>DIMM DDR Synchronous [empty]</description>
<vendor>JEDEC ID:</vendor>
<physid>1</physid>
<slot>DIMM4A</slot>
</node>
<node id="bank:2" claimed="true" class="memory"
handle="DMI:0032">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>2</physid>
<serial>95000041</serial>
<slot>DIMM2B</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
<node id="bank:3" claimed="true" class="memory"
handle="DMI:0033">
<description>DIMM DDR Synchronous 400 MHz (2.5
ns)</description>
<product>M3 12L2920BG0-CCC</product>
<vendor>JEDEC ID:CE 00 00 00 00 00 00 00</vendor>
<physid>3</physid>
<serial>58000E41</serial>
<slot>DIMM2A</slot>
<size units="bytes">1073741824</size>
<width units="bits">64</width>
<clock units="Hz">400000000</clock>
</node>
</node>
<node id="memory:2" class="memory" handle="DMI:0029">
<description>Flash Memory</description>
<physid>29</physid>
<slot>System board or motherboard</slot>
<capacity units="bytes">1048576</capacity>
<node id="bank" class="memory" handle="DMI:0035">
<description>Chip FLASH Non-volatile</description>
<physid>0</physid>
<slot>SYSTEM ROM</slot>
<size units="bytes">1048576</size>
<width units="bits">4</width>
</node>
</node>
<node id="memory:3" class="memory" handle="">
<physid>b</physid>
</node>
<node id="memory:4" class="memory" handle="">
<physid>c</physid>
</node>
<node id="memory:5" class="memory" handle="PCI:00:00.0">
<description>Memory controller</description>
<product>CK804 Memory Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>0</physid>
<businfo>pci@00:00.0</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
</node>
<node id="isa" class="bridge" handle="PCI:00:01.0">
<description>ISA bridge</description>
<product>nVidia Corporation</product>
<vendor>nVidia Corporation</vendor>
<physid>100</physid>
<businfo>pci@00:01.0</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="isa" />
<capability id="bus_master" >bus mastering</capability>
</capabilities>
</node>
<node id="serial" class="bus" handle="PCI:00:01.1">
<description>SMBus</description>
<product>CK804 SMBus</product>
<vendor>nVidia Corporation</vendor>
<physid>1.1</physid>
<businfo>pci@00:01.1</businfo>
<version>a2</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="2880-289f" />
<resource type="ioport" value="2800-283f" />
<resource type="ioport" value="2840-287f" />
<resource type="irq" value="5" />
</resources>
</node>
<node id="usb:0" claimed="true" class="bus"
handle="PCI:00:02.0">
<description>USB Controller</description>
<product>CK804 USB Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>2</physid>
<businfo>pci@00:02.0</businfo>
<version>a2</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="driver" value="usb-ohci" />
</configuration>
<capabilities>
<capability id="ohci" >Open Host Controller Interface
(USB1)</capability>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="iomemory" value="f2100000-f2100fff" />
<resource type="irq" value="10" />
</resources>
</node>
<node id="usb:1" claimed="true" class="bus"
handle="PCI:00:02.1">
<description>USB Controller</description>
<product>CK804 USB Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>2.1</physid>
<businfo>pci@00:02.1</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="driver" value="ehci-hcd" />
</configuration>
<capabilities>
<capability id="ehci" >Enhanced Host Controller Interface
(USB2)</capability>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="iomemory" value="febf0000-febf00ff" />
<resource type="irq" value="11" />
</resources>
</node>
<node id="multimedia" class="multimedia" handle="PCI:00:04.0">
<description>Multimedia audio controller</description>
<product>CK804 AC'97 Audio Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>4</physid>
<businfo>pci@00:04.0</businfo>
<version>a2</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="2000-20ff" />
<resource type="ioport" value="2400-24ff" />
<resource type="iomemory" value="f2101000-f2101fff" />
<resource type="irq" value="5" />
</resources>
</node>
<node id="ide:0" claimed="true" class="storage"
handle="PCI:00:06.0">
<description>IDE interface</description>
<product>CK804 IDE</product>
<vendor>nVidia Corporation</vendor>
<physid>d</physid>
<businfo>pci@00:06.0</businfo>
<version>a2</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="driver" value="AMD IDE" />
</configuration>
<capabilities>
<capability id="ide" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="28a0-28af" />
</resources>
<node id="ide" claimed="true" class="bus" handle="IDE:ide0">
<description>IDE Channel 0</description>
<physid>0</physid>
<businfo>ide@0</businfo>
<logicalname>ide0</logicalname>
<clock units="Hz">66000000</clock>
<node id="cdrom" claimed="true" class="disk"
handle="IDE:ide0:hda">
<description>DVD reader</description>
<product>HL-DT-ST RW/DVD GCC-4481B</product>
<physid>0</physid>
<businfo>[email protected]</businfo>
<logicalname>/dev/hda</logicalname>
<dev>3d:0d</dev>
<version>1.16</version>
<configuration>
<setting id="mode" value="udma2" />
</configuration>
<capabilities>
<capability id="packet" >ATAPI packet
device</capability>
<capability id="atapi" >ATAPI</capability>
<capability id="cdrom" >can read
CD-ROMs</capability>
<capability id="removable" >support is
removable</capability>
<capability id="nonmagnetic" >support is
non-magnetic (optical)</capability>
<capability id="dma" >Direct Memory
Access</capability>
<capability id="lba" >Large Block
Addressing</capability>
<capability id="iordy" >I/O ready
reporting</capability>
<capability id="audio" >Audio CD
playback</capability>
<capability id="cd-r" >CD-R burning</capability>
<capability id="cd-rw" >CD-RW burning</capability>
<capability id="dvd" >DVD playback</capability>
</capabilities>
</node>
</node>
</node>
<node id="ide:1" claimed="true" class="storage"
handle="SCSI:03">
<description>IDE interface</description>
<product>CK804 Serial ATA Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>7</physid>
<businfo>pci@00:07.0</businfo>
<logicalname>scsi2</logicalname>
<logicalname>scsi3</logicalname>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="driver" value="sata_nv" />
</configuration>
<capabilities>
<capability id="ide" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
<capability id="emulated" >Emulated device</capability>
<capability id="scsi-host" >SCSI host adapter</capability>
</capabilities>
<resources>
<resource type="ioport" value="28d0-28d7" />
<resource type="ioport" value="28f8-28fb" />
<resource type="ioport" value="28d8-28df" />
<resource type="ioport" value="28fc-28ff" />
<resource type="ioport" value="28b0-28bf" />
<resource type="iomemory" value="f2102000-f2102fff" />
<resource type="irq" value="10" />
</resources>
<node id="disk:0" claimed="true" class="disk"
handle="SCSI:02:00:00:00">
<description>SCSI Disk</description>
<product>WDC WD740GD-50FL</product>
<vendor>ATA</vendor>
<physid>0</physid>
<businfo>[email protected]:0.0</businfo>
<logicalname>/dev/sda</logicalname>
<dev>8d:0d</dev>
<version>31.0</version>
<size units="bytes">74355769344</size>
<configuration>
<setting id="ansiversion" value="5" />
</configuration>
</node>
<node id="disk:1" claimed="true" class="disk"
handle="SCSI:03:00:00:00">
<description>SCSI Disk</description>
<product>WDC WD740GD-50FL</product>
<vendor>ATA</vendor>
<physid>1</physid>
<businfo>[email protected]:0.0</businfo>
<logicalname>/dev/sdb</logicalname>
<dev>8d:16d</dev>
<version>31.0</version>
<size units="bytes">74355769344</size>
<configuration>
<setting id="ansiversion" value="5" />
</configuration>
</node>
</node>
<node id="ide:2" claimed="true" class="storage"
handle="PCI:00:08.0">
<description>IDE interface</description>
<product>CK804 Serial ATA Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>8</physid>
<businfo>pci@00:08.0</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="driver" value="sata_nv" />
</configuration>
<capabilities>
<capability id="ide" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="28e0-28e7" />
<resource type="ioport" value="2c00-2c03" />
<resource type="ioport" value="28e8-28ef" />
<resource type="ioport" value="2c04-2c07" />
<resource type="ioport" value="28c0-28cf" />
<resource type="iomemory" value="f2103000-f2103fff" />
<resource type="irq" value="11" />
</resources>
</node>
<node id="pci:0" claimed="true" class="bridge"
handle="PCIBUS:05">
<description>PCI bridge</description>
<product>CK804 PCI Bridge</product>
<vendor>nVidia Corporation</vendor>
<physid>9</physid>
<businfo>pci@00:09.0</businfo>
<version>a2</version>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="pci" />
<capability id="subtractive_decode" />
<capability id="bus_master" >bus mastering</capability>
</capabilities>
<node id="firewire" class="bus" handle="PCI:05:05.0">
<description>FireWire (IEEE 1394)</description>
<product>TSB43AB22/A IEEE-1394a-2000 Controller
(PHY/Link)</product>
<vendor>Texas Instruments</vendor>
<physid>5</physid>
<businfo>pci@05:05.0</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
<capabilities>
<capability id="ohci" >Open Host Controller Interface
(USB1)</capability>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="iomemory" value="f2004000-f20047ff" />
<resource type="iomemory" value="f2000000-f2003fff" />
<resource type="irq" value="11" />
</resources>
</node>
</node>
<node id="bridge" claimed="true" class="bridge"
handle="PCI:00:0a.0">
<description>Ethernet interface</description>
<product>CK804 Ethernet Controller</product>
<vendor>nVidia Corporation</vendor>
<physid>a</physid>
<businfo>pci@00:0a.0</businfo>
<logicalname>eth0</logicalname>
<version>a3</version>
<serial>00:11:85:ae:6e:84</serial>
<width units="bits">32</width>
<clock units="Hz">66000000</clock>
<configuration>
<setting id="broadcast" value="yes" />
<setting id="driver" value="forcedeth" />
<setting id="driverversion" value="0.28" />
<setting id="ip" value="10.188.33.229" />
<setting id="link" value="yes" />
<setting id="multicast" value="yes" />
</configuration>
<capabilities>
<capability id="bridge" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
<capability id="ethernet" />
<capability id="physical" >Physical interface</capability>
</capabilities>
<resources>
<resource type="iomemory" value="f2104000-f2104fff" />
<resource type="ioport" value="28f0-28f7" />
<resource type="irq" value="5" />
</resources>
</node>
<node id="pci:1" claimed="true" class="bridge"
handle="PCIBUS:0a">
<description>PCI bridge</description>
<product>CK804 PCIE Bridge</product>
<vendor>nVidia Corporation</vendor>
<physid>e</physid>
<businfo>pci@00:0e.0</businfo>
<version>a3</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
<configuration>
<setting id="driver" value="PCI Bridge" />
</configuration>
<capabilities>
<capability id="pci" />
<capability id="normal_decode" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<node id="display" claimed="true" class="display"
handle="PCI:0a:00.0">
<description>VGA compatible controller</description>
<product>NV45GL [Quadro FX 3400]</product>
<vendor>nVidia Corporation</vendor>
<physid>0</physid>
<businfo>pci@0a:00.0</businfo>
<version>a2</version>
<size units="bytes">268435456</size>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
<configuration>
<setting id="driver" value="nvidia" />
</configuration>
<capabilities>
<capability id="vga" >VGA graphical
framebuffer</capability>
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="iomemory" value="f0000000-f0ffffff" />
<resource type="iomemory" value="d0000000-dfffffff" />
<resource type="iomemory" value="f1000000-f1ffffff" />
<resource type="irq" value="10" />
</resources>
</node>
</node>
<node id="pci:2" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] HyperTransport Technology
Configuration</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>101</physid>
<businfo>pci@00:18.0</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:3" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] HyperTransport Technology
Configuration</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>102</physid>
<businfo>pci@00:19.0</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:4" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] Address Map</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>103</physid>
<businfo>pci@00:18.1</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:5" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] Address Map</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>104</physid>
<businfo>pci@00:19.1</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:6" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] DRAM Controller</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>105</physid>
<businfo>pci@00:18.2</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:7" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] DRAM Controller</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>106</physid>
<businfo>pci@00:19.2</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:8" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] Miscellaneous
Control</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>107</physid>
<businfo>pci@00:18.3</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="pci:9" claimed="true" class="bridge"
handle="PCIBUS:00">
<description>Host bridge</description>
<product>K8 [Athlon64/Opteron] Miscellaneous
Control</product>
<vendor>Advanced Micro Devices [AMD]</vendor>
<physid>108</physid>
<businfo>pci@00:19.3</businfo>
<version>00</version>
<width units="bits">32</width>
<clock units="Hz">33000000</clock>
</node>
<node id="scsi:0" class="storage" handle="PCI:61:06.0">
<description>SCSI storage controller</description>
<product>53c1030 PCI-X Fusion-MPT Dual Ultra320
SCSI</product>
<vendor>LSI Logic / Symbios Logic</vendor>
<physid>6</physid>
<businfo>pci@61:06.0</businfo>
<version>07</version>
<width units="bits">64</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="scsi" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="1000-10ff" />
<resource type="iomemory" value="f2200000-f22fffff" />
<resource type="iomemory" value="f2300000-f23fffff" />
<resource type="irq" value="10" />
</resources>
</node>
<node id="scsi:1" class="storage" handle="PCI:61:06.1">
<description>SCSI storage controller</description>
<product>53c1030 PCI-X Fusion-MPT Dual Ultra320
SCSI</product>
<vendor>LSI Logic / Symbios Logic</vendor>
<physid>6.1</physid>
<businfo>pci@61:06.1</businfo>
<version>07</version>
<width units="bits">64</width>
<clock units="Hz">66000000</clock>
<capabilities>
<capability id="scsi" />
<capability id="bus_master" >bus mastering</capability>
<capability id="cap_list" >PCI capabilities
listing</capability>
</capabilities>
<resources>
<resource type="ioport" value="1400-14ff" />
<resource type="iomemory" value="f2400000-f24fffff" />
<resource type="iomemory" value="f2500000-f25fffff" />
<resource type="irq" value="11" />
</resources>
</node>
</node>
<node id="usb" claimed="true" class="input" handle="USB:1:3">
<description>Keyboard</description>
<product>Dell USB Keyboard Hub</product>
<vendor>Dell</vendor>
<physid>1</physid>
<businfo>usb@1:0</businfo>
<version>2.00</version>
<configuration>
<setting id="driver" value="hid" />
<setting id="maxpower" value="0mA" />
<setting id="speed" value="12.0MB/s" />
</configuration>
<capabilities>
<capability id="usb-1.10" >USB 1.1</capability>
</capabilities>
</node>
<node id="scsi:0" claimed="true" class="storage" handle="SCSI:00">
<description>SCSI storage controller</description>
<physid>2</physid>
<businfo>scsi@0</businfo>
<logicalname>scsi0</logicalname>
<configuration>
<setting id="driver" value="mptscsih" />
</configuration>
<capabilities>
<capability id="scsi-host" >SCSI host adapter</capability>
</capabilities>
</node>
<node id="scsi:1" claimed="true" class="storage" handle="SCSI:01">
<description>SCSI storage controller</description>
<physid>3</physid>
<businfo>scsi@1</businfo>
<logicalname>scsi1</logicalname>
<configuration>
<setting id="driver" value="mptscsih" />
</configuration>
<capabilities>
<capability id="scsi-host" >SCSI host adapter</capability>
</capabilities>
</node>
<node id="scsi:2" claimed="true" class="storage" handle="SCSI:04">
<description>SCSI storage controller</description>
<physid>4</physid>
<businfo>scsi@4</businfo>
<logicalname>scsi4</logicalname>
<configuration>
<setting id="driver" value="sata_nv" />
</configuration>
<capabilities>
<capability id="scsi-host" >SCSI host adapter</capability>
</capabilities>
</node>
<node id="scsi:3" claimed="true" class="storage" handle="SCSI:05">
<description>SCSI storage controller</description>
<physid>5</physid>
<businfo>scsi@5</businfo>
<logicalname>scsi5</logicalname>
<configuration>
<setting id="driver" value="sata_nv" />
</configuration>
<capabilities>
<capability id="scsi-host" >SCSI host adapter</capability>
</capabilities>
</node>
</node>
 
F

Fredrik Lundh

rh0dium said:
Ok so up to here I am ok. I find ( If you want the full xml let me
know) two blocks of system memory. It MUST be "System Memory" only.
Now how do I get a list of all of the children "nodes" of this. They
are named bank:N ( i.e bank:0, bank:1 etc [see below] ). For each one
of those there may ( or may not ) have some memory stuck in it. I can
tell if there is memory because a size is given. I want to a list of
all of the sizes. From there I can say you have sum(memory) in
len(memory) banks of total banks.

once you've found a memory node, you should be able to simply loop
over all node children, optionally filter on the id attribute, and look for
size elements.

sizes = []

for elem in tree.findall(".//node"):
if elem.get("class") == "memory":
if elem.findtext("description") == "System Memory":
print "Found system memory bank"
# loop over subnodes
for node in elem:
size = node.findtext("size")
if size:
sizes.append(int(size))

print len(sizes), sum(sizes)

note that this assumes that the size is always in bytes. if not,
you have to check the units attribute; e.g.

size_elem = node.find("size")
if size_elem is not None:
unit = size_elem.get("units", "bytes")
size = int(size_elem.text)
...

</F>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,059
Latest member
cryptoseoagencies

Latest Threads

Top