Changeset 1c635d6 in mainline
- Timestamp:
- 2014-08-26T15:12:12Z (10 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 613d644
- Parents:
- df7f5cea
- Location:
- uspace
- Files:
-
- 1 added
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/exec.c
rdf7f5cea r1c635d6 97 97 { 98 98 task_id_t tid; 99 task_wait_t twait; 99 100 task_exit_t texit; 100 101 char *tmp; … … 121 122 file_handles_p[i] = NULL; 122 123 123 rc = task_spawnvf(&tid, tmp, (const char **) argv, file_handles_p);124 rc = task_spawnvf(&tid, &twait, tmp, (const char **) argv, file_handles_p); 124 125 free(tmp); 125 126 … … 130 131 } 131 132 132 rc = task_wait( tid, &texit, &retval);133 rc = task_wait(&twait, &texit, &retval); 133 134 if (rc != EOK) { 134 135 printf("%s: Failed waiting for command (%s)\n", progname, -
uspace/app/getterm/getterm.c
rdf7f5cea r1c635d6 165 165 166 166 task_id_t id; 167 task_wait_t twait; 167 168 168 int rc = task_spawnv(&id, cmd, (const char * const *) args);169 int rc = task_spawnv(&id, &twait, cmd, (const char * const *) args); 169 170 if (rc != EOK) { 170 171 printf("%s: Error spawning %s (%s)\n", APP_NAME, cmd, … … 175 176 task_exit_t texit; 176 177 int retval; 177 rc = task_wait( id, &texit, &retval);178 rc = task_wait(&twait, &texit, &retval); 178 179 if (rc != EOK) { 179 180 printf("%s: Error waiting for %s (%s)\n", APP_NAME, cmd, -
uspace/app/init/init.c
rdf7f5cea r1c635d6 172 172 va_start(ap, path); 173 173 task_id_t id; 174 int rc = task_spawn(&id, path, cnt, ap); 174 task_wait_t wait; 175 int rc = task_spawn(&id, &wait, path, cnt, ap); 175 176 va_end(ap); 176 177 … … 189 190 task_exit_t texit; 190 191 int retval; 191 rc = task_wait( id, &texit, &retval);192 rc = task_wait(&wait, &texit, &retval); 192 193 if (rc != EOK) { 193 194 printf("%s: Error waiting for %s (%s)\n", NAME, path, … … 253 254 254 255 task_id_t id; 255 int rc = task_spawnl(&id, app, app, winreg, NULL); 256 task_wait_t wait; 257 int rc = task_spawnl(&id, &wait, app, app, winreg, NULL); 256 258 if (rc != EOK) { 257 259 printf("%s: Error spawning %s %s (%s)\n", NAME, app, … … 262 264 task_exit_t texit; 263 265 int retval; 264 rc = task_wait( id, &texit, &retval);266 rc = task_wait(&wait, &texit, &retval); 265 267 if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) { 266 268 printf("%s: Error retrieving retval from %s (%s)\n", NAME, … … 278 280 APP_GETTERM, svc, LOCFS_MOUNT_POINT, app); 279 281 280 int rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, svc,282 int rc = task_spawnl(NULL, NULL, APP_GETTERM, APP_GETTERM, svc, 281 283 LOCFS_MOUNT_POINT, "--msg", "--wait", "--", app, NULL); 282 284 if (rc != EOK) … … 287 289 APP_GETTERM, svc, LOCFS_MOUNT_POINT, app); 288 290 289 int rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, svc,291 int rc = task_spawnl(NULL, NULL, APP_GETTERM, APP_GETTERM, svc, 290 292 LOCFS_MOUNT_POINT, "--wait", "--", app, NULL); 291 293 if (rc != EOK) -
uspace/app/redir/redir.c
rdf7f5cea r1c635d6 75 75 } 76 76 77 static task_id_t spawn( int argc, char *argv[])77 static task_id_t spawn(task_wait_t *wait, int argc, char *argv[]) 78 78 { 79 79 const char **args; … … 93 93 args[argc] = NULL; 94 94 95 rc = task_spawnv(&id, argv[0], args);95 rc = task_spawnv(&id, wait, argv[0], args); 96 96 97 97 free(args); … … 152 152 */ 153 153 setvbuf(stdout, NULL, _IOLBF, BUFSIZ); 154 155 task_id_t id = spawn(argc - i, argv + i); 154 155 task_wait_t wait; 156 task_id_t id = spawn(&wait, argc - i, argv + i); 156 157 157 158 if (id != 0) { 158 159 task_exit_t texit; 159 160 int retval; 160 task_wait( id, &texit, &retval);161 task_wait(&wait, &texit, &retval); 161 162 162 163 return retval; -
uspace/app/sbi/src/os/helenos.c
rdf7f5cea r1c635d6 250 250 { 251 251 task_id_t tid; 252 task_wait_t twait; 252 253 task_exit_t texit; 253 254 int rc, retval; 254 255 255 rc = task_spawnv(&tid, cmd[0], (char const * const *) cmd);256 rc = task_spawnv(&tid, &twait, cmd[0], (char const * const *) cmd); 256 257 if (rc != EOK) { 257 258 printf("Error: Failed spawning '%s' (%s).\n", cmd[0], … … 261 262 262 263 /* XXX Handle exit status and return value. */ 263 rc = task_wait( tid, &texit, &retval);264 rc = task_wait(&twait, &texit, &retval); 264 265 (void) rc; 265 266 -
uspace/app/trace/trace.c
rdf7f5cea r1c635d6 876 876 printf("Waiting for task to exit.\n"); 877 877 878 rc = task_wait (task_id, &texit, &retval);878 rc = task_wait_task_id(task_id, &texit, &retval); 879 879 if (rc != EOK) { 880 880 printf("Failed waiting for task.\n"); -
uspace/app/viewer/viewer.c
rdf7f5cea r1c635d6 44 44 #include <surface.h> 45 45 #include <codec/tga.h> 46 #include <task.h> 46 47 47 48 #define NAME "viewer" -
uspace/app/vlaunch/vlaunch.c
rdf7f5cea r1c635d6 94 94 95 95 task_id_t id; 96 int rc = task_spawnl(&id, app, app, winreg, NULL); 96 task_wait_t wait; 97 int rc = task_spawnl(&id, &wait, app, app, winreg, NULL); 97 98 if (rc != EOK) { 98 99 printf("%s: Error spawning %s %s (%s)\n", NAME, app, … … 103 104 task_exit_t texit; 104 105 int retval; 105 rc = task_wait( id, &texit, &retval);106 rc = task_wait(&wait, &texit, &retval); 106 107 if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) { 107 108 printf("%s: Error retrieving retval from %s (%s)\n", NAME, -
uspace/lib/c/generic/task.c
rdf7f5cea r1c635d6 2 2 * Copyright (c) 2006 Jakub Jermar 3 3 * Copyright (c) 2008 Jiri Svoboda 4 * Copyright (c) 2014 Martin Sucha 4 5 * All rights reserved. 5 6 * … … 94 95 * 95 96 * @param id If not NULL, the ID of the task is stored here on success. 97 * @param wait If not NULL, setup waiting for task's return value and store 98 * the information necessary for waiting here on success. 96 99 * @param path Pathname of the binary to execute. 97 100 * @param argv Command-line arguments. … … 100 103 * 101 104 */ 102 int task_spawnv(task_id_t *id, const char *path, const char *const args[]) 105 int task_spawnv(task_id_t *id, task_wait_t *wait, const char *path, 106 const char *const args[]) 103 107 { 104 108 /* Send default files */ … … 125 129 files[3] = NULL; 126 130 127 return task_spawnvf(id, path, args, files);131 return task_spawnvf(id, wait, path, args, files); 128 132 } 129 133 … … 135 139 * 136 140 * @param id If not NULL, the ID of the task is stored here on success. 141 * @param wait If not NULL, setup waiting for task's return value and store 142 * the information necessary for waiting here on success. 137 143 * @param path Pathname of the binary to execute. 138 144 * @param argv Command-line arguments. … … 142 148 * 143 149 */ 144 int task_spawnvf(task_id_t *id, const char *path, const char *const args[],145 int *const files[])150 int task_spawnvf(task_id_t *id, task_wait_t *wait, const char *path, 151 const char *const args[], int *const files[]) 146 152 { 147 153 /* Connect to a program loader. */ … … 150 156 return EREFUSED; 151 157 158 bool wait_initialized = false; 159 152 160 /* Get task ID. */ 153 161 task_id_t task_id; … … 181 189 goto error; 182 190 191 /* Setup waiting for return value if needed */ 192 if (wait) { 193 rc = task_setup_wait(task_id, wait); 194 if (rc != EOK) 195 goto error; 196 wait_initialized = true; 197 } 198 183 199 /* Run it. */ 184 200 rc = loader_run(ldr); … … 193 209 194 210 error: 211 if (wait_initialized) 212 task_cancel_wait(wait); 213 195 214 /* Error exit */ 196 215 loader_abort(ldr); … … 204 223 * 205 224 * @param id If not NULL, the ID of the task is stored here on success. 225 * @param wait If not NULL, setup waiting for task's return value and store 226 * the information necessary for waiting here on success. 206 227 * @param path Pathname of the binary to execute. 207 228 * @param cnt Number of arguments. … … 211 232 * 212 233 */ 213 int task_spawn(task_id_t *task_id, const char *path, int cnt, va_list ap) 234 int task_spawn(task_id_t *task_id, task_wait_t *wait, const char *path, 235 int cnt, va_list ap) 214 236 { 215 237 /* Allocate argument list. */ … … 227 249 228 250 /* Spawn task. */ 229 int rc = task_spawnv(task_id, path, arglist);251 int rc = task_spawnv(task_id, wait, path, arglist); 230 252 231 253 /* Free argument list. */ … … 240 262 * 241 263 * @param id If not NULL, the ID of the task is stored here on success. 264 * @param wait If not NULL, setup waiting for task's return value and store 265 * the information necessary for waiting here on success. 242 266 * @param path Pathname of the binary to execute. 243 267 * @param ... Command-line arguments. … … 246 270 * 247 271 */ 248 int task_spawnl(task_id_t *task_id, const char *path, ...)272 int task_spawnl(task_id_t *task_id, task_wait_t *wait, const char *path, ...) 249 273 { 250 274 /* Count the number of arguments. */ … … 262 286 263 287 va_start(ap, path); 264 int rc = task_spawn(task_id, path, cnt, ap);288 int rc = task_spawn(task_id, wait, path, cnt, ap); 265 289 va_end(ap); 266 290 … … 268 292 } 269 293 270 int task_wait(task_id_t id, task_exit_t *texit, int *retval) 294 /** Setup waiting for a task. 295 * 296 * If the task finishes after this call succeeds, it is guaranteed that 297 * task_wait(wait, &texit, &retval) will return correct return value for 298 * the task. 299 * 300 * @param id ID of the task to setup waiting for. 301 * @param wait Information necessary for the later task_wait call is stored here. 302 * 303 * @return EOK on success, else error code. 304 */ 305 int task_setup_wait(task_id_t id, task_wait_t *wait) 306 { 307 async_exch_t *exch = async_exchange_begin(session_ns); 308 wait->aid = async_send_2(exch, NS_TASK_WAIT, LOWER32(id), UPPER32(id), 309 &wait->result); 310 async_exchange_end(exch); 311 312 return EOK; 313 } 314 315 /** Cancel waiting for a task. 316 * 317 * This can be called *instead of* task_wait if the caller is not interested 318 * in waiting for the task anymore. 319 * 320 * This function cannot be called if the task_wait was already called. 321 * 322 * @param wait task_wait_t previously initialized by task_setup_wait. 323 */ 324 void task_cancel_wait(task_wait_t *wait) { 325 async_forget(wait->aid); 326 } 327 328 /** Wait for a task to finish. 329 * 330 * This function returns correct values even if the task finished in 331 * between task_setup_wait and this task_wait call. 332 * 333 * This function cannot be called more than once with the same task_wait_t 334 * (it can be reused, but must be reinitialized with task_setup_wait first) 335 * 336 * @param wait task_wait_t previously initialized by task_setup_wait. 337 * @param texit Store type of task exit here. 338 * @param retval Store return value of the task here. 339 * 340 * @return EOK on success, else error code. 341 */ 342 int task_wait(task_wait_t *wait, task_exit_t *texit, int *retval) 271 343 { 272 344 assert(texit); 273 345 assert(retval); 274 275 async_exch_t *exch = async_exchange_begin(session_ns); 276 sysarg_t te, rv; 277 int rc = (int) async_req_2_2(exch, NS_TASK_WAIT, LOWER32(id), 278 UPPER32(id), &te, &rv); 279 async_exchange_end(exch); 280 281 *texit = te; 282 *retval = rv; 283 284 return rc; 346 347 sysarg_t rc; 348 async_wait_for(wait->aid, &rc); 349 350 if (rc == EOK) { 351 *texit = IPC_GET_ARG1(wait->result); 352 *retval = IPC_GET_ARG2(wait->result); 353 } 354 355 return rc; 356 } 357 358 /** Wait for a task to finish by its id. 359 * 360 * Note that this will fail with ENOENT if the task id is not registered in ns 361 * (e.g. if the task finished). If you are spawning a task and need to wait 362 * for its completion, use wait parameter of the task_spawn* functions instead 363 * to prevent a race where the task exits before you may have a chance to wait 364 * wait for it. 365 * 366 * @param id ID of the task to wait for. 367 * @param texit Store type of task exit here. 368 * @param retval Store return value of the task here. 369 * 370 * @return EOK on success, else error code. 371 */ 372 int task_wait_task_id(task_id_t id, task_exit_t *texit, int *retval) 373 { 374 task_wait_t wait; 375 int rc = task_setup_wait(id, &wait); 376 if (rc != EOK) 377 return rc; 378 379 return task_wait(&wait, texit, retval); 285 380 } 286 381 -
uspace/lib/c/include/async.h
rdf7f5cea r1c635d6 45 45 #include <atomic.h> 46 46 #include <stdbool.h> 47 #include < task.h>47 #include <abi/proc/task.h> 48 48 #include <abi/ddi/irq.h> 49 49 #include <abi/ipc/event.h> -
uspace/lib/c/include/ipc/common.h
rdf7f5cea r1c635d6 39 39 #include <abi/ipc/ipc.h> 40 40 #include <atomic.h> 41 #include < task.h>41 #include <abi/proc/task.h> 42 42 43 43 #define IPC_FLAG_BLOCKING 0x01 -
uspace/lib/c/include/ipc/ipc.h
rdf7f5cea r1c635d6 44 44 #include <abi/ipc/methods.h> 45 45 #include <abi/synch.h> 46 #include < task.h>46 #include <abi/proc/task.h> 47 47 48 48 typedef void (*ipc_async_callback_t)(void *, int, ipc_call_t *); -
uspace/lib/c/include/loader/loader.h
rdf7f5cea r1c635d6 37 37 #define LIBC_LOADER_H_ 38 38 39 #include < task.h>39 #include <abi/proc/task.h> 40 40 41 41 /** Forward declararion */ -
uspace/lib/c/include/task.h
rdf7f5cea r1c635d6 39 39 #include <abi/proc/task.h> 40 40 #include <stdarg.h> 41 #include <async.h> 42 #include <types/task.h> 41 43 42 typedef enum { 43 TASK_EXIT_NORMAL, 44 TASK_EXIT_UNEXPECTED 45 } task_exit_t; 44 typedef struct { 45 ipc_call_t result; 46 aid_t aid; 47 } task_wait_t; 48 49 struct _TASK; 50 typedef struct _TASK task_t; 46 51 47 52 extern task_id_t task_get_id(void); … … 49 54 extern int task_kill(task_id_t); 50 55 51 extern int task_spawnv(task_id_t *, const char *path, const char *const []); 52 extern int task_spawnvf(task_id_t *, const char *path, const char *const [], 53 int *const []); 54 extern int task_spawn(task_id_t *, const char *path, int, va_list ap); 55 extern int task_spawnl(task_id_t *, const char *path, ...); 56 extern int task_spawnv(task_id_t *, task_wait_t *, const char *path, 57 const char *const []); 58 extern int task_spawnvf(task_id_t *, task_wait_t *, const char *path, 59 const char *const [], int *const []); 60 extern int task_spawn(task_id_t *, task_wait_t *, const char *path, int, 61 va_list ap); 62 extern int task_spawnl(task_id_t *, task_wait_t *, const char *path, ...); 56 63 57 extern int task_wait(task_id_t id, task_exit_t *, int *); 64 extern int task_setup_wait(task_id_t, task_wait_t *); 65 extern void task_cancel_wait(task_wait_t *); 66 extern int task_wait(task_wait_t *, task_exit_t *, int *); 67 extern int task_wait_task_id(task_id_t, task_exit_t *, int *); 58 68 extern int task_retval(int); 59 69 -
uspace/lib/gui/terminal.c
rdf7f5cea r1c635d6 104 104 static void getterm(const char *svc, const char *app) 105 105 { 106 task_spawnl(NULL, APP_GETTERM, APP_GETTERM, svc, LOCFS_MOUNT_POINT,107 "--msg", "--wait", "--", app, NULL);106 task_spawnl(NULL, NULL, APP_GETTERM, APP_GETTERM, svc, 107 LOCFS_MOUNT_POINT, "--msg", "--wait", "--", app, NULL); 108 108 } 109 109 -
uspace/lib/hound/src/client.c
rdf7f5cea r1c635d6 42 42 #include <stdio.h> 43 43 #include <libarch/types.h> 44 #include <task.h> 44 45 45 46 #include "protocol.h" -
uspace/lib/posix/source/sys/wait.c
rdf7f5cea r1c635d6 100 100 int retval; 101 101 102 int rc = task_wait ((task_id_t) pid, &texit, &retval);102 int rc = task_wait_task_id((task_id_t) pid, &texit, &retval); 103 103 104 104 if (rc < 0) { -
uspace/srv/audio/hound/main.c
rdf7f5cea r1c635d6 43 43 #include <hound/server.h> 44 44 #include <hound/protocol.h> 45 #include <task.h> 45 46 46 47 #include "hound.h" -
uspace/srv/bd/sata_bd/sata_bd.c
rdf7f5cea r1c635d6 45 45 #include <loc.h> 46 46 #include <macros.h> 47 #include <task.h> 47 48 48 49 #include <ahci_iface.h> -
uspace/srv/devman/driver.c
rdf7f5cea r1c635d6 40 40 #include <str_error.h> 41 41 #include <stdio.h> 42 #include <task.h> 42 43 43 44 #include "dev.h" … … 290 291 log_msg(LOG_DEFAULT, LVL_DEBUG, "start_driver(drv=\"%s\")", drv->name); 291 292 292 rc = task_spawnl(NULL, drv->binary_path, drv->binary_path, NULL);293 rc = task_spawnl(NULL, NULL, drv->binary_path, drv->binary_path, NULL); 293 294 if (rc != EOK) { 294 295 log_msg(LOG_DEFAULT, LVL_ERROR, "Spawning driver `%s' (%s) failed: %s.", -
uspace/srv/hid/isdv4_tablet/main.c
rdf7f5cea r1c635d6 36 36 #include <ipc/mouseev.h> 37 37 #include <inttypes.h> 38 #include <task.h> 38 39 39 40 #include "isdv4.h" -
uspace/srv/hid/remcons/remcons.c
rdf7f5cea r1c635d6 226 226 227 227 task_id_t task; 228 int rc = task_spawnl(&task, APP_GETTERM, APP_GETTERM, user->service_name, 228 task_wait_t wait; 229 int rc = task_spawnl(&task, &wait, APP_GETTERM, APP_GETTERM, user->service_name, 229 230 "/loc", "--msg", "--", APP_SHELL, NULL); 230 231 if (rc != EOK) { … … 246 247 task_exit_t task_exit; 247 248 int task_retval; 248 task_wait( task, &task_exit, &task_retval);249 task_wait(&wait, &task_exit, &task_retval); 249 250 telnet_user_log(user, "%s terminated %s, exit code %d.", APP_GETTERM, 250 251 task_exit == TASK_EXIT_NORMAL ? "normally" : "unexpectedly", -
uspace/srv/hid/rfb/main.c
rdf7f5cea r1c635d6 35 35 #include <inttypes.h> 36 36 #include <io/log.h> 37 #include <task.h> 37 38 38 39 #include <abi/fb/visuals.h> -
uspace/srv/net/ethip/ethip.c
rdf7f5cea r1c635d6 44 44 #include <stdio.h> 45 45 #include <stdlib.h> 46 #include <task.h> 46 47 #include "arp.h" 47 48 #include "ethip.h" -
uspace/srv/net/inetsrv/inetsrv.c
rdf7f5cea r1c635d6 46 46 #include <stdlib.h> 47 47 #include <sys/types.h> 48 #include <task.h> 48 49 #include "addrobj.h" 49 50 #include "icmp.h" -
uspace/srv/net/loopip/loopip.c
rdf7f5cea r1c635d6 44 44 #include <stdio.h> 45 45 #include <stdlib.h> 46 #include <task.h> 46 47 47 48 #define NAME "loopip" -
uspace/srv/net/nconfsrv/nconfsrv.c
rdf7f5cea r1c635d6 48 48 #include <stdlib.h> 49 49 #include <sys/types.h> 50 #include <task.h> 50 51 #include "iplink.h" 51 52 #include "nconfsrv.h" -
uspace/srv/net/slip/slip.c
rdf7f5cea r1c635d6 43 43 #include <io/log.h> 44 44 #include <errno.h> 45 #include <task.h> 45 46 46 47 #define NAME "slip" -
uspace/srv/ns/ns.c
rdf7f5cea r1c635d6 66 66 while (true) { 67 67 process_pending_conn(); 68 process_pending_wait();69 68 70 69 ipc_call_t call; -
uspace/srv/ns/task.c
rdf7f5cea r1c635d6 40 40 #include <macros.h> 41 41 #include <malloc.h> 42 #include <types/task.h> 42 43 #include "task.h" 43 44 #include "ns.h" 44 45 45 46 /* TODO:47 *48 * As there is currently no convention that each task has to be waited49 * for, the NS can leak memory because of the zombie tasks.50 *51 */52 46 53 47 /** Task hash table item. */ … … 195 189 } 196 190 197 hash_table_remove(&task_hash_table, &pr->id);198 191 list_remove(&pr->link); 199 192 free(pr); … … 204 197 void wait_for_task(task_id_t id, ipc_call_t *call, ipc_callid_t callid) 205 198 { 206 sysarg_t retval;207 task_exit_t texit;208 bool remove = false;209 210 199 ht_link_t *link = hash_table_find(&task_hash_table, &id); 211 200 hashed_task_t *ht = (link != NULL) ? … … 218 207 } 219 208 220 if (!ht->finished) { 221 /* Add to pending list */ 222 pending_wait_t *pr = 223 (pending_wait_t *) malloc(sizeof(pending_wait_t)); 224 if (!pr) { 225 retval = ENOMEM; 226 goto out; 227 } 228 229 link_initialize(&pr->link); 230 pr->id = id; 231 pr->callid = callid; 232 list_append(&pr->link, &pending_wait); 209 if (ht->finished) { 210 task_exit_t texit = ht->have_rval ? TASK_EXIT_NORMAL : 211 TASK_EXIT_UNEXPECTED; 212 ipc_answer_2(callid, EOK, texit, ht->retval); 233 213 return; 234 214 } 235 215 236 remove = true; 237 retval = EOK; 238 239 out: 240 if (!(callid & IPC_CALLID_NOTIFICATION)) { 241 texit = ht->have_rval ? TASK_EXIT_NORMAL : TASK_EXIT_UNEXPECTED; 242 ipc_answer_2(callid, retval, texit, ht->retval); 243 } 244 if (remove) 245 hash_table_remove_item(&task_hash_table, link); 216 /* Add to pending list */ 217 pending_wait_t *pr = 218 (pending_wait_t *) malloc(sizeof(pending_wait_t)); 219 if (!pr) { 220 if (!(callid & IPC_CALLID_NOTIFICATION)) 221 ipc_answer_0(callid, ENOMEM); 222 return; 223 } 224 225 link_initialize(&pr->link); 226 pr->id = id; 227 pr->callid = callid; 228 list_append(&pr->link, &pending_wait); 246 229 } 247 230 … … 314 297 ht->retval = IPC_GET_ARG1(*call); 315 298 299 process_pending_wait(); 300 316 301 return EOK; 317 302 } … … 336 321 ht->finished = true; 337 322 323 process_pending_wait(); 324 hash_table_remove(&task_hash_table, &id); 325 338 326 return EOK; 339 327 } -
uspace/srv/ns/task.h
rdf7f5cea r1c635d6 35 35 36 36 #include <ipc/common.h> 37 #include < task.h>37 #include <abi/proc/task.h> 38 38 39 39 extern int task_init(void); -
uspace/srv/taskmon/taskmon.c
rdf7f5cea r1c635d6 82 82 83 83 printf(NAME ": Executing %s -c %s -t %s\n", fname, dump_fname, s_taskid); 84 rc = task_spawnl(NULL, fname, fname, "-c", dump_fname, "-t", s_taskid,84 rc = task_spawnl(NULL, NULL, fname, fname, "-c", dump_fname, "-t", s_taskid, 85 85 NULL); 86 86 } else { 87 87 printf(NAME ": Executing %s -t %s\n", fname, s_taskid); 88 rc = task_spawnl(NULL, fname, fname, "-t", s_taskid, NULL);88 rc = task_spawnl(NULL, NULL, fname, fname, "-t", s_taskid, NULL); 89 89 } 90 90
Note:
See TracChangeset
for help on using the changeset viewer.