Projects
Browse Source     Search     Timeline     Wiki

Changeset 23539

Show
Ignore:
Timestamp:
2008-03-06 11:00:19 (7 months ago)
Author:
zarzycki@…
Message:

Refinements on:
<rdar://problem/5783944> Deprecate bootstrap_create_service() in favor of bootstrap_check_in()

Location:
trunk/launchd/src
Files:
4 modified

Legend:

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

    r23538 r23539  
    141141        unsigned int            gen_num; 
    142142        mach_port_name_t        port; 
    143         unsigned int            isActive:1, reset:1, recv:1, hide:1, kUNCServer:1, 
    144                                         per_user_hack:1, debug_on_close:1, per_pid:1, special_port_num:24; 
     143        unsigned int            isActive:1, reset:1, recv:1, hide:1, 
     144                                kUNCServer:1, per_user_hack:1, debug_on_close:1, per_pid:1, 
     145                                delete_on_destruction:1, special_port_num:23; 
    145146        const char              name[0]; 
    146147}; 
     
    48894890{ 
    48904891        struct machservice *ms; 
     4892        job_t j; 
    48914893 
    48924894        LIST_FOREACH(ms, &port_hash[HASH_PORT(p)], port_hash_sle) { 
     
    48964898        } 
    48974899 
    4898         if (!ms) { 
     4900        if (!jobmgr_assumes(root_jobmgr, ms != NULL)) { 
    48994901                return false; 
    49004902        } 
    49014903 
     4904        j = ms->job; 
     4905 
     4906        job_log(j, LOG_DEBUG, "Receive right returned to us: %s", ms->name); 
     4907 
    49024908        ms->isActive = false; 
    49034909 
    4904         if (ms->reset) { 
    4905                 machservice_resetport(ms->job, ms); 
    4906         } 
    4907  
    4908         job_log(ms->job, LOG_DEBUG, "Receive right returned to us: %s", ms->name); 
    4909         job_dispatch(ms->job, false); 
     4910        if (ms->delete_on_destruction) { 
     4911                machservice_delete(j, ms, false); 
     4912        } else if (ms->reset) { 
     4913                machservice_resetport(j, ms); 
     4914        } 
     4915 
     4916        job_dispatch(j, false); 
    49104917 
    49114918        root_jobmgr = jobmgr_do_garbage_collection(root_jobmgr); 
     
    59025909 
    59035910kern_return_t 
    5904 job_mig_check_in(job_t j, name_t servicename, mach_port_t *serviceportp) 
    5905 { 
     5911job_mig_check_in2(job_t j, name_t servicename, mach_port_t *serviceportp, uint64_t flags) 
     5912{ 
     5913        bool per_pid_service = flags & BOOTSTRAP_PER_PID_SERVICE; 
     5914        struct ldcred *ldc = runtime_get_caller_creds(); 
    59065915        struct machservice *ms; 
    5907         struct ldcred *ldc = runtime_get_caller_creds(); 
    59085916        job_t jo; 
    59095917 
     
    59125920        } 
    59135921 
    5914         ms = jobmgr_lookup_service(j->mgr, servicename, true, 0); 
     5922        ms = jobmgr_lookup_service(j->mgr, servicename, false, per_pid_service ? ldc->pid : 0); 
    59155923 
    59165924        if (ms == NULL) { 
    59175925                *serviceportp = MACH_PORT_NULL; 
    5918                 ms = machservice_new(j, servicename, serviceportp, false); 
    5919  
    5920                 if (unlikely(ms == NULL)) { 
     5926 
     5927                if (unlikely((ms = machservice_new(j, servicename, serviceportp, per_pid_service)) == NULL)) { 
    59215928                        return BOOTSTRAP_NO_MEMORY; 
    59225929                } 
    59235930 
     5931                ms->delete_on_destruction = true; /* parity with bootstrap_register() */ 
    59245932                job_checkin(j); 
    59255933 
  • trunk/launchd/src/libbootstrap.c

    r23535 r23539  
    117117bootstrap_check_in(mach_port_t bp, name_t service_name, mach_port_t *sp) 
    118118{ 
    119         return vproc_mig_check_in(bp, service_name, sp); 
     119        return vproc_mig_check_in2(bp, service_name, sp, 0); 
     120} 
     121 
     122kern_return_t 
     123bootstrap_check_in2(mach_port_t bp, name_t service_name, mach_port_t *sp, uint64_t flags) 
     124{ 
     125        return vproc_mig_check_in2(bp, service_name, sp, flags); 
    120126} 
    121127 
  • trunk/launchd/src/libbootstrap_private.h

    r23489 r23539  
    3636kern_return_t bootstrap_look_up2(mach_port_t bp, name_t service_name, mach_port_t *sp, pid_t target_pid, uint64_t flags); 
    3737 
     38kern_return_t bootstrap_check_in2(mach_port_t bp, name_t service_name, mach_port_t *sp, uint64_t flags); 
     39 
    3840kern_return_t bootstrap_look_up_per_user(mach_port_t bp, name_t service_name, uid_t target_user, mach_port_t *sp); 
    3941 
  • trunk/launchd/src/protocol_job.defs

    r23535 r23539  
    5151                __flags         : uint64_t); 
    5252 
    53 routine check_in( 
    54                         __bs_port       : job_t; 
    55                         __service_name  : name_t; 
    56                 out     __service_port  : mach_port_move_receive_t); 
     53routine check_in2( 
     54                __bs_port       : job_t; 
     55                __service_name  : name_t; 
     56        out     __service_port  : mach_port_move_receive_t; 
     57                __flags         : uint64_t); 
    5758 
    5859routine register2(