Changes in uspace/lib/c/generic/sysinfo.c [d9fae235:63f8966] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/sysinfo.c
rd9fae235 r63f8966 31 31 */ 32 32 /** @file 33 */ 33 */ 34 34 35 35 #include <libc.h> 36 36 #include <sysinfo.h> 37 37 #include <str.h> 38 #include <errno.h>39 #include <malloc.h>40 #include <bool.h>41 38 42 sys info_item_tag_t sysinfo_get_tag(const char *path)39 sysarg_t sysinfo_value(const char *name) 43 40 { 44 return (sysinfo_item_tag_t) __SYSCALL2(SYS_SYSINFO_GET_TAG, 45 (sysarg_t) path, (sysarg_t) str_size(path)); 46 } 47 48 int 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 54 static 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 60 extern 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 } 41 return __SYSCALL2(SYS_SYSINFO_VALUE, (sysarg_t) name, 42 (sysarg_t) str_size(name)); 81 43 } 82 44
Note:
See TracChangeset
for help on using the changeset viewer.