Back to index

glibc  2.9
Functions
getloadavg.c File Reference
#include <errno.h>
#include <fcntl.h>
#include <locale.h>
#include <stdlib.h>
#include <unistd.h>
#include <not-cancel.h>

Go to the source code of this file.

Functions

int getloadavg (double loadavg[], int nelem)

Function Documentation

int getloadavg ( double  loadavg[],
int  nelem 
)

Definition at line 33 of file getloadavg.c.

{
  int fd;

  fd = open_not_cancel_2 ("/proc/loadavg", O_RDONLY);
  if (fd < 0)
    return -1;
  else
    {
      char buf[65], *p;
      ssize_t nread;
      int i;

      nread = read_not_cancel (fd, buf, sizeof buf - 1);
      close_not_cancel_no_status (fd);
      if (nread <= 0)
       return -1;
      buf[nread - 1] = '\0';

      if (nelem > 3)
       nelem = 3;
      p = buf;
      for (i = 0; i < nelem; ++i)
       {
         char *endp;
         loadavg[i] = __strtod_l (p, &endp, _nl_C_locobj_ptr);
         if (endp == p)
           /* This should not happen.  The format of /proc/loadavg
              must have changed.  Don't return with what we have,
              signal an error.  */
           return -1;
         p = endp;
       }

      return i;
    }
}

Here is the call graph for this function: