hostinfo.cc revision 1762
15659Sgblack@eecs.umich.edu/*
25659Sgblack@eecs.umich.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan
35659Sgblack@eecs.umich.edu * All rights reserved.
45659Sgblack@eecs.umich.edu *
55659Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
65659Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
75659Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
85659Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
95659Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
105659Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
115659Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
125659Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
135659Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
145659Sgblack@eecs.umich.edu * this software without specific prior written permission.
155659Sgblack@eecs.umich.edu *
165659Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
175659Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
185659Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
195659Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
205659Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
215659Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
225659Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
235659Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
245659Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255659Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265659Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275659Sgblack@eecs.umich.edu */
285659Sgblack@eecs.umich.edu
295659Sgblack@eecs.umich.edu#include <ctype.h>
305659Sgblack@eecs.umich.edu#include <errno.h>
315659Sgblack@eecs.umich.edu#include <math.h>
325659Sgblack@eecs.umich.edu#include <unistd.h>
335659Sgblack@eecs.umich.edu
345659Sgblack@eecs.umich.edu#include <cstdio>
355659Sgblack@eecs.umich.edu#include <cstdlib>
365659Sgblack@eecs.umich.edu#include <cstring>
375659Sgblack@eecs.umich.edu#include <string>
385659Sgblack@eecs.umich.edu
395659Sgblack@eecs.umich.edu#include "base/misc.hh"
405659Sgblack@eecs.umich.edu#include "sim/host.hh"
415659Sgblack@eecs.umich.edu
425659Sgblack@eecs.umich.eduusing namespace std;
435659Sgblack@eecs.umich.edu
445659Sgblack@eecs.umich.edustring
455659Sgblack@eecs.umich.edu__get_hostname()
465659Sgblack@eecs.umich.edu{
475659Sgblack@eecs.umich.edu    char host[256];
485659Sgblack@eecs.umich.edu    if (gethostname(host, sizeof host) == -1)
495659Sgblack@eecs.umich.edu        warn("could not get host name!");
505659Sgblack@eecs.umich.edu    return host;
515659Sgblack@eecs.umich.edu}
525659Sgblack@eecs.umich.edu
535659Sgblack@eecs.umich.edustring &
545659Sgblack@eecs.umich.eduhostname()
555659Sgblack@eecs.umich.edu{
565659Sgblack@eecs.umich.edu    static string hostname = __get_hostname();
575659Sgblack@eecs.umich.edu    return hostname;
585659Sgblack@eecs.umich.edu}
595659Sgblack@eecs.umich.edu
605659Sgblack@eecs.umich.eduuint64_t
615659Sgblack@eecs.umich.eduprocInfo(char *filename, char *target)
625659Sgblack@eecs.umich.edu{
635659Sgblack@eecs.umich.edu    int  done = 0;
645659Sgblack@eecs.umich.edu    char line[80];
655659Sgblack@eecs.umich.edu    char format[80];
666040Sgblack@eecs.umich.edu    long usage;
675659Sgblack@eecs.umich.edu
685659Sgblack@eecs.umich.edu    FILE *fp = fopen(filename, "r");
695659Sgblack@eecs.umich.edu
705659Sgblack@eecs.umich.edu    while (fp && !feof(fp) && !done) {
715659Sgblack@eecs.umich.edu        if (fgets(line, 80, fp)) {
725659Sgblack@eecs.umich.edu            if (strncmp(line, target, strlen(target)) == 0) {
735659Sgblack@eecs.umich.edu                snprintf(format, sizeof(format), "%s %%lld", target);
745659Sgblack@eecs.umich.edu                sscanf(line, format, &usage);
755659Sgblack@eecs.umich.edu
765659Sgblack@eecs.umich.edu                fclose(fp);
775659Sgblack@eecs.umich.edu                return usage ;
785659Sgblack@eecs.umich.edu            }
795659Sgblack@eecs.umich.edu        }
805659Sgblack@eecs.umich.edu    }
815659Sgblack@eecs.umich.edu
827072Sgblack@eecs.umich.edu    if (fp)
837072Sgblack@eecs.umich.edu      fclose(fp);
845659Sgblack@eecs.umich.edu
855659Sgblack@eecs.umich.edu    return 0;
865659Sgblack@eecs.umich.edu}
875659Sgblack@eecs.umich.edu