Changeset 23124
- Timestamp:
- 03/03/07 15:09:49 (21 months ago)
- Location:
- trunk/launchd/src
- Files:
-
- 3 modified
-
launchd_core_logic.c (modified) (3 diffs)
-
launchd_runtime.c (modified) (1 diff)
-
launchd_runtime.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/launchd/src/launchd_core_logic.c
r23122 r23124 222 222 static void job_export_all2(jobmgr_t jm, launch_data_t where); 223 223 static void jobmgr_callback(void *obj, struct kevent *kev); 224 static pid_t jobmgr_fork(jobmgr_t jm);225 224 static void jobmgr_setup_env_from_other_jobs(jobmgr_t jm); 226 225 static struct machservice *jobmgr_lookup_service(jobmgr_t jm, const char *name, bool check_parent, pid_t target_pid); … … 1987 1986 time(&j->start_time); 1988 1987 1989 switch (c = jobmgr_fork(j->mgr)) {1988 switch (c = runtime_fork(j->mgr->jm_port)) { 1990 1989 case -1: 1991 1990 job_log_error(j, LOG_ERR, "fork() failed, will try again in one second"); … … 3089 3088 } 3090 3089 3091 pid_t3092 jobmgr_fork(jobmgr_t jm)3093 {3094 mach_port_t p = jm->jm_port;3095 pid_t r = -1;3096 int saved_errno;3097 3098 jobmgr_assumes(jm, launchd_mport_make_send(p) == KERN_SUCCESS);3099 jobmgr_assumes(jm, launchd_set_bport(p) == KERN_SUCCESS);3100 jobmgr_assumes(jm, launchd_mport_deallocate(p) == KERN_SUCCESS);3101 3102 r = fork();3103 3104 saved_errno = errno;3105 3106 if (r != 0) {3107 jobmgr_assumes(jm, launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS);3108 }3109 3110 errno = saved_errno;3111 return r;3112 }3113 3114 3090 void 3115 3091 machservice_watch(job_t j, struct machservice *ms) -
trunk/launchd/src/launchd_runtime.c
r23121 r23124 554 554 } 555 555 556 pid_t 557 runtime_fork(mach_port_t bsport) 558 { 559 pid_t r = -1; 560 int saved_errno; 561 562 launchd_assumes(launchd_mport_make_send(bsport) == KERN_SUCCESS); 563 launchd_assumes(launchd_set_bport(bsport) == KERN_SUCCESS); 564 launchd_assumes(launchd_mport_deallocate(bsport) == KERN_SUCCESS); 565 566 r = fork(); 567 568 saved_errno = errno; 569 570 if (r != 0) { 571 launchd_assumes(launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS); 572 } 573 574 errno = saved_errno; 575 576 return r; 577 } 578 579 556 580 void 557 581 runtime_set_timeout(timeout_callback to_cb, mach_msg_timeout_t to) -
trunk/launchd/src/launchd_runtime.h
r23091 r23124 72 72 int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata); 73 73 74 pid_t runtime_fork(mach_port_t bsport); 75 74 76 void runtime_openlog(const char *ident, int logopt, int facility); 75 77 void runtime_closelog(void);

