Changeset d9fae235 in mainline for uspace/lib/c
- Timestamp:
- 2010-04-17T01:28:38Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9d6bfa5
- Parents:
- 9256ad29
- Location:
- uspace/lib/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/ia64/src/ddi.c
r9256ad29 rd9fae235 2 2 #include <sysinfo.h> 3 3 4 uint64_t ia64_iospace_address=0; 5 4 uint64_t ia64_iospace_address = 0; 6 5 7 6 uint64_t get_ia64_iospace_address(void) 8 7 { 9 10 return sysinfo_value("ia64_iospace.address.virtual"); 11 8 sysarg_t addr; 9 if (sysinfo_get_value("ia64_iospace.address.virtual", &addr) != 0) 10 addr = 0; 11 12 return addr; 12 13 } 13 14 -
uspace/lib/c/generic/sysinfo.c
r9256ad29 rd9fae235 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> 38 41 39 sys arg_t sysinfo_value(const char *name)42 sysinfo_item_tag_t sysinfo_get_tag(const char *path) 40 43 { 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 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 } 43 81 } 44 82 -
uspace/lib/c/generic/task.c
r9256ad29 rd9fae235 70 70 * loader API. 71 71 * 72 * @param path pathname of the binary to execute 73 * @param argv command-line arguments 72 * @param path Pathname of the binary to execute. 73 * @param argv Command-line arguments. 74 * @param err If not NULL, the error value is stored here. 74 75 * 75 76 * @return ID of the newly created task or zero on error. 76 77 * 77 78 */ 78 task_id_t task_spawn(const char *path, const char *const args[] )79 task_id_t task_spawn(const char *path, const char *const args[], int *err) 79 80 { 80 81 /* Connect to a program loader. */ 81 82 loader_t *ldr = loader_connect(); 82 if (ldr == NULL) 83 if (ldr == NULL) { 84 if (err != NULL) 85 *err = EREFUSED; 86 83 87 return 0; 88 } 84 89 85 90 /* Get task ID. */ … … 143 148 /* Success */ 144 149 free(ldr); 150 151 if (err != NULL) 152 *err = EOK; 153 145 154 return task_id; 146 155 … … 149 158 loader_abort(ldr); 150 159 free(ldr); 160 161 if (err != NULL) 162 *err = rc; 151 163 152 164 return 0; -
uspace/lib/c/include/sysinfo.h
r9256ad29 rd9fae235 31 31 */ 32 32 /** @file 33 */ 33 */ 34 34 35 35 #ifndef LIBC_SYSINFO_H_ … … 37 37 38 38 #include <libc.h> 39 #include <sysinfo.h>40 #include <str.h>41 39 42 sysarg_t sysinfo_value(const char *name); 40 typedef enum { 41 SYSINFO_VAL_UNDEFINED = 0, 42 SYSINFO_VAL_VAL = 1, 43 SYSINFO_VAL_DATA = 2 44 } sysinfo_item_tag_t; 45 46 extern sysinfo_item_tag_t sysinfo_get_tag(const char *); 47 extern int sysinfo_get_value(const char *, sysarg_t *); 48 extern void *sysinfo_get_data(const char *, size_t *); 43 49 44 50 #endif -
uspace/lib/c/include/task.h
r9256ad29 rd9fae235 46 46 47 47 extern task_id_t task_get_id(void); 48 extern int task_set_name(const char *name); 49 extern task_id_t task_spawn(const char *path, const char *const argv[]); 50 extern int task_wait(task_id_t id, task_exit_t *texit, int *retval); 51 extern int task_retval(int val); 52 48 extern int task_set_name(const char *); 49 extern task_id_t task_spawn(const char *, const char *const[], int *); 50 extern int task_wait(task_id_t id, task_exit_t *, int *); 51 extern int task_retval(int); 53 52 54 53 #endif
Note:
See TracChangeset
for help on using the changeset viewer.