(linenum→info "unix/slp.c:2238")

bsd-games/2.17/lib/getloadavg.c

    1: /* lib/getloadavg.c - bsd-games implementation of getloadavg.
    2:  *
    3:  * Copyright (c) 1998, 1999 Joseph Samuel Myers.
    4:  * All rights reserved.
    5:  *
    6:  * Redistribution and use in source and binary forms, with or without
    7:  * modification, are permitted provided that the following conditions
    8:  * are met:
    9:  * 1. Redistributions of source code must retain the above copyright
   10:  *    notice, this list of conditions and the following disclaimer.
   11:  * 2. Redistributions in binary form must reproduce the above copyright
   12:  *    notice, this list of conditions and the following disclaimer in the
   13:  *    documentation and/or other materials provided with the distribution.
   14:  * 3. The name of the author may not be used to endorse or promote products
   15:  *    derived from this software without specific prior written permission.
   16:  *
   17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   21:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   22:  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   23:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   24:  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   25:  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   26:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   27:  * SUCH DAMAGE.
   28:  */
   29: 
   30: #include <stdio.h>
   31: #include <stdlib.h>
   32: 
   33: #ifndef HAVE_getloadavg
   34: int
   35: getloadavg(double loadavg[], int nelem)
   36: {
   37:   double load_averages[3];
   38:   FILE *fp;
   39:   int count;
   40:   int i;
   41:   int nc;
   42:   fp = fopen("/proc/loadavg", "r");
   43:   if (fp == NULL)
   44:     return -1;
   45:   count = fscanf(fp, "%lf%lf%lf", &(load_averages[0]), &(load_averages[1]),
   46:                  &(load_averages[2]));
   47:   fclose(fp);
   48:   if ((count == EOF) || (count == 0))
   49:     return -1;
   50:   nc = ((nelem < count) ? nelem : count);
   51:   for (i = 0; i < nc; i++)
   52:     loadavg[i] = load_averages[i];
   53:   return nc;
   54: }
   55: #endif
Syntax (Markdown)