Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0d33863 in mainline


Ignore:
Timestamp:
2011-08-17T17:44:52Z (10 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
lfn, master
Children:
1b55da67
Parents:
4419c34
Message:

getloadavg() implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/posix/stdlib.c

    r4419c34 r0d33863  
    4949#include "libc/str.h"
    5050#include "libc/vfs/vfs.h"
     51#include "libc/stats.h"
    5152
    5253/**
     
    473474 * Get system load average statistics.
    474475 *
    475  * Not supported. Always returns -1.
    476  *
    477476 * @param loadavg Array where the load averages shall be placed.
    478477 * @param nelem Maximum number of elements to be placed into the array.
     
    481480int bsd_getloadavg(double loadavg[], int nelem)
    482481{
    483         return -1;
     482        assert(nelem > 0);
     483       
     484        size_t count;
     485        load_t *loads = stats_get_load(&count);
     486       
     487        if (loads == NULL) {
     488                return -1;
     489        }
     490       
     491        if (((size_t) nelem) < count) {
     492                count = nelem;
     493        }
     494       
     495        for (size_t i = 0; i < count; ++i) {
     496                loadavg[i] = (double) loads[i];
     497        }
     498       
     499        free(loads);
     500        return count;
    484501}
    485502
Note: See TracChangeset for help on using the changeset viewer.