anchor.diff:  linux_cpuinfo_lookup(Key) when is_list(Key) ->
       linux_info_lookup(Key, "/proc/cpuinfo").
   
  -linux_which_cpuinfo(wind_river) ->
  +linux_cpuinfo_cpu() ->
  +    case linux_cpuinfo_lookup("cpu") of
  +        [Model] ->
  +            Model;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_motherboard() ->
  +    case linux_cpuinfo_lookup("motherboard") of
  +        [MB] ->
  +            MB;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_bogomips() ->
  +    case linux_cpuinfo_lookup("bogomips") of
  +        BMips when is_list(BMips) ->
  +            try lists:sum([bogomips_to_int(BM) || BM <- BMips])
  +            catch
  +                _:_:_ ->
  +                    "-"
  +            end;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_total_bogomips() ->
  +    case linux_cpuinfo_lookup("total bogomips") of
  +        [TMB] ->
  +            TMB;
  +        _ ->
  +            "-"
  +    end.
  +
  +bogomips_to_int(BM) ->
  +    try list_to_float(BM) of
  +        F ->
  +            floor(F)
  +    catch
  +        _:_:_ ->
  +            try list_to_integer(BM) of
  +                I ->
  +                    I
  +            catch
  +                _:_:_ ->
  +                    throw(noinfo)
  +            end
  +    end.
  +
  +linux_cpuinfo_model() ->
  +    case linux_cpuinfo_lookup("model") of
  +        [M] ->
  +            M;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_platform() ->
  +    case linux_cpuinfo_lookup("platform") of
  +        [P] ->
  +            P;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_model_name() ->
  +    case linux_cpuinfo_lookup("model name") of
  +        [P|_] ->
  +            P;
  +        _X ->
  +            "-"
  +    end.
  +
  +linux_cpuinfo_processor() ->
  +    case linux_cpuinfo_lookup("Processor") of
  +        [P] ->
  +            P;
  +        _ ->
  +            "-"
  +    end.
  +
  +linux_which_cpuinfo(montavista) ->
       CPU =
  -        case linux_cpuinfo_lookup("model") of
  +        case linux_cpuinfo_cpu() of
               "-" ->
                   throw(noinfo);
               Model ->
  -                case linux_cpuinfo_lookup("platform") of
  +                case linux_cpuinfo_motherboard() of
  +                    "-" ->
  +                        Model;
  +                    MB ->
  +                        Model ++ " (" ++ MB ++ ")"
  +                end
  +        end,
  +    case linux_cpuinfo_bogomips() of
  +        "-" ->
  +            {ok, CPU};
  +        BMips ->
  +            {ok, {CPU, BMips}}
  +    end;
  +
  +linux_which_cpuinfo(yellow_dog) ->
  +    CPU =
  +        case linux_cpuinfo_cpu() of
  +            "-" ->
  +                throw(noinfo);
  +            Model ->
  +                case linux_cpuinfo_motherboard() of
  +                    "-" ->
  +                        Model;
  +                    MB ->
  +                        Model ++ " (" ++ MB ++ ")"
  +                end
  +        end,
  +    {ok, CPU};
  +
  +linux_which_cpuinfo(wind_river) ->
  +    CPU =
  +        case linux_cpuinfo_model() of
  +            "-" ->
  +                throw(noinfo);
  +            Model ->
  +                case linux_cpuinfo_platform() of
                       "-" ->
                           Model;
                       Platform ->
                           Model ++ " (" ++ Platform ++ ")"
                   end
           end,
  -    case linux_cpuinfo_lookup("total bogomips") of
  +    case linux_cpuinfo_total_bogomips() of
           "-" ->
               {ok, CPU};
           BMips ->
  
positive.code:                       "~n   Version:        ~p"
                        "~n   Num Schedulers: ~s"
                        "~n", [OsFam, OsName, Version, str_num_schedulers()]),
              try erlang:system_info(schedulers) of
                  1 ->
                      10;
                  2 ->
                      5;
                  N when (N =< 6) ->
                      2;
                  _ ->
                      1
              catch
                  _:_:_ ->
                      10
              end
      end.
  
  str_num_schedulers() ->
  
negative.code:         _:_:_ -> "-"
      end.
  
  num_schedulers_to_factor() ->
      try erlang:system_info(schedulers) of
          1 ->
              10;
          2 ->
              5;
          N when (N =< 6) ->
              2;
          _ ->
              1
      catch
          _:_:_ ->
              10
      end.
      
  
      
  linux_which_distro(Version) ->
      case file:read_file_info("/etc/issue") of
          {ok, _} ->
              case [string:trim(S) ||
                       S <- string:tokens(os:cmd("cat /etc/issue"), [$\n])] of
                  [DistroStr|_] ->
                      io:format("Linux: ~s"
                                "~n   ~s"
                                "~n",
                                [Version, DistroStr]),
                      case DistroStr of
                          "Wind River Linux" ++ _ ->
                              wind_river;
                          "MontaVista" ++ _ ->
                              montavista;
                          "Yellow Dog" ++ _ ->
                              yellow_dog;
                          _ ->
                              other
                      end;
                  X ->
                      io:format("Linux: ~s"
                                "~n   ~p"
                                "~n",
                                [Version, X]),
                      other
              end;
          _ ->
              io:format("Linux: ~s"
                        "~n", [Version]),
              other
      end.
  
      
  analyze_and_print_linux_host_info(Version) ->
      Distro = linux_which_distro(Version),
      Factor =
          case (catch linux_which_cpuinfo(Distro)) of
              {ok, {CPU, BogoMIPS}} ->
                  io:format("CPU: "
                            "~n   Model:          ~s"
                            "~n   BogoMIPS:       ~w"
                            "~n   Num Schedulers: ~s"
                            "~n", [CPU, BogoMIPS, str_num_schedulers()]),
                  if
                      (BogoMIPS > 20000) ->
                          1;
                      (BogoMIPS > 10000) ->
                          2;
                      (BogoMIPS > 5000) ->
                          3;
                      (BogoMIPS > 2000) ->
                          5;
                      (BogoMIPS > 1000) ->
                          8;
                      true ->
                          10
                  end;
              {ok, CPU} ->
                  io:format("CPU: "
                            "~n   Model:          ~s"
                            "~n   Num Schedulers: ~s"
                            "~n", [CPU, str_num_schedulers()]),
                  num_schedulers_to_factor();
              _ ->
                  5
          end,
      %% Check if we need to adjust the factor because of the memory
      try linux_which_meminfo() of
  