Projects
Browse Source     Search     Timeline     Wiki

Changeset 23124

Show
Ignore:
Timestamp:
03/03/07 15:09:49 (21 months ago)
Author:
zarzycki@…
Message:

Transform jobmgr_fork() to runtime_fork(). Someday, I'll create runtime_spawn() that wraps and extends posix_spawn().

Location:
trunk/launchd/src
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/launchd/src/launchd_core_logic.c

    r23122 r23124  
    222222static void job_export_all2(jobmgr_t jm, launch_data_t where); 
    223223static void jobmgr_callback(void *obj, struct kevent *kev); 
    224 static pid_t jobmgr_fork(jobmgr_t jm); 
    225224static void jobmgr_setup_env_from_other_jobs(jobmgr_t jm); 
    226225static struct machservice *jobmgr_lookup_service(jobmgr_t jm, const char *name, bool check_parent, pid_t target_pid); 
     
    19871986        time(&j->start_time); 
    19881987 
    1989         switch (c = jobmgr_fork(j->mgr)) { 
     1988        switch (c = runtime_fork(j->mgr->jm_port)) { 
    19901989        case -1: 
    19911990                job_log_error(j, LOG_ERR, "fork() failed, will try again in one second"); 
     
    30893088} 
    30903089 
    3091 pid_t 
    3092 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  
    31143090void 
    31153091machservice_watch(job_t j, struct machservice *ms) 
  • trunk/launchd/src/launchd_runtime.c

    r23121 r23124  
    554554} 
    555555 
     556pid_t 
     557runtime_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 
    556580void 
    557581runtime_set_timeout(timeout_callback to_cb, mach_msg_timeout_t to) 
  • trunk/launchd/src/launchd_runtime.h

    r23091 r23124  
    7272int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata); 
    7373 
     74pid_t runtime_fork(mach_port_t bsport); 
     75 
    7476void runtime_openlog(const char *ident, int logopt, int facility); 
    7577void runtime_closelog(void);