Example #1
0
 def read(self, kstat_p, raw_data_type=None):
     libkstat.kstat_read(self._kstat_ctl, kstat_p, None)
     kstat = kstat_p.contents  
     # kstat can store multiple types of data, return the appropriate type 
     if kstat.ks_type == libkstat.KSTAT_TYPE_RAW:
         if not raw_data_type:
             raise TypeError('raw_data_type not specified for ks_type = KSTAT_TYPE_RAW')
         return KstatRawData(kstat, raw_data_type)
     elif kstat.ks_type == libkstat.KSTAT_TYPE_NAMED:
         return KstatNamedData(kstat)
     elif kstat.ks_type == libkstat.KSTAT_TYPE_INTR:
         return KstatIntrData(kstat) 
     elif kstat.ks_type == libkstat.KSTAT_TYPE_IO:
         return KstatIOData(kstat) 
     elif kstat.ks_type == libkstat.KSTAT_TYPE_TIMER:
         pass
     else:
         pass
     return value
Example #2
0
    def __getitem__(self, triplet):
        module, instance, name = triplet
        ksp = libkstat.kstat_lookup(self._ctl, module, instance, name)
        if not ksp:
            raise KeyError(triplet)
        libkstat.kstat_read(self._ctl, ksp, None)
        ks = ksp.contents
        if ks.ks_type == libkstat.KSTAT_TYPE_RAW:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_NAMED:
            value = dict()
            print ks.ks_data
            datap = C.cast(ks.ks_data, C.POINTER(libkstat.kstat_named))
            for i in range(ks.ks_ndata):
                if datap[i].data_type == libkstat.KSTAT_DATA_CHAR:
                    value[datap[i].name] = datap[i].value.c
                elif datap[i].data_type == libkstat.KSTAT_DATA_INT32:
                    value[datap[i].name] = datap[i].value.i32
                elif datap[i].data_type == libkstat.KSTAT_DATA_UINT32:
                    value[datap[i].name] = datap[i].value.ui32
                elif datap[i].data_type == libkstat.KSTAT_DATA_INT64:
                    value[datap[i].name] = datap[i].value.i64
                elif datap[i].data_type == libkstat.KSTAT_DATA_UINT64:
                    value[datap[i].name] = datap[i].value.ui64
                #print datap.contents
                #print dir(datap[i].value)
                #value[datap[i].name] = 0
        elif ks.ks_type == libkstat.KSTAT_TYPE_INTR:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_IO:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_TIMER:
            pass
        else:
            pass

        return value
Example #3
0
    def __getitem__(self, triplet):
        module, instance, name = triplet
        ksp = libkstat.kstat_lookup(self._ctl, module, instance, name)
        if not ksp:
            raise KeyError(triplet)
        libkstat.kstat_read(self._ctl, ksp, None)
        ks = ksp.contents
        if ks.ks_type == libkstat.KSTAT_TYPE_RAW:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_NAMED:
            value = dict()
            print ks.ks_data
            datap = C.cast(ks.ks_data, C.POINTER(libkstat.kstat_named))
            for i in range(ks.ks_ndata):
                if datap[i].data_type == libkstat.KSTAT_DATA_CHAR:
                    value[datap[i].name] = datap[i].value.c
                elif datap[i].data_type == libkstat.KSTAT_DATA_INT32:
                    value[datap[i].name] = datap[i].value.i32
                elif datap[i].data_type == libkstat.KSTAT_DATA_UINT32:
                    value[datap[i].name] = datap[i].value.ui32
                elif datap[i].data_type == libkstat.KSTAT_DATA_INT64:
                    value[datap[i].name] = datap[i].value.i64
                elif datap[i].data_type == libkstat.KSTAT_DATA_UINT64:
                    value[datap[i].name] = datap[i].value.ui64
                #print datap.contents
                #print dir(datap[i].value)
                #value[datap[i].name] = 0
        elif ks.ks_type == libkstat.KSTAT_TYPE_INTR:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_IO:
            pass
        elif ks.ks_type == libkstat.KSTAT_TYPE_TIMER:
            pass
        else:
            pass

        return value
Example #4
0
File: kstat.py Project: fcicq/kstat
 def _read_value(self, ksp):
     libkstat.kstat_read(self._ctl, ksp, None)
     return self._parse_value(ksp)
Example #5
0
 def _read_value(self, ksp):
     libkstat.kstat_read(self._ctl, ksp, None)
     return self._parse_value(ksp)