Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/sysinfo.c

    r63f8966 rd9fae235  
    3131 */
    3232/** @file
    33  */ 
     33 */
    3434
    3535#include <libc.h>
    3636#include <sysinfo.h>
    3737#include <str.h>
     38#include <errno.h>
     39#include <malloc.h>
     40#include <bool.h>
    3841
    39 sysarg_t sysinfo_value(const char *name)
     42sysinfo_item_tag_t sysinfo_get_tag(const char *path)
    4043{
    41         return __SYSCALL2(SYS_SYSINFO_VALUE, (sysarg_t) name,
    42             (sysarg_t) str_size(name));
     44        return (sysinfo_item_tag_t) __SYSCALL2(SYS_SYSINFO_GET_TAG,
     45            (sysarg_t) path, (sysarg_t) str_size(path));
     46}
     47
     48int sysinfo_get_value(const char *path, sysarg_t *value)
     49{
     50        return (int) __SYSCALL3(SYS_SYSINFO_GET_VALUE, (sysarg_t) path,
     51            (sysarg_t) str_size(path), (sysarg_t) value);
     52}
     53
     54static int sysinfo_get_data_size(const char *path, size_t *size)
     55{
     56        return (int) __SYSCALL3(SYS_SYSINFO_GET_DATA_SIZE, (sysarg_t) path,
     57            (sysarg_t) str_size(path), (sysarg_t) size);
     58}
     59
     60extern void *sysinfo_get_data(const char *path, size_t *size)
     61{
     62        while (true) {
     63                int ret = sysinfo_get_data_size(path, size);
     64                if (ret != EOK)
     65                        return NULL;
     66               
     67                void *data = malloc(*size);
     68                if (data == NULL)
     69                        return NULL;
     70               
     71                ret = __SYSCALL4(SYS_SYSINFO_GET_DATA, (sysarg_t) path,
     72                    (sysarg_t) str_size(path), (sysarg_t) data, (sysarg_t) *size);
     73                if (ret == EOK)
     74                        return data;
     75               
     76                if (ret != ENOMEM)
     77                        return NULL;
     78               
     79                free(data);
     80        }
    4381}
    4482
Note: See TracChangeset for help on using the changeset viewer.