source: ocsinventory-agent/trunk/fuentes/lib/Ocsinventory/Agent/Backend/OS/AIX/CPU.pm @ 468

Last change on this file since 468 was 468, checked in by mabarracus, 4 years ago

Copyt trusty code

File size: 2.1 KB
Line 
1package Ocsinventory::Agent::Backend::OS::AIX::CPU;
2use strict;
3use warnings;
4
5sub check { 1 } 
6
7# try to simulate a modern lsattr output on AIX4
8sub lsattrForAIX4 {
9  my $device = shift;
10
11  my @lsattr;
12  my @lsattrtemp=`lsattr -EOl $device -a 'state:type'`;
13  for (@lsattrtemp) {
14    chomp;
15
16    my $frequency;
17
18    my (undef,$type)=split /:/;
19    #
20    # On older models, frequency is based on cpu model and uname
21    #
22    if ( $type eq "PowerPC"
23        or $type eq "PowerPC_601"
24        or $type eq "PowerPC_604") {
25      my $uname=`uname -m`;
26      $frequency=112000000 if ($uname=~/E1D|EAD|C1D|R04|C4D|R4D/);
27      $frequency=133000000 if ($uname=~/34M/);
28      $frequency=150000000 if ($uname=~/N4D/);
29      $frequency=200000000 if ($uname=~/X4M|X4D/);
30      $frequency=225000000 if ($uname=~/N4E|K04|K44/);
31      $frequency=320000000 if ($uname=~/N4F/);
32      $frequency=360000000 if ($uname=~/K45/);
33    }
34    elsif ( $type eq "PowerPC_RS64_III" ) {
35      $frequency=400000000;
36    }
37    elsif ( $type eq "PowerPC_620" ) {
38      $frequency=172000000;
39    } else {
40      $frequency=225000000;
41    }
42    push @lsattr,"$device:$frequency\n";
43  }
44
45}
46
47sub run {
48  my $params = shift;
49  my $common = $params->{common};
50 
51  # TODO Need to be able to register different CPU speed!
52 
53  my $processort;
54  my $processorn;
55  my $processors; 
56  my $frequency;
57  my @lsdev; 
58  my @lsattr;
59
60  #lsdev -Cc processor -F name
61  #lsattr -EOl proc16
62  my $aixversion=`uname -v`;
63  for (`lsdev -Cc processor -F name`){
64    chomp(my $device = $_);
65
66    if ( $aixversion < 5 ) {
67      @lsattr=lsattrForAIX4($device);
68    } else {
69      @lsattr=`lsattr -EOl $device -a 'state:type:frequency'`;
70    }
71
72    for (@lsattr) {
73      if ( ! /^#/ && /(.+):(.+):(.+)/ ) {
74        $processorn++;
75        $processort=$2;
76        if ( ($3 % 1000000) >= 50000){
77          $processors=int (($3/1000000) +1); 
78        }
79        else {
80          $processors=int (($3/1000000)); 
81        }
82      }
83    }
84  }
85  $processort =~ s/_/ /;
86 
87  $common->setHardware({
88
89      PROCESSORT => $processort,
90      PROCESSORN => $processorn,
91      PROCESSORS => $processors
92
93    });
94
95}
96
971
Note: See TracBrowser for help on using the repository browser.