[launchd-changes] [22840] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Wed Sep 6 10:22:46 PDT 2006
Revision: 22840
Author: zarzycki at apple.com
Date: 2006-09-06 10:22:43 -0700 (Wed, 06 Sep 2006)
Log Message:
-----------
s,job_,vproc_,g
Modified Paths:
--------------
trunk/launchd/src/launchctl.c
trunk/launchd/src/launchd.c
trunk/launchd/src/launchd.h
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/launchd_core_logic.h
trunk/launchd/src/launchd_mach_ipc.c
trunk/launchd/src/launchd_unix_ipc.c
Modified: trunk/launchd/src/launchctl.c
===================================================================
--- trunk/launchd/src/launchctl.c 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchctl.c 2006-09-06 17:22:43 UTC (rev 22840)
@@ -100,7 +100,7 @@
static int _fd(int);
static int demux_cmd(int argc, char *const argv[]);
static launch_data_t do_rendezvous_magic(const struct addrinfo *res, const char *serv);
-static void submit_job_pass(launch_data_t jobs);
+static void submit_vproc_pass(launch_data_t jobs);
static void submit_mach_jobs(launch_data_t jobs);
static void let_go_of_mach_jobs(launch_data_t jobs);
static void do_mgroup_join(int fd, int family, int socktype, int protocol, const char *mgroup);
@@ -484,7 +484,7 @@
{
char ourhostname[1024];
launch_data_t tmpd, tmps, thejob, tmpa;
- bool job_disabled = false;
+ bool vproc_disabled = false;
size_t i, c;
gethostname(ourhostname, sizeof(ourhostname));
@@ -560,12 +560,12 @@
}
if ((tmpd = launch_data_dict_lookup(thejob, LAUNCH_JOBKEY_DISABLED)))
- job_disabled = launch_data_get_bool(tmpd);
+ vproc_disabled = launch_data_get_bool(tmpd);
if (lus->forceload)
- job_disabled = false;
+ vproc_disabled = false;
- if (job_disabled && lus->load)
+ if (vproc_disabled && lus->load)
goto out_bad;
if (delay_to_second_pass(thejob))
@@ -1395,10 +1395,10 @@
if (lus.load) {
distill_jobs(lus.pass1);
submit_mach_jobs(lus.pass0);
- submit_job_pass(lus.pass1);
+ submit_vproc_pass(lus.pass1);
let_go_of_mach_jobs(lus.pass0);
distill_jobs(lus.pass2);
- submit_job_pass(lus.pass2);
+ submit_vproc_pass(lus.pass2);
} else {
for (i = 0; i < launch_data_array_get_count(lus.pass1); i++)
unloadjob(launch_data_array_get_index(lus.pass1, i));
@@ -1466,7 +1466,7 @@
}
void
-submit_job_pass(launch_data_t jobs)
+submit_vproc_pass(launch_data_t jobs)
{
launch_data_t msg, resp;
size_t i;
Modified: trunk/launchd/src/launchd.c
===================================================================
--- trunk/launchd/src/launchd.c 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd.c 2006-09-06 17:22:43 UTC (rev 22840)
@@ -282,11 +282,11 @@
if (h)
sprintf(ldconf, "%s/%s", h, LAUNCHD_CONF);
- rlcj = job_new(root_job, READCONF_LABEL, LAUNCHCTL_PATH, NULL, ldconf, MACH_PORT_NULL);
+ rlcj = vproc_new(root_job, READCONF_LABEL, LAUNCHCTL_PATH, NULL, ldconf, MACH_PORT_NULL);
launchd_assert(rlcj != NULL);
if (argv[0])
- fbj = job_new(root_job, FIRSTBORN_LABEL, NULL, (const char *const *)argv, NULL, MACH_PORT_NULL);
+ fbj = vproc_new(root_job, FIRSTBORN_LABEL, NULL, (const char *const *)argv, NULL, MACH_PORT_NULL);
if (NULL == getenv("PATH"))
setenv("PATH", _PATH_STDPATH, 1);
@@ -322,10 +322,10 @@
}
if (stat(ldconf, &sb) == 0)
- job_dispatch(rlcj, true);
+ vproc_dispatch(rlcj, true);
if (fbj)
- job_dispatch(fbj, true);
+ vproc_dispatch(fbj, true);
pthread_attr_t attr;
pthread_attr_init(&attr);
@@ -337,7 +337,7 @@
mach_msg_return_t msgr;
mach_msg_size_t mxmsgsz = sizeof(union MaxRequestSize) + MAX_TRAILER_SIZE;
- if (getpid() == 1 && !job_active(rlcj))
+ if (getpid() == 1 && !vproc_active(rlcj))
init_pre_kevent();
launchd_assert(setjmp(doom_doom_doom) == 0);
@@ -401,7 +401,7 @@
}
if (getpid() == 1) {
- if (rlcj && job_active(rlcj))
+ if (rlcj && vproc_active(rlcj))
goto out;
init_pre_kevent();
}
@@ -493,7 +493,7 @@
rlcj = NULL;
- job_remove_all_inactive(root_job);
+ vproc_remove_all_inactive(root_job);
if (getpid() == 1)
catatonia();
@@ -528,7 +528,7 @@
switch (kev->ident) {
case SIGHUP:
if (rlcj)
- job_dispatch(rlcj, true);
+ vproc_dispatch(rlcj, true);
break;
case SIGTERM:
launchd_shutdown();
@@ -626,7 +626,7 @@
}
void
-batch_job_enable(bool e, struct conncb *c)
+batch_vproc_enable(bool e, struct conncb *c)
{
if (e && c->disabled_batch) {
batch_disabler_count--;
@@ -701,7 +701,7 @@
if (new_networking_state != network_up) {
network_up = new_networking_state;
- job_dispatch_all_other_semaphores(root_job, NULL);
+ vproc_dispatch_all_other_semaphores(root_job, NULL);
}
}
@@ -760,7 +760,7 @@
launchd_internal_demux(mach_msg_header_t *Request, mach_msg_header_t *Reply)
{
if (gc_this_job) {
- job_remove(gc_this_job);
+ vproc_remove(gc_this_job);
gc_this_job = NULL;
}
Modified: trunk/launchd/src/launchd.h
===================================================================
--- trunk/launchd/src/launchd.h 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd.h 2006-09-06 17:22:43 UTC (rev 22840)
@@ -57,7 +57,7 @@
bool init_check_pid(pid_t);
int kevent_mod(uintptr_t ident, short filter, u_short flags, u_int fflags, intptr_t data, void *udata);
-void batch_job_enable(bool e, struct conncb *c);
+void batch_vproc_enable(bool e, struct conncb *c);
launch_data_t launchd_setstdio(int d, launch_data_t o);
void launchd_SessionCreate(void);
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd_core_logic.c 2006-09-06 17:22:43 UTC (rev 22840)
@@ -173,7 +173,7 @@
struct vproc_s {
- kq_callback kqjob_callback;
+ kq_callback kqvproc_callback;
SLIST_ENTRY(vproc_s) sle;
SLIST_HEAD(, socketgroup) sockets;
SLIST_HEAD(, watchpath) vnodes;
@@ -215,29 +215,29 @@
char label[0];
};
-static vproc_t job_import2(launch_data_t pload);
-static void job_import_keys(launch_data_t obj, const char *key, void *context);
-static void job_import_bool(vproc_t j, const char *key, bool value);
-static void job_import_string(vproc_t j, const char *key, const char *value);
-static void job_import_integer(vproc_t j, const char *key, long long value);
-static void job_import_dictionary(vproc_t j, const char *key, launch_data_t value);
-static void job_import_array(vproc_t j, const char *key, launch_data_t value);
-static void job_watch(vproc_t j);
-static void job_ignore(vproc_t j);
-static void job_reap(vproc_t j);
-static bool job_useless(vproc_t j);
-static bool job_keepalive(vproc_t j);
-static void job_start(vproc_t j);
-static void job_start_child(vproc_t j, int execfd) __attribute__((noreturn));
-static void job_setup_attributes(vproc_t j);
-static bool job_setup_machport(vproc_t j);
-static void job_postfork_become_user(vproc_t j);
-static void job_callback(void *obj, struct kevent *kev);
-static pid_t job_fork(vproc_t j);
-static size_t job_prep_log_preface(vproc_t j, char *buf);
-static void job_setup_env_from_other_jobs(vproc_t j);
-static void job_export_all2(vproc_t j, launch_data_t where);
-static launch_data_t job_export2(vproc_t j, bool subjobs);
+static vproc_t vproc_import2(launch_data_t pload);
+static void vproc_import_keys(launch_data_t obj, const char *key, void *context);
+static void vproc_import_bool(vproc_t j, const char *key, bool value);
+static void vproc_import_string(vproc_t j, const char *key, const char *value);
+static void vproc_import_integer(vproc_t j, const char *key, long long value);
+static void vproc_import_dictionary(vproc_t j, const char *key, launch_data_t value);
+static void vproc_import_array(vproc_t j, const char *key, launch_data_t value);
+static void vproc_watch(vproc_t j);
+static void vproc_ignore(vproc_t j);
+static void vproc_reap(vproc_t j);
+static bool vproc_useless(vproc_t j);
+static bool vproc_keepalive(vproc_t j);
+static void vproc_start(vproc_t j);
+static void vproc_start_child(vproc_t j, int execfd) __attribute__((noreturn));
+static void vproc_setup_attributes(vproc_t j);
+static bool vproc_setup_machport(vproc_t j);
+static void vproc_postfork_become_user(vproc_t j);
+static void vproc_callback(void *obj, struct kevent *kev);
+static pid_t vproc_fork(vproc_t j);
+static size_t vproc_prep_log_preface(vproc_t j, char *buf);
+static void vproc_setup_env_from_other_jobs(vproc_t j);
+static void vproc_export_all2(vproc_t j, launch_data_t where);
+static launch_data_t vproc_export2(vproc_t j, bool subjobs);
static const struct {
@@ -279,7 +279,7 @@
}
void
-job_ignore(vproc_t j)
+vproc_ignore(vproc_t j)
{
struct socketgroup *sg;
struct machservice *ms;
@@ -292,11 +292,11 @@
watchpath_ignore(j, wp);
SLIST_FOREACH(ms, &j->machservices, sle)
- job_assumes(j, launchd_mport_request_callback(ms->port, NULL, false) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_request_callback(ms->port, NULL, false) == KERN_SUCCESS);
}
void
-job_watch(vproc_t j)
+vproc_watch(vproc_t j)
{
struct socketgroup *sg;
struct machservice *ms;
@@ -309,24 +309,24 @@
watchpath_watch(j, wp);
SLIST_FOREACH(ms, &j->machservices, sle)
- job_assumes(j, launchd_mport_request_callback(ms->port, j, false) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_request_callback(ms->port, j, false) == KERN_SUCCESS);
}
void
-job_stop(vproc_t j)
+vproc_stop(vproc_t j)
{
if (j->p)
kill(j->p, SIGTERM);
}
launch_data_t
-job_export(vproc_t j)
+vproc_export(vproc_t j)
{
- return job_export2(j, true);
+ return vproc_export2(j, true);
}
launch_data_t
-job_export2(vproc_t j, bool subjobs)
+vproc_export2(vproc_t j, bool subjobs)
{
launch_data_t tmp, tmp2, tmp3, r = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
@@ -407,7 +407,7 @@
size_t i = 0;
SLIST_FOREACH(ji, &j->jobs, sle) {
- tmp2 = job_export2(ji, true);
+ tmp2 = vproc_export2(ji, true);
launch_data_array_set_index(tmp, tmp2, i);
i++;
}
@@ -419,23 +419,23 @@
}
void
-job_remove_all_inactive(vproc_t j)
+vproc_remove_all_inactive(vproc_t j)
{
vproc_t ji, jn;
SLIST_FOREACH_SAFE(ji, &j->jobs, sle, jn) {
- job_remove_all_inactive(ji);
+ vproc_remove_all_inactive(ji);
}
- if (!job_active(j)) {
- job_remove(j);
+ if (!vproc_active(j)) {
+ vproc_remove(j);
} else if (getpid() != 1) {
- job_stop(j);
+ vproc_stop(j);
}
}
void
-job_remove(vproc_t j)
+vproc_remove(vproc_t j)
{
vproc_t ji;
struct calendarinterval *ci;
@@ -446,15 +446,15 @@
struct machservice *ms;
struct semaphoreitem *si;
- job_log(j, LOG_DEBUG, "Removed");
+ vproc_log(j, LOG_DEBUG, "Removed");
if (j->p) {
if (kevent_mod(j->p, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, &kqsimple_zombie_reaper) == -1) {
- job_reap(j);
+ vproc_reap(j);
} else {
/* we've attached the simple zombie reaper, we're going to delete the job before it is dead */
total_children--;
- job_stop(j);
+ vproc_stop(j);
}
}
@@ -462,18 +462,18 @@
SLIST_REMOVE(&j->parent->jobs, j, vproc_s, sle);
if (j->execfd)
- job_assumes(j, close(j->execfd) == 0);
+ vproc_assumes(j, close(j->execfd) == 0);
if (j->bs_port) {
if (j->transfer_bstrap) {
- job_assumes(j, launchd_mport_deallocate(j->bs_port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_deallocate(j->bs_port) == KERN_SUCCESS);
} else {
- job_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
}
}
if (j->req_port)
- job_assumes(j, launchd_mport_deallocate(j->req_port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_deallocate(j->req_port) == KERN_SUCCESS);
#if 0
if (j->wait_reply_port) {
@@ -481,7 +481,7 @@
#endif
while ((ji = SLIST_FIRST(&j->jobs)))
- job_remove(ji);
+ vproc_remove(ji);
while ((sg = SLIST_FIRST(&j->sockets)))
socketgroup_delete(j, sg);
@@ -569,39 +569,39 @@
}
bool
-job_setup_machport(vproc_t j)
+vproc_setup_machport(vproc_t j)
{
- if (!job_assumes(j, launchd_mport_create_recv(&j->bs_port) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_create_recv(&j->bs_port) == KERN_SUCCESS))
goto out_bad;
- if (!job_assumes(j, launchd_mport_request_callback(j->bs_port, j, true) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_request_callback(j->bs_port, j, true) == KERN_SUCCESS))
goto out_bad2;
return true;
out_bad2:
- job_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
out_bad:
return false;
}
vproc_t
-job_new_via_mach_init(vproc_t jbs, const char *cmd, uid_t uid, bool ond)
+vproc_new_via_mach_init(vproc_t jbs, const char *cmd, uid_t uid, bool ond)
{
const char **argv = (const char **)mach_cmd2argv(cmd);
vproc_t j = NULL;
char buf[1000];
- if (!job_assumes(jbs, argv != NULL))
+ if (!vproc_assumes(jbs, argv != NULL))
goto out_bad;
/* preflight the string so we know how big it is */
sprintf(buf, "100000.%s", basename((char *)argv[0]));
- j = job_new(jbs, buf, NULL, argv, NULL, MACH_PORT_NULL);
+ j = vproc_new(jbs, buf, NULL, argv, NULL, MACH_PORT_NULL);
free(argv);
- if (!job_assumes(jbs, j != NULL))
+ if (!vproc_assumes(jbs, j != NULL))
goto out_bad;
j->mach_uid = uid;
@@ -609,28 +609,28 @@
j->legacy_mach_job = true;
j->priv_port_has_senders = true; /* the IPC that called us will make-send on this port */
- if (!job_setup_machport(j))
+ if (!vproc_setup_machport(j))
goto out_bad;
- if (!job_assumes(j, launchd_mport_notify_req(j->bs_port, MACH_NOTIFY_NO_SENDERS) == KERN_SUCCESS)) {
- job_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
+ if (!vproc_assumes(j, launchd_mport_notify_req(j->bs_port, MACH_NOTIFY_NO_SENDERS) == KERN_SUCCESS)) {
+ vproc_assumes(j, launchd_mport_close_recv(j->bs_port) == KERN_SUCCESS);
goto out_bad;
}
sprintf(j->label, "%d.%s", MACH_PORT_INDEX(j->bs_port), basename(j->argv[0]));
- job_log(j, LOG_INFO, "New%s server in bootstrap: %x", ond ? " on-demand" : "", jbs->bs_port);
+ vproc_log(j, LOG_INFO, "New%s server in bootstrap: %x", ond ? " on-demand" : "", jbs->bs_port);
return j;
out_bad:
if (j)
- job_remove(j);
+ vproc_remove(j);
return NULL;
}
kern_return_t
-job_handle_mpm_wait(vproc_t j, mach_port_t srp, int *waitstatus)
+vproc_handle_mpm_wait(vproc_t j, mach_port_t srp, int *waitstatus)
{
if (j->p) {
j->wait_reply_port = srp;
@@ -643,16 +643,16 @@
}
vproc_t
-job_new_spawn(const char *label, const char *path, const char *workingdir, const char *const *argv, const char *const *env, mode_t *u_mask, bool w4d, bool fppc)
+vproc_new_spawn(const char *label, const char *path, const char *workingdir, const char *const *argv, const char *const *env, mode_t *u_mask, bool w4d, bool fppc)
{
vproc_t jr;
- if ((jr = job_find(root_job, label)) != NULL) {
+ if ((jr = vproc_find(root_job, label)) != NULL) {
errno = EEXIST;
return NULL;
}
- jr = job_new(root_job, label, path, argv, NULL, MACH_PORT_NULL);
+ jr = vproc_new(root_job, label, path, argv, NULL, MACH_PORT_NULL);
if (!jr)
return NULL;
@@ -661,8 +661,8 @@
jr->stall_before_exec = w4d;
jr->force_ppc = fppc;
- if (!job_setup_machport(jr)) {
- job_remove(jr);
+ if (!vproc_setup_machport(jr)) {
+ vproc_remove(jr);
return NULL;
}
@@ -677,7 +677,7 @@
if (env) for (; *env; env++) {
char newkey[strlen(*env) + 1], *eqoff = strchr(*env, '=');
if (!eqoff) {
- job_log(jr, LOG_WARNING, "Environmental variable missing '=' separator: %s", *env);
+ vproc_log(jr, LOG_WARNING, "Environmental variable missing '=' separator: %s", *env);
continue;
}
strcpy(newkey, *env);
@@ -685,13 +685,13 @@
envitem_new(jr, newkey, eqoff + 1, false);
}
- job_dispatch(jr, true);
+ vproc_dispatch(jr, true);
return jr;
}
vproc_t
-job_new(vproc_t p, const char *label, const char *prog, const char *const *argv, const char *stdinpath, mach_port_t reqport)
+vproc_new(vproc_t p, const char *label, const char *prog, const char *const *argv, const char *stdinpath, mach_port_t reqport)
{
const char *const *argv_tmp = argv;
char *co;
@@ -705,31 +705,31 @@
j = calloc(1, sizeof(struct vproc_s) + strlen(label) + 1);
- if (!job_assumes(p, j != NULL))
+ if (!vproc_assumes(p, j != NULL))
goto out_bad;
strcpy(j->label, label);
- j->kqjob_callback = job_callback;
- j->parent = p ? job_get_bs(p) : NULL;
+ j->kqvproc_callback = vproc_callback;
+ j->parent = p ? vproc_get_bs(p) : NULL;
j->ondemand = true;
j->checkedin = true;
j->firstborn = (strcmp(label, FIRSTBORN_LABEL) == 0);
if (reqport != MACH_PORT_NULL) {
j->req_port = reqport;
- if (!job_assumes(j, launchd_mport_notify_req(reqport, MACH_NOTIFY_DEAD_NAME) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_notify_req(reqport, MACH_NOTIFY_DEAD_NAME) == KERN_SUCCESS))
goto out_bad;
}
if (prog) {
j->prog = strdup(prog);
- if (!job_assumes(j, j->prog != NULL))
+ if (!vproc_assumes(j, j->prog != NULL))
goto out_bad;
}
if (stdinpath) {
j->stdinpath = strdup(stdinpath);
- if (!job_assumes(j, j->stdinpath != NULL))
+ if (!vproc_assumes(j, j->stdinpath != NULL))
goto out_bad;
}
@@ -742,7 +742,7 @@
j->argv = malloc((j->argc + 1) * sizeof(char *) + cc);
- if (!job_assumes(j, j->argv != NULL))
+ if (!vproc_assumes(j, j->argv != NULL))
goto out_bad;
co = ((char *)j->argv) + ((j->argc + 1) * sizeof(char *));
@@ -757,7 +757,7 @@
if (j->parent) {
SLIST_INSERT_HEAD(&j->parent->jobs, j, sle);
- job_log(j->parent, LOG_DEBUG, "Conceived");
+ vproc_log(j->parent, LOG_DEBUG, "Conceived");
}
return j;
@@ -774,20 +774,20 @@
}
vproc_t
-job_import(launch_data_t pload)
+vproc_import(launch_data_t pload)
{
- vproc_t j = job_import2(pload);
+ vproc_t j = vproc_import2(pload);
if (j == NULL)
return NULL;
- job_dispatch(j, false);
+ vproc_dispatch(j, false);
return j;
}
launch_data_t
-job_import_bulk(launch_data_t pload)
+vproc_import_bulk(launch_data_t pload)
{
launch_data_t resp = launch_data_alloc(LAUNCH_DATA_ARRAY);
vproc_t *ja;
@@ -796,7 +796,7 @@
ja = alloca(c * sizeof(vproc_t ));
for (i = 0; i < c; i++) {
- if ((ja[i] = job_import2(launch_data_array_get_index(pload, i))))
+ if ((ja[i] = vproc_import2(launch_data_array_get_index(pload, i))))
errno = 0;
launch_data_array_set_index(resp, launch_data_new_errno(errno), i);
}
@@ -804,14 +804,14 @@
for (i = 0; i < c; i++) {
if (ja[i] == NULL)
continue;
- job_dispatch(ja[i], false);
+ vproc_dispatch(ja[i], false);
}
return resp;
}
void
-job_import_bool(vproc_t j, const char *key, bool value)
+vproc_import_bool(vproc_t j, const char *key, bool value)
{
switch (key[0]) {
case 'f':
@@ -848,7 +848,7 @@
case 'I':
if (strcasecmp(key, LAUNCH_JOBKEY_INITGROUPS) == 0) {
if (getuid() == 0) {
- job_log(j, LOG_WARNING, "Ignored this key: %s", key);
+ vproc_log(j, LOG_WARNING, "Ignored this key: %s", key);
return;
}
j->no_init_groups = !value;
@@ -875,7 +875,7 @@
}
void
-job_import_string(vproc_t j, const char *key, const char *value)
+vproc_import_string(vproc_t j, const char *key, const char *value)
{
char **where2put = NULL;
@@ -894,7 +894,7 @@
case 'R':
if (strcasecmp(key, LAUNCH_JOBKEY_ROOTDIRECTORY) == 0) {
if (getuid() != 0) {
- job_log(j, LOG_WARNING, "Ignored this key: %s", key);
+ vproc_log(j, LOG_WARNING, "Ignored this key: %s", key);
return;
}
where2put = &j->rootdir;
@@ -909,7 +909,7 @@
case 'U':
if (strcasecmp(key, LAUNCH_JOBKEY_USERNAME) == 0) {
if (getuid() != 0 || strcmp(value, "root") == 0) {
- job_log(j, LOG_WARNING, "Ignored this key: %s", key);
+ vproc_log(j, LOG_WARNING, "Ignored this key: %s", key);
return;
}
where2put = &j->username;
@@ -919,7 +919,7 @@
case 'G':
if (strcasecmp(key, LAUNCH_JOBKEY_GROUPNAME) == 0) {
if (getuid() != 0 || strcmp(value, "wheel") == 0) {
- job_log(j, LOG_WARNING, "Ignored this key: %s", key);
+ vproc_log(j, LOG_WARNING, "Ignored this key: %s", key);
return;
}
where2put = &j->groupname;
@@ -938,14 +938,14 @@
}
if (where2put) {
- job_assumes(j, (*where2put = strdup(value)) != NULL);
+ vproc_assumes(j, (*where2put = strdup(value)) != NULL);
} else {
- job_log(j, LOG_WARNING, "Unknown key: %s", key);
+ vproc_log(j, LOG_WARNING, "Unknown key: %s", key);
}
}
void
-job_import_integer(vproc_t j, const char *key, long long value)
+vproc_import_integer(vproc_t j, const char *key, long long value)
{
switch (key[0]) {
case 'n':
@@ -957,7 +957,7 @@
case 'T':
if (strcasecmp(key, LAUNCH_JOBKEY_TIMEOUT) == 0) {
if (value <= 0)
- job_log(j, LOG_WARNING, "Timeout less than or equal to zero. Ignoring.");
+ vproc_log(j, LOG_WARNING, "Timeout less than or equal to zero. Ignoring.");
else
j->timeout = value;
}
@@ -973,11 +973,11 @@
case 'S':
if (strcasecmp(key, LAUNCH_JOBKEY_STARTINTERVAL) == 0) {
if (value <= 0)
- job_log(j, LOG_WARNING, "StartInterval is not greater than zero, ignoring");
+ vproc_log(j, LOG_WARNING, "StartInterval is not greater than zero, ignoring");
else
j->start_interval = value;
if (-1 == kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, value, j))
- job_log_error(j, LOG_ERR, "adding kevent timer");
+ vproc_log_error(j, LOG_ERR, "adding kevent timer");
}
break;
default:
@@ -986,7 +986,7 @@
}
void
-job_import_dictionary(vproc_t j, const char *key, launch_data_t value)
+vproc_import_dictionary(vproc_t j, const char *key, launch_data_t value)
{
launch_data_t tmp;
@@ -1040,7 +1040,7 @@
if (strcasecmp(key, LAUNCH_JOBKEY_MACHSERVICES) == 0) {
launch_data_dict_iterate(value, machservice_setup, j);
if (!SLIST_EMPTY(&j->machservices))
- job_setup_machport(j);
+ vproc_setup_machport(j);
}
break;
default:
@@ -1049,7 +1049,7 @@
}
void
-job_import_array(vproc_t j, const char *key, launch_data_t value)
+vproc_import_array(vproc_t j, const char *key, launch_data_t value)
{
bool is_q_dir = false;
bool is_wp = false;
@@ -1095,7 +1095,7 @@
}
void
-job_import_keys(launch_data_t obj, const char *key, void *context)
+vproc_import_keys(launch_data_t obj, const char *key, void *context)
{
vproc_t j = context;
launch_data_type_t kind;
@@ -1107,28 +1107,28 @@
switch (kind) {
case LAUNCH_DATA_BOOL:
- job_import_bool(j, key, launch_data_get_bool(obj));
+ vproc_import_bool(j, key, launch_data_get_bool(obj));
break;
case LAUNCH_DATA_STRING:
- job_import_string(j, key, launch_data_get_string(obj));
+ vproc_import_string(j, key, launch_data_get_string(obj));
break;
case LAUNCH_DATA_INTEGER:
- job_import_integer(j, key, launch_data_get_integer(obj));
+ vproc_import_integer(j, key, launch_data_get_integer(obj));
break;
case LAUNCH_DATA_DICTIONARY:
- job_import_dictionary(j, key, obj);
+ vproc_import_dictionary(j, key, obj);
break;
case LAUNCH_DATA_ARRAY:
- job_import_array(j, key, obj);
+ vproc_import_array(j, key, obj);
break;
default:
- job_log(j, LOG_WARNING, "Unknown value type '%d' for key: %s", kind, key);
+ vproc_log(j, LOG_WARNING, "Unknown value type '%d' for key: %s", kind, key);
break;
}
}
vproc_t
-job_import2(launch_data_t pload)
+vproc_import2(launch_data_t pload)
{
launch_data_t tmp, ldpa;
const char *label = NULL, *prog = NULL;
@@ -1154,7 +1154,7 @@
if (label == NULL) {
errno = EINVAL;
return NULL;
- } else if ((j = job_find(root_job, label)) != NULL) {
+ } else if ((j = vproc_find(root_job, label)) != NULL) {
errno = EEXIST;
return NULL;
} else if (label[0] == '\0' || (strncasecmp(label, "", strlen("com.apple.launchd")) == 0) ||
@@ -1175,14 +1175,14 @@
argv[i] = NULL;
}
- if ((j = job_new(root_job, label, prog, argv, NULL, MACH_PORT_NULL)))
- launch_data_dict_iterate(pload, job_import_keys, j);
+ if ((j = vproc_new(root_job, label, prog, argv, NULL, MACH_PORT_NULL)))
+ launch_data_dict_iterate(pload, vproc_import_keys, j);
return j;
}
vproc_t
-job_find(vproc_t j, const char *label)
+vproc_find(vproc_t j, const char *label)
{
vproc_t jr, ji;
@@ -1193,7 +1193,7 @@
return j;
SLIST_FOREACH(ji, &j->jobs, sle) {
- if ((jr = job_find(ji, label)))
+ if ((jr = vproc_find(ji, label)))
return jr;
}
@@ -1202,7 +1202,7 @@
}
vproc_t
-job_find_by_pid(vproc_t j, pid_t p)
+vproc_find_by_pid(vproc_t j, pid_t p)
{
vproc_t jr, ji;
@@ -1210,7 +1210,7 @@
return j;
SLIST_FOREACH(ji, &j->jobs, sle) {
- if ((jr = job_find_by_pid(ji, p)))
+ if ((jr = vproc_find_by_pid(ji, p)))
return jr;
}
@@ -1219,48 +1219,48 @@
}
void
-job_export_all2(vproc_t j, launch_data_t where)
+vproc_export_all2(vproc_t j, launch_data_t where)
{
launch_data_t tmp;
vproc_t ji;
- if (job_assumes(j, (tmp = job_export2(j, false)) != NULL))
+ if (vproc_assumes(j, (tmp = vproc_export2(j, false)) != NULL))
launch_data_dict_insert(where, tmp, j->label);
SLIST_FOREACH(ji, &j->jobs, sle)
- job_export_all2(ji, where);
+ vproc_export_all2(ji, where);
}
launch_data_t
-job_export_all(void)
+vproc_export_all(void)
{
launch_data_t resp = launch_data_alloc(LAUNCH_DATA_DICTIONARY);
- job_export_all2(root_job, resp);
+ vproc_export_all2(root_job, resp);
return resp;
}
void
-job_reap(vproc_t j)
+vproc_reap(vproc_t j)
{
struct rusage ru;
int status;
- job_log(j, LOG_DEBUG, "Reaping");
+ vproc_log(j, LOG_DEBUG, "Reaping");
if (j->execfd) {
- job_assumes(j, close(j->execfd) == 0);
+ vproc_assumes(j, close(j->execfd) == 0);
j->execfd = 0;
}
- if (!job_assumes(j, wait4(j->p, &status, 0, &ru) != -1)) {
+ if (!vproc_assumes(j, wait4(j->p, &status, 0, &ru) != -1)) {
return;
}
if (j->wait_reply_port) {
- job_log(j, LOG_DEBUG, "MPM wait reply being sent");
- job_assumes(j, mpm_wait_reply(j->wait_reply_port, 0, status) == 0);
+ vproc_log(j, LOG_DEBUG, "MPM wait reply being sent");
+ vproc_assumes(j, mpm_wait_reply(j->wait_reply_port, 0, status) == 0);
j->wait_reply_port = MACH_PORT_NULL;
}
@@ -1282,15 +1282,15 @@
j->ru.ru_nivcsw += ru.ru_nivcsw;
if (WIFEXITED(status) && WEXITSTATUS(status) != 0) {
- job_log(j, LOG_WARNING, "exited with exit code: %d", WEXITSTATUS(status));
+ vproc_log(j, LOG_WARNING, "exited with exit code: %d", WEXITSTATUS(status));
}
if (WIFSIGNALED(status)) {
int s = WTERMSIG(status);
if (SIGKILL == s || SIGTERM == s) {
- job_log(j, LOG_NOTICE, "Exited: %s", strsignal(s));
+ vproc_log(j, LOG_NOTICE, "Exited: %s", strsignal(s));
} else {
- job_log(j, LOG_WARNING, "Exited abnormally: %s", strsignal(s));
+ vproc_log(j, LOG_WARNING, "Exited abnormally: %s", strsignal(s));
}
}
@@ -1300,7 +1300,7 @@
}
void
-job_dispatch(vproc_t j, bool kickstart)
+vproc_dispatch(vproc_t j, bool kickstart)
{
/*
* The whole job removal logic needs to be consolidated. The fact that
@@ -1310,19 +1310,19 @@
*
* This is a classic example. The act of dispatching a job may delete it.
*/
- if (job_active(j)) {
+ if (vproc_active(j)) {
return;
- } else if (job_useless(j)) {
- job_remove(j);
- } else if (kickstart || job_keepalive(j)) {
- job_start(j);
+ } else if (vproc_useless(j)) {
+ vproc_remove(j);
+ } else if (kickstart || vproc_keepalive(j)) {
+ vproc_start(j);
} else {
- job_watch(j);
+ vproc_watch(j);
}
}
void
-job_callback(void *obj, struct kevent *kev)
+vproc_callback(void *obj, struct kevent *kev)
{
vproc_t j = obj;
bool d = j->debug;
@@ -1334,18 +1334,18 @@
switch (kev->filter) {
case EVFILT_PROC:
- job_reap(j);
+ vproc_reap(j);
if (j->firstborn) {
- job_log(j, LOG_DEBUG, "first born died, begin shutdown");
+ vproc_log(j, LOG_DEBUG, "first born died, begin shutdown");
launchd_shutdown();
} else {
- job_dispatch(j, false);
+ vproc_dispatch(j, false);
}
break;
case EVFILT_TIMER:
if ((uintptr_t)j == kev->ident || (uintptr_t)&j->start_interval == kev->ident) {
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
} else {
calendarinterval_callback(j, kev);
}
@@ -1360,38 +1360,38 @@
}
if (j->wait4debugger) {
/* Allow somebody else to attach */
- job_assumes(j, kill(j->p, SIGSTOP) != -1);
- job_assumes(j, ptrace(PT_DETACH, j->p, NULL, 0) != -1);
+ vproc_assumes(j, kill(j->p, SIGSTOP) != -1);
+ vproc_assumes(j, ptrace(PT_DETACH, j->p, NULL, 0) != -1);
}
if (kev->data > 0) {
int e;
read(j->execfd, &e, sizeof(e));
errno = e;
- job_log_error(j, LOG_ERR, "execve()");
- job_remove(j);
+ vproc_log_error(j, LOG_ERR, "execve()");
+ vproc_remove(j);
j = NULL;
} else {
- job_assumes(j, close(j->execfd) == 0);
+ vproc_assumes(j, close(j->execfd) == 0);
j->execfd = 0;
}
break;
case EVFILT_MACHPORT:
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
break;
default:
- job_assumes(j, false);
+ vproc_assumes(j, false);
break;
}
if (d) {
- /* the job might have been removed, must not call job_log() */
+ /* the job might have been removed, must not call vproc_log() */
setlogmask(oldmask);
}
}
void
-job_start(vproc_t j)
+vproc_start(vproc_t j)
{
int spair[2];
int execspair[2];
@@ -1400,14 +1400,14 @@
bool sipc = false;
time_t td;
- if (!job_assumes(j, j->req_port == MACH_PORT_NULL))
+ if (!vproc_assumes(j, j->req_port == MACH_PORT_NULL))
return;
- if (!job_assumes(j, j->parent != NULL))
+ if (!vproc_assumes(j, j->parent != NULL))
return;
- if (job_active(j)) {
- job_log(j, LOG_DEBUG, "Already started");
+ if (vproc_active(j)) {
+ vproc_log(j, LOG_DEBUG, "Already started");
return;
}
@@ -1416,12 +1416,12 @@
if (td < LAUNCHD_MIN_JOB_RUN_TIME) {
time_t respawn_delta = LAUNCHD_MIN_JOB_RUN_TIME - td;
- job_log(j, LOG_WARNING, "Throttling respawn: Will start in %ld seconds", respawn_delta);
- job_assumes(j, kevent_mod((uintptr_t)j, EVFILT_TIMER, EV_ADD|EV_ONESHOT, NOTE_SECONDS, respawn_delta, j) != -1);
+ vproc_log(j, LOG_WARNING, "Throttling respawn: Will start in %ld seconds", respawn_delta);
+ vproc_assumes(j, kevent_mod((uintptr_t)j, EVFILT_TIMER, EV_ADD|EV_ONESHOT, NOTE_SECONDS, respawn_delta, j) != -1);
return;
}
- job_log(j, LOG_DEBUG, "Starting");
+ vproc_log(j, LOG_DEBUG, "Starting");
if (!j->legacy_mach_job)
sipc = (!SLIST_EMPTY(&j->sockets) || !SLIST_EMPTY(&j->machservices));
@@ -1440,57 +1440,57 @@
time(&j->start_time);
if (j->bs_port) {
- job_assumes(j, launchd_mport_notify_req(j->bs_port, MACH_NOTIFY_NO_SENDERS) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_notify_req(j->bs_port, MACH_NOTIFY_NO_SENDERS) == KERN_SUCCESS);
}
- switch (c = job_fork(j->bs_port ? j : j->parent)) {
+ switch (c = vproc_fork(j->bs_port ? j : j->parent)) {
case -1:
- job_log_error(j, LOG_ERR, "fork() failed, will try again in one second");
- job_assumes(j, close(execspair[0]) == 0);
- job_assumes(j, close(execspair[1]) == 0);
+ vproc_log_error(j, LOG_ERR, "fork() failed, will try again in one second");
+ vproc_assumes(j, close(execspair[0]) == 0);
+ vproc_assumes(j, close(execspair[1]) == 0);
if (sipc) {
- job_assumes(j, close(spair[0]) == 0);
- job_assumes(j, close(spair[1]) == 0);
+ vproc_assumes(j, close(spair[0]) == 0);
+ vproc_assumes(j, close(spair[1]) == 0);
}
break;
case 0:
- job_assumes(j, close(execspair[0]) == 0);
+ vproc_assumes(j, close(execspair[0]) == 0);
/* wait for our parent to say they've attached a kevent to us */
read(_fd(execspair[1]), &c, sizeof(c));
if (j->firstborn) {
setpgid(getpid(), getpid());
if (isatty(STDIN_FILENO)) {
if (tcsetpgrp(STDIN_FILENO, getpid()) == -1)
- job_log_error(j, LOG_WARNING, "tcsetpgrp()");
+ vproc_log_error(j, LOG_WARNING, "tcsetpgrp()");
}
}
if (sipc) {
- job_assumes(j, close(spair[0]) == 0);
+ vproc_assumes(j, close(spair[0]) == 0);
sprintf(nbuf, "%d", spair[1]);
setenv(LAUNCHD_TRUSTED_FD_ENV, nbuf, 1);
}
- job_start_child(j, execspair[1]);
+ vproc_start_child(j, execspair[1]);
break;
default:
if (!SLIST_EMPTY(&j->machservices))
j->priv_port_has_senders = true;
j->p = c;
total_children++;
- job_assumes(j, close(execspair[1]) == 0);
+ vproc_assumes(j, close(execspair[1]) == 0);
j->execfd = _fd(execspair[0]);
if (sipc) {
- job_assumes(j, close(spair[1]) == 0);
+ vproc_assumes(j, close(spair[1]) == 0);
ipc_open(_fd(spair[0]), j);
}
- if (kevent_mod(j->execfd, EVFILT_READ, EV_ADD, 0, 0, &j->kqjob_callback) == -1)
- job_log_error(j, LOG_ERR, "kevent_mod(j->execfd): %m");
- if (kevent_mod(c, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, &j->kqjob_callback) == -1) {
- job_log_error(j, LOG_ERR, "kevent()");
- job_reap(j);
+ if (kevent_mod(j->execfd, EVFILT_READ, EV_ADD, 0, 0, &j->kqvproc_callback) == -1)
+ vproc_log_error(j, LOG_ERR, "kevent_mod(j->execfd): %m");
+ if (kevent_mod(c, EVFILT_PROC, EV_ADD, NOTE_EXIT, 0, &j->kqvproc_callback) == -1) {
+ vproc_log_error(j, LOG_ERR, "kevent()");
+ vproc_reap(j);
} else {
if (j->ondemand)
- job_ignore(j);
+ vproc_ignore(j);
}
if (!j->stall_before_exec) {
@@ -1503,7 +1503,7 @@
}
void
-job_start_child(vproc_t j, int execfd)
+vproc_start_child(vproc_t j, int execfd)
{
const char *file2exec = "/usr/libexec/launchproxy";
const char **argv;
@@ -1511,7 +1511,7 @@
glob_t g;
int i;
- job_setup_attributes(j);
+ vproc_setup_attributes(j);
if (j->argv && j->globargv) {
g.gl_offs = 1;
@@ -1519,7 +1519,7 @@
if (i > 0)
gflags |= GLOB_APPEND;
if (glob(j->argv[i], gflags, NULL, &g) != 0) {
- job_log_error(j, LOG_ERR, "glob(\"%s\")", j->argv[i]);
+ vproc_log_error(j, LOG_ERR, "glob(\"%s\")", j->argv[i]);
exit(EXIT_FAILURE);
}
}
@@ -1542,42 +1542,42 @@
argv++;
if (j->wait4debugger && ptrace(PT_TRACE_ME, getpid(), NULL, 0) == -1)
- job_log_error(j, LOG_ERR, "ptrace(PT_TRACE_ME, ...)");
+ vproc_log_error(j, LOG_ERR, "ptrace(PT_TRACE_ME, ...)");
if (j->force_ppc) {
int affinmib[] = { CTL_KERN, KERN_AFFINITY, 1, 1 };
size_t mibsz = sizeof(affinmib) / sizeof(affinmib[0]);
if (sysctl(affinmib, mibsz, NULL, NULL, NULL, 0) == -1)
- job_log_error(j, LOG_WARNING, "Failed to force PowerPC execution");
+ vproc_log_error(j, LOG_WARNING, "Failed to force PowerPC execution");
}
if (j->prog) {
execv(j->inetcompat ? file2exec : j->prog, (char *const*)argv);
- job_log_error(j, LOG_ERR, "execv(\"%s\", ...)", j->prog);
+ vproc_log_error(j, LOG_ERR, "execv(\"%s\", ...)", j->prog);
} else {
execvp(j->inetcompat ? file2exec : argv[0], (char *const*)argv);
- job_log_error(j, LOG_ERR, "execvp(\"%s\", ...)", argv[0]);
+ vproc_log_error(j, LOG_ERR, "execvp(\"%s\", ...)", argv[0]);
}
write(execfd, &errno, sizeof(errno));
exit(EXIT_FAILURE);
}
-void job_setup_env_from_other_jobs(vproc_t j)
+void vproc_setup_env_from_other_jobs(vproc_t j)
{
struct envitem *ei;
vproc_t ji;
SLIST_FOREACH(ji, &j->jobs, sle)
- job_setup_env_from_other_jobs(ji);
+ vproc_setup_env_from_other_jobs(ji);
SLIST_FOREACH(ei, &j->global_env, sle)
setenv(ei->key, ei->value, 1);
}
void
-job_postfork_become_user(vproc_t j)
+vproc_postfork_become_user(vproc_t j)
{
char loginname[2000];
struct passwd *pwe;
@@ -1589,12 +1589,12 @@
if (j->username) {
if ((pwe = getpwnam(j->username)) == NULL) {
- job_log(j, LOG_ERR, "getpwnam(\"%s\") failed", j->username);
+ vproc_log(j, LOG_ERR, "getpwnam(\"%s\") failed", j->username);
_exit(EXIT_FAILURE);
}
} else if (j->mach_uid) {
if ((pwe = getpwuid(j->mach_uid)) == NULL) {
- job_log(j, LOG_ERR, "getpwuid(\"%u\") failed", j->mach_uid);
+ vproc_log(j, LOG_ERR, "getpwuid(\"%u\") failed", j->mach_uid);
_exit(EXIT_FAILURE);
}
} else {
@@ -1604,7 +1604,7 @@
strlcpy(loginname, pwe->pw_name, sizeof(loginname));
if (pwe->pw_expire && time(NULL) >= pwe->pw_expire) {
- job_log(j, LOG_ERR, "Expired account");
+ vproc_log(j, LOG_ERR, "Expired account");
_exit(EXIT_FAILURE);
}
@@ -1615,7 +1615,7 @@
struct group *gre;
if ((gre = getgrnam(j->groupname)) == NULL) {
- job_log(j, LOG_ERR, "getgrnam(\"%s\") failed", j->groupname);
+ vproc_log(j, LOG_ERR, "getgrnam(\"%s\") failed", j->groupname);
_exit(EXIT_FAILURE);
}
@@ -1623,7 +1623,7 @@
}
if (-1 == setgid(desired_gid)) {
- job_log_error(j, LOG_ERR, "setgid(%u)", desired_gid);
+ vproc_log_error(j, LOG_ERR, "setgid(%u)", desired_gid);
_exit(EXIT_FAILURE);
}
@@ -1633,19 +1633,19 @@
if (!j->no_init_groups) {
if (initgroups(loginname, desired_gid) == -1) {
- job_log_error(j, LOG_ERR, "initgroups()");
+ vproc_log_error(j, LOG_ERR, "initgroups()");
_exit(EXIT_FAILURE);
}
}
if (-1 == setuid(desired_uid)) {
- job_log_error(j, LOG_ERR, "setuid(%u)", desired_uid);
+ vproc_log_error(j, LOG_ERR, "setuid(%u)", desired_uid);
_exit(EXIT_FAILURE);
}
}
void
-job_setup_attributes(vproc_t j)
+vproc_setup_attributes(vproc_t j)
{
struct limititem *li;
struct envitem *ei;
@@ -1656,7 +1656,7 @@
struct rlimit rl;
if (getrlimit(li->which, &rl) == -1) {
- job_log_error(j, LOG_WARNING, "getrlimit()");
+ vproc_log_error(j, LOG_WARNING, "getrlimit()");
continue;
}
@@ -1666,7 +1666,7 @@
rl.rlim_cur = li->lim.rlim_cur;
if (setrlimit(li->which, &rl) == -1)
- job_log_error(j, LOG_WARNING, "setrlimit()");
+ vproc_log_error(j, LOG_WARNING, "setrlimit()");
}
if (!j->inetcompat && j->session_create)
@@ -1674,7 +1674,7 @@
if (j->low_pri_io) {
if (setiopolicy_np(IOPOL_TYPE_DISK, IOPOL_SCOPE_PROCESS, IOPOL_THROTTLE) == -1) {
- job_log_error(j, LOG_WARNING, "setiopolicy_np()");
+ vproc_log_error(j, LOG_WARNING, "setiopolicy_np()");
}
}
if (j->rootdir) {
@@ -1682,7 +1682,7 @@
chdir(".");
}
- job_postfork_become_user(j);
+ vproc_postfork_become_user(j);
if (j->workingdir) {
chdir(j->workingdir);
@@ -1695,32 +1695,32 @@
if (j->stdinpath) {
int sifd = open(j->stdinpath, O_RDONLY|O_NOCTTY);
if (sifd == -1) {
- job_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stdinpath);
+ vproc_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stdinpath);
} else {
- job_assumes(j, dup2(sifd, STDIN_FILENO) != -1);
- job_assumes(j, close(sifd) == 0);
+ vproc_assumes(j, dup2(sifd, STDIN_FILENO) != -1);
+ vproc_assumes(j, close(sifd) == 0);
}
}
if (j->stdoutpath) {
int sofd = open(j->stdoutpath, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, DEFFILEMODE);
if (sofd == -1) {
- job_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stdoutpath);
+ vproc_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stdoutpath);
} else {
- job_assumes(j, dup2(sofd, STDOUT_FILENO) != -1);
- job_assumes(j, close(sofd) == 0);
+ vproc_assumes(j, dup2(sofd, STDOUT_FILENO) != -1);
+ vproc_assumes(j, close(sofd) == 0);
}
}
if (j->stderrpath) {
int sefd = open(j->stderrpath, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY, DEFFILEMODE);
if (sefd == -1) {
- job_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stderrpath);
+ vproc_log_error(j, LOG_WARNING, "open(\"%s\", ...)", j->stderrpath);
} else {
- job_assumes(j, dup2(sefd, STDERR_FILENO) != -1);
- job_assumes(j, close(sefd) == 0);
+ vproc_assumes(j, dup2(sefd, STDERR_FILENO) != -1);
+ vproc_assumes(j, close(sefd) == 0);
}
}
- job_setup_env_from_other_jobs(root_job);
+ vproc_setup_env_from_other_jobs(root_job);
SLIST_FOREACH(ei, &j->env, sle)
setenv(ei->key, ei->value, 1);
@@ -1745,7 +1745,7 @@
}
}
- job_assumes(j, closedir(dd) == 0);
+ vproc_assumes(j, closedir(dd) == 0);
return r;
}
@@ -1767,14 +1767,14 @@
}
if (-1 == kevent_mod((uintptr_t)ci, EVFILT_TIMER, EV_ADD, NOTE_ABSOLUTE|NOTE_SECONDS, later, j)) {
- job_log_error(j, LOG_ERR, "adding kevent alarm");
+ vproc_log_error(j, LOG_ERR, "adding kevent alarm");
} else {
- job_log(j, LOG_INFO, "scheduled to run again at %s", ctime(&later));
+ vproc_log(j, LOG_INFO, "scheduled to run again at %s", ctime(&later));
}
}
size_t
-job_prep_log_preface(vproc_t j, char *buf)
+vproc_prep_log_preface(vproc_t j, char *buf)
{
size_t lsz = strlen(j->label);
char newlabel[lsz * 2 + 1];
@@ -1792,13 +1792,13 @@
newlabel[o] = '\0';
if (j->parent)
- r = job_prep_log_preface(j->parent, buf);
+ r = vproc_prep_log_preface(j->parent, buf);
return r + sprintf(buf + r, "%s%s", j->parent ? "/" : "", newlabel);
}
void
-job_log_bug(vproc_t j, const char *rcs_rev, const char *path, unsigned int line, const char *test)
+vproc_log_bug(vproc_t j, const char *rcs_rev, const char *path, unsigned int line, const char *test)
{
int saved_errno = errno;
char buf[100];
@@ -1820,17 +1820,17 @@
*rcs_rev_tmp = '\0';
}
- job_log(j, LOG_NOTICE, "Bug: %s:%u (%s):%u: %s", file, line, buf, saved_errno, test);
+ vproc_log(j, LOG_NOTICE, "Bug: %s:%u (%s):%u: %s", file, line, buf, saved_errno, test);
}
void
-job_log_error(vproc_t j, int pri, const char *msg, ...)
+vproc_log_error(vproc_t j, int pri, const char *msg, ...)
{
char newmsg[10000];
va_list ap;
size_t o;
- o = job_prep_log_preface(j, newmsg);
+ o = vproc_prep_log_preface(j, newmsg);
sprintf(newmsg + o, ": %s: %s", msg, strerror(errno));
@@ -1840,13 +1840,13 @@
}
void
-job_log(vproc_t j, int pri, const char *msg, ...)
+vproc_log(vproc_t j, int pri, const char *msg, ...)
{
char newmsg[10000];
va_list ap;
size_t o;
- o = job_prep_log_preface(j, newmsg);
+ o = vproc_prep_log_preface(j, newmsg);
sprintf(newmsg + o, ": %s", msg);
@@ -1860,7 +1860,7 @@
{
struct watchpath *wp = calloc(1, sizeof(struct watchpath) + strlen(name) + 1);
- if (!job_assumes(j, wp != NULL))
+ if (!vproc_assumes(j, wp != NULL))
return false;
wp->is_qdir = qdir;
@@ -1878,7 +1878,7 @@
watchpath_delete(vproc_t j, struct watchpath *wp)
{
if (wp->fd != -1)
- job_assumes(j, close(wp->fd) != -1);
+ vproc_assumes(j, close(wp->fd) != -1);
SLIST_REMOVE(&j->vnodes, wp, watchpath, sle);
@@ -1889,8 +1889,8 @@
watchpath_ignore(vproc_t j, struct watchpath *wp)
{
if (wp->fd != -1) {
- job_log(j, LOG_DEBUG, "Ignoring Vnode: %d", wp->fd);
- job_assumes(j, kevent_mod(wp->fd, EVFILT_VNODE, EV_DELETE, 0, 0, NULL) != -1);
+ vproc_log(j, LOG_DEBUG, "Ignoring Vnode: %d", wp->fd);
+ vproc_assumes(j, kevent_mod(wp->fd, EVFILT_VNODE, EV_DELETE, 0, 0, NULL) != -1);
}
}
@@ -1907,18 +1907,18 @@
wp->fd = _fd(open(wp->name, O_EVTONLY|O_NOCTTY|O_NOFOLLOW));
if (wp->fd == -1)
- return job_log_error(j, LOG_ERR, "Watchpath monitoring failed on \"%s\"", wp->name);
+ return vproc_log_error(j, LOG_ERR, "Watchpath monitoring failed on \"%s\"", wp->name);
- job_log(j, LOG_DEBUG, "Watching Vnode: %d", wp->fd);
- job_assumes(j, kevent_mod(wp->fd, EVFILT_VNODE, EV_ADD|EV_CLEAR, fflags, 0, j) != -1);
+ vproc_log(j, LOG_DEBUG, "Watching Vnode: %d", wp->fd);
+ vproc_assumes(j, kevent_mod(wp->fd, EVFILT_VNODE, EV_ADD|EV_CLEAR, fflags, 0, j) != -1);
if (!wp->is_qdir)
return;
if (-1 == (qdir_file_cnt = dir_has_files(j, wp->name))) {
- job_log_error(j, LOG_ERR, "dir_has_files(\"%s\", ...)", wp->name);
+ vproc_log_error(j, LOG_ERR, "dir_has_files(\"%s\", ...)", wp->name);
} else if (qdir_file_cnt > 0) {
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
}
}
@@ -1933,26 +1933,26 @@
break;
}
- job_assumes(j, wp != NULL);
+ vproc_assumes(j, wp != NULL);
if ((NOTE_DELETE|NOTE_RENAME|NOTE_REVOKE) & kev->fflags) {
- job_log(j, LOG_DEBUG, "Path invalidated: %s", wp->name);
- job_assumes(j, close(wp->fd) == 0);
+ vproc_log(j, LOG_DEBUG, "Path invalidated: %s", wp->name);
+ vproc_assumes(j, close(wp->fd) == 0);
wp->fd = -1; /* this will get fixed in watchpath_watch() */
} else if (!wp->is_qdir) {
- job_log(j, LOG_DEBUG, "Watch path modified: %s", wp->name);
+ vproc_log(j, LOG_DEBUG, "Watch path modified: %s", wp->name);
} else {
- job_log(j, LOG_DEBUG, "Queue directory modified: %s", wp->name);
+ vproc_log(j, LOG_DEBUG, "Queue directory modified: %s", wp->name);
if (-1 == (dir_file_cnt = dir_has_files(j, wp->name))) {
- job_log_error(j, LOG_ERR, "dir_has_files(\"%s\", ...)", wp->name);
+ vproc_log_error(j, LOG_ERR, "dir_has_files(\"%s\", ...)", wp->name);
} else if (0 == dir_file_cnt) {
- job_log(j, LOG_DEBUG, "Spurious wake up, directory is empty again: %s", wp->name);
+ vproc_log(j, LOG_DEBUG, "Spurious wake up, directory is empty again: %s", wp->name);
return;
}
}
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
}
bool
@@ -1991,7 +1991,7 @@
{
struct calendarinterval *ci = calloc(1, sizeof(struct calendarinterval));
- if (!job_assumes(j, ci != NULL))
+ if (!vproc_assumes(j, ci != NULL))
return false;
ci->when = *w;
@@ -2006,7 +2006,7 @@
void
calendarinterval_delete(vproc_t j, struct calendarinterval *ci)
{
- job_assumes(j, kevent_mod((uintptr_t)ci, EVFILT_TIMER, EV_DELETE, 0, 0, NULL) != -1);
+ vproc_assumes(j, kevent_mod((uintptr_t)ci, EVFILT_TIMER, EV_DELETE, 0, 0, NULL) != -1);
SLIST_REMOVE(&j->cal_intervals, ci, calendarinterval, sle);
@@ -2023,9 +2023,9 @@
break;
}
- if (job_assumes(j, ci != NULL)) {
+ if (vproc_assumes(j, ci != NULL)) {
calendarinterval_setalarm(j, ci);
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
}
}
@@ -2034,14 +2034,14 @@
{
struct socketgroup *sg = calloc(1, sizeof(struct socketgroup) + strlen(name) + 1);
- if (!job_assumes(j, sg != NULL))
+ if (!vproc_assumes(j, sg != NULL))
return false;
sg->fds = calloc(1, fd_cnt * sizeof(int));
sg->fd_cnt = fd_cnt;
sg->junkfds = junkfds;
- if (!job_assumes(j, sg->fds != NULL)) {
+ if (!vproc_assumes(j, sg->fds != NULL)) {
free(sg);
return false;
}
@@ -2060,7 +2060,7 @@
unsigned int i;
for (i = 0; i < sg->fd_cnt; i++)
- job_assumes(j, close(sg->fds[i]) != -1);
+ vproc_assumes(j, close(sg->fds[i]) != -1);
SLIST_REMOVE(&j->sockets, sg, socketgroup, sle);
@@ -2080,10 +2080,10 @@
for (i = 0; i < sg->fd_cnt; i++)
buf_off += sprintf(buf + buf_off, " %d", sg->fds[i]);
- job_log(j, LOG_DEBUG, "Ignoring Sockets:%s", buf);
+ vproc_log(j, LOG_DEBUG, "Ignoring Sockets:%s", buf);
for (i = 0; i < sg->fd_cnt; i++)
- job_assumes(j, kevent_mod(sg->fds[i], EVFILT_READ, EV_DELETE, 0, 0, NULL) != -1);
+ vproc_assumes(j, kevent_mod(sg->fds[i], EVFILT_READ, EV_DELETE, 0, 0, NULL) != -1);
}
void
@@ -2098,16 +2098,16 @@
for (i = 0; i < sg->fd_cnt; i++)
buf_off += sprintf(buf + buf_off, " %d", sg->fds[i]);
- job_log(j, LOG_DEBUG, "Watching sockets:%s", buf);
+ vproc_log(j, LOG_DEBUG, "Watching sockets:%s", buf);
for (i = 0; i < sg->fd_cnt; i++)
- job_assumes(j, kevent_mod(sg->fds[i], EVFILT_READ, EV_ADD, 0, 0, j) != -1);
+ vproc_assumes(j, kevent_mod(sg->fds[i], EVFILT_READ, EV_ADD, 0, 0, j) != -1);
}
void
socketgroup_callback(vproc_t j, struct kevent *kev)
{
- job_dispatch(j, true);
+ vproc_dispatch(j, true);
}
bool
@@ -2115,7 +2115,7 @@
{
struct envitem *ei = calloc(1, sizeof(struct envitem) + strlen(k) + 1 + strlen(v) + 1);
- if (!job_assumes(j, ei != NULL))
+ if (!vproc_assumes(j, ei != NULL))
return false;
strcpy(ei->key, k);
@@ -2167,7 +2167,7 @@
if (li == NULL) {
li = calloc(1, sizeof(struct limititem));
- if (!job_assumes(j, li != NULL))
+ if (!vproc_assumes(j, li != NULL))
return false;
li->which = w;
@@ -2216,19 +2216,19 @@
}
bool
-job_useless(vproc_t j)
+vproc_useless(vproc_t j)
{
if (j->unload_at_exit && j->start_time != 0) {
- job_log(j, LOG_INFO, "Exited. Was only configured to run once.");
+ vproc_log(j, LOG_INFO, "Exited. Was only configured to run once.");
return true;
} else if (shutdown_in_progress) {
- job_log(j, LOG_INFO, "Exited while shutdown in progress.");
+ vproc_log(j, LOG_INFO, "Exited while shutdown in progress.");
return true;
} else if (!j->checkedin && (!SLIST_EMPTY(&j->sockets) || !SLIST_EMPTY(&j->machservices))) {
- job_log(j, LOG_WARNING, "Failed to check-in!");
+ vproc_log(j, LOG_WARNING, "Failed to check-in!");
return true;
} else if (j->legacy_mach_job && SLIST_EMPTY(&j->machservices)) {
- job_log(j, LOG_INFO, "Garbage collecting");
+ vproc_log(j, LOG_INFO, "Garbage collecting");
return true;
}
@@ -2236,7 +2236,7 @@
}
bool
-job_keepalive(vproc_t j)
+vproc_keepalive(vproc_t j)
{
mach_msg_type_number_t statusCnt;
mach_port_status_t status;
@@ -2247,12 +2247,12 @@
bool dispatch_others = false;
if (j->runatload && j->start_time == 0) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job needs to run at least once.");
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job needs to run at least once.");
return true;
}
if (!j->ondemand) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job configured to run continuously.");
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job configured to run continuously.");
return true;
}
@@ -2262,7 +2262,7 @@
(mach_port_info_t)&status, &statusCnt) != KERN_SUCCESS)
continue;
if (status.mps_msgcount) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job restarted due to %d queued Mach messages on service: %s",
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job restarted due to %d queued Mach messages on service: %s",
status.mps_msgcount, ms->name);
return true;
}
@@ -2276,7 +2276,7 @@
wanted_state = true;
case NETWORK_DOWN:
if (network_up == wanted_state) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the network is %s.",
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the network is %s.",
wanted_state ? "up" : "down");
return true;
}
@@ -2285,7 +2285,7 @@
wanted_state = true;
case FAILED_EXIT:
if (good_exit == wanted_state) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the exit state was %s.",
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the exit state was %s.",
wanted_state ? "successful" : "failure");
return true;
}
@@ -2294,7 +2294,7 @@
wanted_state = true;
case PATH_MISSING:
if ((bool)(stat(si->what, &sb) == 0) == wanted_state) {
- job_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the following path %s: %s",
+ vproc_log(j, LOG_DEBUG, "KeepAlive check: job configured to run while the following path %s: %s",
wanted_state ? "exists" : "is missing", si->what);
return true;
}
@@ -2305,13 +2305,13 @@
/* Maybe another job has the inverse path based semaphore as this job */
if (dispatch_others)
- job_dispatch_all_other_semaphores(root_job, j);
+ vproc_dispatch_all_other_semaphores(root_job, j);
return false;
}
const char *
-job_prog(vproc_t j)
+vproc_prog(vproc_t j)
{
if (j->prog) {
return j->prog;
@@ -2323,7 +2323,7 @@
}
bool
-job_active(vproc_t j)
+vproc_active(vproc_t j)
{
struct machservice *ms;
@@ -2336,9 +2336,9 @@
if (j->priv_port_has_senders) {
if (j->start_time && !j->checkedin) {
if (j->legacy_mach_job) {
- job_log(j, LOG_NOTICE, "Daemonized. Extremely expensive no-op.");
+ vproc_log(j, LOG_NOTICE, "Daemonized. Extremely expensive no-op.");
} else if (!j->unload_at_exit) {
- job_log(j, LOG_ERR, "Daemonization is not supported under launchd.");
+ vproc_log(j, LOG_ERR, "Daemonization is not supported under launchd.");
return false;
}
}
@@ -2356,25 +2356,25 @@
pid_t
launchd_fork(void)
{
- return job_fork(root_job);
+ return vproc_fork(root_job);
}
pid_t
-job_fork(vproc_t j)
+vproc_fork(vproc_t j)
{
mach_port_t p = j->bs_port;
pid_t r = -1;
sigprocmask(SIG_BLOCK, &blocked_signals, NULL);
- job_assumes(j, launchd_mport_make_send(p) == KERN_SUCCESS);
- job_assumes(j, launchd_set_bport(p) == KERN_SUCCESS);
- job_assumes(j, launchd_mport_deallocate(p) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_make_send(p) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_set_bport(p) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_deallocate(p) == KERN_SUCCESS);
r = fork();
if (r != 0) {
- job_assumes(j, launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS);
} else if (r == 0) {
size_t i;
@@ -2392,10 +2392,10 @@
void
machservice_resetport(vproc_t j, struct machservice *ms)
{
- job_assumes(j, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
- job_assumes(j, launchd_mport_deallocate(ms->port) == KERN_SUCCESS);
- job_assumes(j, launchd_mport_create_recv(&ms->port) == KERN_SUCCESS);
- job_assumes(j, launchd_mport_make_send(ms->port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_deallocate(ms->port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_create_recv(&ms->port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_make_send(ms->port) == KERN_SUCCESS);
}
struct machservice *
@@ -2410,10 +2410,10 @@
ms->job = j;
if (*serviceport == MACH_PORT_NULL) {
- if (!job_assumes(j, launchd_mport_create_recv(&ms->port) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_create_recv(&ms->port) == KERN_SUCCESS))
goto out_bad;
- if (!job_assumes(j, launchd_mport_make_send(ms->port) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_make_send(ms->port) == KERN_SUCCESS))
goto out_bad2;
*serviceport = ms->port;
ms->isActive = false;
@@ -2425,11 +2425,11 @@
SLIST_INSERT_HEAD(&j->machservices, ms, sle);
- job_log(j, LOG_INFO, "Mach service added: %s", name);
+ vproc_log(j, LOG_INFO, "Mach service added: %s", name);
return ms;
out_bad2:
- job_assumes(j, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
+ vproc_assumes(j, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
out_bad:
free(ms);
return NULL;
@@ -2470,7 +2470,7 @@
em = EXC_MASK_RPC_ALERT;
#endif
- if (!job_assumes(ms->job, mhp != MACH_PORT_NULL)) {
+ if (!vproc_assumes(ms->job, mhp != MACH_PORT_NULL)) {
return;
}
@@ -2485,17 +2485,17 @@
case TASK_BOOTSTRAP_PORT:
/* I find it a little odd that zero isn't reserved in the header */
case 0:
- job_log(ms->job, LOG_WARNING, "Tried to set a reserved task special port: %d", which_port);
+ vproc_log(ms->job, LOG_WARNING, "Tried to set a reserved task special port: %d", which_port);
break;
default:
- job_assumes(ms->job, (errno = task_set_special_port(mts, which_port, ms->port)) == KERN_SUCCESS);
+ vproc_assumes(ms->job, (errno = task_set_special_port(mts, which_port, ms->port)) == KERN_SUCCESS);
break;
}
} else if (strcasecmp(key, LAUNCH_JOBKEY_MACH_HOSTSPECIALPORT) == 0 && getpid() == 1) {
if (which_port > HOST_MAX_SPECIAL_KERNEL_PORT) {
- job_assumes(ms->job, (errno = host_set_special_port(mhp, which_port, ms->port)) == KERN_SUCCESS);
+ vproc_assumes(ms->job, (errno = host_set_special_port(mhp, which_port, ms->port)) == KERN_SUCCESS);
} else {
- job_log(ms->job, LOG_WARNING, "Tried to set a reserved host special port: %d", which_port);
+ vproc_log(ms->job, LOG_WARNING, "Tried to set a reserved host special port: %d", which_port);
}
}
case LAUNCH_DATA_BOOL:
@@ -2505,18 +2505,18 @@
} else if (strcasecmp(key, LAUNCH_JOBKEY_MACH_HIDEUNTILCHECKIN) == 0) {
ms->hide = b;
} else if (strcasecmp(key, LAUNCH_JOBKEY_MACH_EXCEPTIONSERVER) == 0) {
- job_assumes(ms->job, task_set_exception_ports(mts, em, ms->port,
+ vproc_assumes(ms->job, task_set_exception_ports(mts, em, ms->port,
EXCEPTION_STATE_IDENTITY, f) == KERN_SUCCESS);
} else if (strcasecmp(key, LAUNCH_JOBKEY_MACH_KUNCSERVER) == 0) {
ms->kUNCServer = b;
- job_assumes(ms->job, host_set_UNDServer(mhp, ms->port) == KERN_SUCCESS);
+ vproc_assumes(ms->job, host_set_UNDServer(mhp, ms->port) == KERN_SUCCESS);
}
break;
default:
break;
}
- job_assumes(ms->job, launchd_mport_deallocate(mhp) == KERN_SUCCESS);
+ vproc_assumes(ms->job, launchd_mport_deallocate(mhp) == KERN_SUCCESS);
}
void
@@ -2526,13 +2526,13 @@
struct machservice *ms;
mach_port_t p = MACH_PORT_NULL;
- if ((ms = job_lookup_service(j->parent, key, false))) {
- job_log(j, LOG_WARNING, "Conflict with job: %s over Mach service: %s", ms->job->label, key);
+ if ((ms = vproc_lookup_service(j->parent, key, false))) {
+ vproc_log(j, LOG_WARNING, "Conflict with job: %s over Mach service: %s", ms->job->label, key);
return;
}
if ((ms = machservice_new(j, key, &p)) == NULL) {
- job_log_error(j, LOG_WARNING, "Cannot add service: %s", key);
+ vproc_log_error(j, LOG_WARNING, "Cannot add service: %s", key);
return;
}
@@ -2544,34 +2544,34 @@
}
vproc_t
-job_parent(vproc_t j)
+vproc_parent(vproc_t j)
{
return j->parent;
}
void
-job_uncork_fork(vproc_t j)
+vproc_uncork_fork(vproc_t j)
{
pid_t c = j->p;
if (j->stall_before_exec) {
- job_log(j, LOG_DEBUG, "Uncorking the fork().");
+ vproc_log(j, LOG_DEBUG, "Uncorking the fork().");
/* this unblocks the child and avoids a race
* between the above fork() and the kevent_mod() */
write(j->execfd, &c, sizeof(c));
j->stall_before_exec = false;
} else {
- job_log(j, LOG_WARNING, "Attempt to uncork a job that isn't in the middle of a fork().");
+ vproc_log(j, LOG_WARNING, "Attempt to uncork a job that isn't in the middle of a fork().");
}
}
void
-job_foreach_service(vproc_t j, void (*bs_iter)(struct machservice *, void *), void *context, bool include_subjobs)
+vproc_foreach_service(vproc_t j, void (*bs_iter)(struct machservice *, void *), void *context, bool include_subjobs)
{
struct machservice *ms;
vproc_t ji;
- j = job_get_bs(j);
+ j = vproc_get_bs(j);
if (include_subjobs) {
SLIST_FOREACH(ji, &j->jobs, sle) {
@@ -2588,48 +2588,48 @@
}
vproc_t
-job_new_bootstrap(vproc_t p, mach_port_t requestorport, mach_port_t checkin_port)
+vproc_new_bootstrap(vproc_t p, mach_port_t requestorport, mach_port_t checkin_port)
{
char bslabel[1024] = "100000";
vproc_t j;
if (requestorport == MACH_PORT_NULL) {
if (p) {
- job_log(p, LOG_ERR, "Mach sub-bootstrap create request requires a requester port");
+ vproc_log(p, LOG_ERR, "Mach sub-bootstrap create request requires a requester port");
}
return NULL;
}
- j = job_new(p, bslabel, NULL, NULL, NULL, requestorport);
+ j = vproc_new(p, bslabel, NULL, NULL, NULL, requestorport);
if (j == NULL)
return NULL;
if (checkin_port != MACH_PORT_NULL) {
j->bs_port = checkin_port;
- } else if (!job_assumes(j, launchd_mport_create_recv(&j->bs_port) == KERN_SUCCESS)) {
+ } else if (!vproc_assumes(j, launchd_mport_create_recv(&j->bs_port) == KERN_SUCCESS)) {
goto out_bad;
}
sprintf(j->label, "%d", MACH_PORT_INDEX(j->bs_port));
- if (!job_assumes(j, launchd_mport_request_callback(j->bs_port, j, true) == KERN_SUCCESS))
+ if (!vproc_assumes(j, launchd_mport_request_callback(j->bs_port, j, true) == KERN_SUCCESS))
goto out_bad;
if (p) {
- job_log(p, LOG_DEBUG, "Mach sub-bootstrap created: %s", j->label);
+ vproc_log(p, LOG_DEBUG, "Mach sub-bootstrap created: %s", j->label);
}
return j;
out_bad:
if (j)
- job_remove(j);
+ vproc_remove(j);
return NULL;
}
void
-job_delete_anything_with_port(vproc_t j, mach_port_t port)
+vproc_delete_anything_with_port(vproc_t j, mach_port_t port)
{
struct machservice *ms, *next_ms;
vproc_t ji, jn;
@@ -2645,7 +2645,7 @@
*/
SLIST_FOREACH_SAFE(ji, &j->jobs, sle, jn) {
- job_delete_anything_with_port(ji, port);
+ vproc_delete_anything_with_port(ji, port);
}
SLIST_FOREACH_SAFE(ms, &j->machservices, sle, next_ms) {
@@ -2657,19 +2657,19 @@
if (j == root_job) {
launchd_shutdown();
} else {
- job_remove(j);
+ vproc_remove(j);
}
}
}
struct machservice *
-job_lookup_service(vproc_t j, const char *name, bool check_parent)
+vproc_lookup_service(vproc_t j, const char *name, bool check_parent)
{
struct machservice *ms;
vproc_t ji;
- j = job_get_bs(j);
+ j = vproc_get_bs(j);
SLIST_FOREACH(ji, &j->jobs, sle) {
if (ji->req_port)
@@ -2692,7 +2692,7 @@
if (!check_parent)
return NULL;
- return job_lookup_service(j->parent, name, true);
+ return vproc_lookup_service(j->parent, name, true);
}
mach_port_t
@@ -2731,15 +2731,15 @@
if (ms->recv) {
if (ms->isActive) {
/* FIXME we should cancel the notification */
- job_log(ms->job, LOG_ERR, "Mach service deleted while we didn't own the receive right: %s", ms->name);
+ vproc_log(ms->job, LOG_ERR, "Mach service deleted while we didn't own the receive right: %s", ms->name);
} else {
- job_assumes(ms->job, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
+ vproc_assumes(ms->job, launchd_mport_close_recv(ms->port) == KERN_SUCCESS);
}
}
- job_assumes(ms->job, launchd_mport_deallocate(ms->port) == KERN_SUCCESS);
+ vproc_assumes(ms->job, launchd_mport_deallocate(ms->port) == KERN_SUCCESS);
- job_log(ms->job, LOG_INFO, "Mach service deleted: %s", ms->name);
+ vproc_log(ms->job, LOG_INFO, "Mach service deleted: %s", ms->name);
SLIST_REMOVE(&ms->job->machservices, ms, machservice, sle);
@@ -2755,10 +2755,10 @@
if (ms->job->req_port == MACH_PORT_NULL) {
which = MACH_NOTIFY_PORT_DESTROYED;
- job_checkin(ms->job);
+ vproc_checkin(ms->job);
}
- job_assumes(ms->job, launchd_mport_notify_req(ms->port, which) == KERN_SUCCESS);
+ vproc_assumes(ms->job, launchd_mport_notify_req(ms->port, which) == KERN_SUCCESS);
}
#define NELEM(x) (sizeof(x)/sizeof(x[0]))
@@ -2810,19 +2810,19 @@
}
void
-job_checkin(vproc_t j)
+vproc_checkin(vproc_t j)
{
j->checkedin = true;
}
bool
-job_ack_port_destruction(vproc_t j, mach_port_t p)
+vproc_ack_port_destruction(vproc_t j, mach_port_t p)
{
vproc_t ji;
struct machservice *ms;
SLIST_FOREACH(ji, &j->jobs, sle) {
- if (job_ack_port_destruction(ji, p))
+ if (vproc_ack_port_destruction(ji, p))
return true;
}
@@ -2839,25 +2839,25 @@
if (ms->reset)
machservice_resetport(j, ms);
- job_log(j, LOG_DEBUG, "Receive right returned to us: %s", ms->name);
+ vproc_log(j, LOG_DEBUG, "Receive right returned to us: %s", ms->name);
- job_dispatch(j, false);
+ vproc_dispatch(j, false);
return true;
}
void
-job_ack_no_senders(vproc_t j)
+vproc_ack_no_senders(vproc_t j)
{
j->priv_port_has_senders = false;
- job_log(j, LOG_DEBUG, "No more senders on privileged Mach bootstrap port");
+ vproc_log(j, LOG_DEBUG, "No more senders on privileged Mach bootstrap port");
- job_dispatch(j, false);
+ vproc_dispatch(j, false);
}
mach_port_t
-job_get_reqport(vproc_t j)
+vproc_get_reqport(vproc_t j)
{
j->transfer_bstrap = true;
gc_this_job = j;
@@ -2866,25 +2866,25 @@
}
mach_port_t
-job_get_bsport(vproc_t j)
+vproc_get_bsport(vproc_t j)
{
return j->bs_port;
}
vproc_t
-job_get_bs(vproc_t j)
+vproc_get_bs(vproc_t j)
{
if (j->req_port)
return j;
- if (job_assumes(j, j->parent != NULL))
+ if (vproc_assumes(j, j->parent != NULL))
return j->parent;
return NULL;
}
pid_t
-job_get_pid(vproc_t j)
+vproc_get_pid(vproc_t j)
{
return j->p;
}
@@ -2898,7 +2898,7 @@
if (what)
alloc_sz += strlen(what) + 1;
- if (!job_assumes(j, si = calloc(1, alloc_sz)))
+ if (!vproc_assumes(j, si = calloc(1, alloc_sz)))
return false;
si->why = why;
@@ -2950,7 +2950,7 @@
}
void
-job_dispatch_all_other_semaphores(vproc_t j, vproc_t nj)
+vproc_dispatch_all_other_semaphores(vproc_t j, vproc_t nj)
{
vproc_t ji, jn;
@@ -2958,11 +2958,11 @@
return;
SLIST_FOREACH_SAFE(ji, &j->jobs, sle, jn) {
- job_dispatch_all_other_semaphores(ji, nj);
+ vproc_dispatch_all_other_semaphores(ji, nj);
}
if (!SLIST_EMPTY(&j->semaphores)) {
- job_dispatch(j, false);
+ vproc_dispatch(j, false);
}
}
Modified: trunk/launchd/src/launchd_core_logic.h
===================================================================
--- trunk/launchd/src/launchd_core_logic.h 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd_core_logic.h 2006-09-06 17:22:43 UTC (rev 22840)
@@ -24,8 +24,8 @@
#include "bootstrap_public.h"
-#define job_assumes(j, e) \
- (__builtin_expect(!(e), 0) ? job_log_bug(j, __rcs_file_version__, __FILE__, __LINE__, #e), false : true)
+#define vproc_assumes(j, e) \
+ (__builtin_expect(!(e), 0) ? vproc_log_bug(j, __rcs_file_version__, __FILE__, __LINE__, #e), false : true)
typedef struct vproc_s *vproc_t;
@@ -43,40 +43,40 @@
bootstrap_status_t machservice_status(struct machservice *);
-vproc_t job_find(vproc_t j, const char *label);
-vproc_t job_find_by_pid(vproc_t j, pid_t p);
-vproc_t job_find_by_port(mach_port_t mp);
-vproc_t job_import(launch_data_t pload);
-launch_data_t job_import_bulk(launch_data_t pload);
-vproc_t job_new(vproc_t p, const char *label, const char *prog, const char *const *argv, const char *stdinpath, mach_port_t);
-vproc_t job_new_spawn(const char *label, const char *path, const char *workingdir, const char *const *argv, const char *const *env, mode_t *u_mask, bool w4d, bool fppc);
-vproc_t job_new_via_mach_init(vproc_t jbs, const char *cmd, uid_t uid, bool ond);
-vproc_t job_new_bootstrap(vproc_t p, mach_port_t requestorport, mach_port_t checkin_port);
-launch_data_t job_export(vproc_t j);
-launch_data_t job_export_all(void);
-void job_dispatch(vproc_t j, bool kickstart);
-void job_dispatch_all_other_semaphores(vproc_t j, vproc_t nj);
-void job_stop(vproc_t j);
-bool job_active(vproc_t j);
-void job_checkin(vproc_t j);
-const char *job_prog(vproc_t j);
-void job_remove(vproc_t j);
-void job_remove_all_inactive(vproc_t j);
-bool job_ack_port_destruction(vproc_t j, mach_port_t p);
-void job_ack_no_senders(vproc_t j);
-pid_t job_get_pid(vproc_t j);
-mach_port_t job_get_bsport(vproc_t j);
-mach_port_t job_get_reqport(vproc_t j);
-vproc_t job_get_bs(vproc_t j);
-void job_delete_anything_with_port(vproc_t jbs, mach_port_t port);
-vproc_t job_parent(vproc_t j);
-void job_uncork_fork(vproc_t j);
-struct machservice *job_lookup_service(vproc_t jbs, const char *name, bool check_parent);
-void job_foreach_service(vproc_t jbs, void (*bs_iter)(struct machservice *, void *), void *context, bool include_subjobs);
-void job_log(vproc_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
-void job_log_error(vproc_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
-void job_log_bug(vproc_t j, const char *rcs_rev, const char *path, unsigned int line, const char *test);
-kern_return_t job_handle_mpm_wait(vproc_t j, mach_port_t srp, int *waitstatus);
+vproc_t vproc_find(vproc_t j, const char *label);
+vproc_t vproc_find_by_pid(vproc_t j, pid_t p);
+vproc_t vproc_find_by_port(mach_port_t mp);
+vproc_t vproc_import(launch_data_t pload);
+launch_data_t vproc_import_bulk(launch_data_t pload);
+vproc_t vproc_new(vproc_t p, const char *label, const char *prog, const char *const *argv, const char *stdinpath, mach_port_t);
+vproc_t vproc_new_spawn(const char *label, const char *path, const char *workingdir, const char *const *argv, const char *const *env, mode_t *u_mask, bool w4d, bool fppc);
+vproc_t vproc_new_via_mach_init(vproc_t jbs, const char *cmd, uid_t uid, bool ond);
+vproc_t vproc_new_bootstrap(vproc_t p, mach_port_t requestorport, mach_port_t checkin_port);
+launch_data_t vproc_export(vproc_t j);
+launch_data_t vproc_export_all(void);
+void vproc_dispatch(vproc_t j, bool kickstart);
+void vproc_dispatch_all_other_semaphores(vproc_t j, vproc_t nj);
+void vproc_stop(vproc_t j);
+bool vproc_active(vproc_t j);
+void vproc_checkin(vproc_t j);
+const char *vproc_prog(vproc_t j);
+void vproc_remove(vproc_t j);
+void vproc_remove_all_inactive(vproc_t j);
+bool vproc_ack_port_destruction(vproc_t j, mach_port_t p);
+void vproc_ack_no_senders(vproc_t j);
+pid_t vproc_get_pid(vproc_t j);
+mach_port_t vproc_get_bsport(vproc_t j);
+mach_port_t vproc_get_reqport(vproc_t j);
+vproc_t vproc_get_bs(vproc_t j);
+void vproc_delete_anything_with_port(vproc_t jbs, mach_port_t port);
+vproc_t vproc_parent(vproc_t j);
+void vproc_uncork_fork(vproc_t j);
+struct machservice *vproc_lookup_service(vproc_t jbs, const char *name, bool check_parent);
+void vproc_foreach_service(vproc_t jbs, void (*bs_iter)(struct machservice *, void *), void *context, bool include_subjobs);
+void vproc_log(vproc_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
+void vproc_log_error(vproc_t j, int pri, const char *msg, ...) __attribute__((format(printf, 3, 4)));
+void vproc_log_bug(vproc_t j, const char *rcs_rev, const char *path, unsigned int line, const char *test);
+kern_return_t vproc_handle_mpm_wait(vproc_t j, mach_port_t srp, int *waitstatus);
extern size_t total_children;
Modified: trunk/launchd/src/launchd_mach_ipc.c
===================================================================
--- trunk/launchd/src/launchd_mach_ipc.c 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd_mach_ipc.c 2006-09-06 17:22:43 UTC (rev 22840)
@@ -91,7 +91,7 @@
static bool trusted_client_check(vproc_t j, struct ldcred *ldc);
vproc_t
-job_find_by_port(mach_port_t mp)
+vproc_find_by_port(mach_port_t mp)
{
return port_to_obj[MACH_PORT_INDEX(mp)];
}
@@ -116,7 +116,7 @@
continue;
if (status.mps_msgcount) {
- EV_SET(&kev, members[i], EVFILT_MACHPORT, 0, 0, 0, job_find_by_port(members[i]));
+ EV_SET(&kev, members[i], EVFILT_MACHPORT, 0, 0, 0, vproc_find_by_port(members[i]));
(*((kq_callback *)kev.udata))(kev.udata, &kev);
/* the callback may have tainted our ability to continue this for loop */
break;
@@ -142,7 +142,7 @@
init_ports();
- launchd_assert((root_job = job_new_bootstrap(NULL, req_port ? req_port : mach_task_self(), checkin_port)) != NULL);
+ launchd_assert((root_job = vproc_new_bootstrap(NULL, req_port ? req_port : mach_task_self(), checkin_port)) != NULL);
launchd_assumes(launchd_get_bport(&inherited_bootstrap_port) == KERN_SUCCESS);
@@ -330,19 +330,19 @@
x_bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand,
audit_token_t au_tok, mach_port_t *server_portp)
{
- vproc_t js, j = job_find_by_port(bp);
+ vproc_t js, j = vproc_find_by_port(bp);
struct ldcred ldc;
audit_token_to_launchd_cred(au_tok, &ldc);
- job_log(j, LOG_DEBUG, "Server create attempt: %s", server_cmd);
+ vproc_log(j, LOG_DEBUG, "Server create attempt: %s", server_cmd);
#define LET_MERE_MORTALS_ADD_SERVERS_TO_PID1
/* XXX - This code should go away once the per session launchd is integrated with the rest of the system */
#ifdef LET_MERE_MORTALS_ADD_SERVERS_TO_PID1
if (getpid() == 1) {
if (ldc.euid != 0 && ldc.euid != server_uid) {
- job_log(j, LOG_WARNING, "Server create: \"%s\": Will run as UID %d, not UID %d as they told us to",
+ vproc_log(j, LOG_WARNING, "Server create: \"%s\": Will run as UID %d, not UID %d as they told us to",
server_cmd, ldc.euid, server_uid);
server_uid = ldc.euid;
}
@@ -351,17 +351,17 @@
if (!trusted_client_check(j, &ldc)) {
return BOOTSTRAP_NOT_PRIVILEGED;
} else if (server_uid != getuid()) {
- job_log(j, LOG_WARNING, "Server create: \"%s\": As UID %d, we will not be able to switch to UID %d",
+ vproc_log(j, LOG_WARNING, "Server create: \"%s\": As UID %d, we will not be able to switch to UID %d",
server_cmd, getuid(), server_uid);
server_uid = getuid();
}
- js = job_new_via_mach_init(j, server_cmd, server_uid, on_demand);
+ js = vproc_new_via_mach_init(j, server_cmd, server_uid, on_demand);
if (js == NULL)
return BOOTSTRAP_NO_MEMORY;
- *server_portp = job_get_bsport(js);
+ *server_portp = vproc_get_bsport(js);
return BOOTSTRAP_SUCCESS;
}
@@ -382,13 +382,13 @@
kern_return_t
x_bootstrap_unprivileged(mach_port_t bp, mach_port_t *unprivportp)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
- job_log(j, LOG_DEBUG, "Requested unprivileged bootstrap port");
+ vproc_log(j, LOG_DEBUG, "Requested unprivileged bootstrap port");
- j = job_get_bs(j);
+ j = vproc_get_bs(j);
- *unprivportp = job_get_bsport(j);
+ *unprivportp = vproc_get_bsport(j);
return BOOTSTRAP_SUCCESS;
}
@@ -398,7 +398,7 @@
x_bootstrap_check_in(mach_port_t bp, name_t servicename, audit_token_t au_tok, mach_port_t *serviceportp)
{
static pid_t last_warned_pid = 0;
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
struct machservice *ms;
struct ldcred ldc;
@@ -406,15 +406,15 @@
trusted_client_check(j, &ldc);
- ms = job_lookup_service(j, servicename, true);
+ ms = vproc_lookup_service(j, servicename, true);
if (ms == NULL) {
- job_log(j, LOG_DEBUG, "Check-in of Mach service failed. Unknown: %s", servicename);
+ vproc_log(j, LOG_DEBUG, "Check-in of Mach service failed. Unknown: %s", servicename);
return BOOTSTRAP_UNKNOWN_SERVICE;
}
if (machservice_job(ms) != j) {
if (last_warned_pid != ldc.pid) {
- job_log(j, LOG_NOTICE, "Check-in of Mach service failed. PID %d is not privileged: %s",
+ vproc_log(j, LOG_NOTICE, "Check-in of Mach service failed. PID %d is not privileged: %s",
ldc.pid, servicename);
last_warned_pid = ldc.pid;
}
@@ -422,13 +422,13 @@
}
if (!canReceive(machservice_port(ms))) {
launchd_assumes(machservice_active(ms));
- job_log(j, LOG_DEBUG, "Check-in of Mach service failed. Already active: %s", servicename);
+ vproc_log(j, LOG_DEBUG, "Check-in of Mach service failed. Already active: %s", servicename);
return BOOTSTRAP_SERVICE_ACTIVE;
}
machservice_watch(ms);
- job_log(j, LOG_INFO, "Check-in of service: %s", servicename);
+ vproc_log(j, LOG_INFO, "Check-in of service: %s", servicename);
*serviceportp = machservice_port(ms);
return BOOTSTRAP_SUCCESS;
@@ -437,7 +437,7 @@
kern_return_t
x_bootstrap_register(mach_port_t bp, audit_token_t au_tok, name_t servicename, mach_port_t serviceport)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
struct machservice *ms;
struct ldcred ldc;
@@ -445,24 +445,24 @@
trusted_client_check(j, &ldc);
- job_log(j, LOG_DEBUG, "Mach service registration attempt: %s", servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service registration attempt: %s", servicename);
- ms = job_lookup_service(j, servicename, false);
+ ms = vproc_lookup_service(j, servicename, false);
if (ms) {
if (machservice_job(ms) != j)
return BOOTSTRAP_NOT_PRIVILEGED;
if (machservice_active(ms)) {
- job_log(j, LOG_DEBUG, "Mach service registration failed. Already active: %s", servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service registration failed. Already active: %s", servicename);
launchd_assumes(!canReceive(machservice_port(ms)));
return BOOTSTRAP_SERVICE_ACTIVE;
}
- job_checkin(machservice_job(ms));
+ vproc_checkin(machservice_job(ms));
machservice_delete(ms);
}
if (serviceport != MACH_PORT_NULL) {
- if ((ms = machservice_new(job_get_bs(j), servicename, &serviceport))) {
+ if ((ms = machservice_new(vproc_get_bs(j), servicename, &serviceport))) {
machservice_watch(ms);
} else {
return BOOTSTRAP_NO_MEMORY;
@@ -475,7 +475,7 @@
kern_return_t
x_bootstrap_look_up(mach_port_t bp, audit_token_t au_tok, name_t servicename, mach_port_t *serviceportp, mach_msg_type_name_t *ptype)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
struct machservice *ms;
struct ldcred ldc;
@@ -483,24 +483,24 @@
trusted_client_check(j, &ldc);
- ms = job_lookup_service(j, servicename, true);
+ ms = vproc_lookup_service(j, servicename, true);
- if (ms && machservice_hidden(ms) && !job_active(machservice_job(ms))) {
+ if (ms && machservice_hidden(ms) && !vproc_active(machservice_job(ms))) {
ms = NULL;
}
if (ms) {
launchd_assumes(machservice_port(ms) != MACH_PORT_NULL);
- job_log(j, LOG_DEBUG, "Mach service lookup (by PID %d): %s", ldc.pid, servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service lookup (by PID %d): %s", ldc.pid, servicename);
*serviceportp = machservice_port(ms);
*ptype = MACH_MSG_TYPE_COPY_SEND;
return BOOTSTRAP_SUCCESS;
} else if (inherited_bootstrap_port != MACH_PORT_NULL) {
- job_log(j, LOG_DEBUG, "Mach service lookup (by PID %d) forwarded: %s", ldc.pid, servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service lookup (by PID %d) forwarded: %s", ldc.pid, servicename);
*ptype = MACH_MSG_TYPE_MOVE_SEND;
return bootstrap_look_up(inherited_bootstrap_port, servicename, serviceportp);
} else {
- job_log(j, LOG_DEBUG, "Mach service lookup (by PID %d) failed: %s", ldc.pid, servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service lookup (by PID %d) failed: %s", ldc.pid, servicename);
return BOOTSTRAP_UNKNOWN_SERVICE;
}
}
@@ -508,18 +508,18 @@
kern_return_t
x_bootstrap_parent(mach_port_t bp, mach_port_t *parentport, mach_msg_type_name_t *pptype)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
- job_log(j, LOG_DEBUG, "Requested parent bootstrap port");
+ vproc_log(j, LOG_DEBUG, "Requested parent bootstrap port");
- j = job_get_bs(j);
+ j = vproc_get_bs(j);
*pptype = MACH_MSG_TYPE_MAKE_SEND;
- if (job_parent(j)) {
- *parentport = job_get_bsport(job_parent(j));
+ if (vproc_parent(j)) {
+ *parentport = vproc_get_bsport(vproc_parent(j));
} else if (MACH_PORT_NULL == inherited_bootstrap_port) {
- *parentport = job_get_bsport(j);
+ *parentport = vproc_get_bsport(j);
} else {
*pptype = MACH_MSG_TYPE_COPY_SEND;
*parentport = inherited_bootstrap_port;
@@ -564,12 +564,12 @@
bootstrap_status_array_t *serviceactivesp, unsigned int *serviceactives_cnt)
{
struct x_bootstrap_info_copyservices_cb info_resp = { NULL, NULL, NULL, 0 };
- vproc_t ji, j = job_find_by_port(bp);
+ vproc_t ji, j = vproc_find_by_port(bp);
kern_return_t result;
unsigned int cnt = 0;
- for (ji = j; ji; ji = job_parent(ji))
- job_foreach_service(ji, x_bootstrap_info_countservices, &cnt, true);
+ for (ji = j; ji; ji = vproc_parent(ji))
+ vproc_foreach_service(ji, x_bootstrap_info_countservices, &cnt, true);
result = vm_allocate(mach_task_self(), (vm_address_t *)&info_resp.service_names, cnt * sizeof(info_resp.service_names[0]), true);
if (!launchd_assumes(result == KERN_SUCCESS))
@@ -579,8 +579,8 @@
if (!launchd_assumes(result == KERN_SUCCESS))
goto out_bad;
- for (ji = j; ji; ji = job_parent(ji))
- job_foreach_service(ji, x_bootstrap_info_copyservices, &info_resp, true);
+ for (ji = j; ji; ji = vproc_parent(ji))
+ vproc_foreach_service(ji, x_bootstrap_info_copyservices, &info_resp, true);
launchd_assumes(info_resp.i == cnt);
@@ -603,21 +603,21 @@
mach_port_array_t *ports, unsigned int *ports_cnt)
{
struct x_bootstrap_info_copyservices_cb info_resp = { NULL, NULL, NULL, 0 };
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
unsigned int cnt = 0;
kern_return_t result;
if (getpid() != 1) {
- job_log(j, LOG_ERR, "Only the system launchd will transfer Mach sub-bootstraps.");
+ vproc_log(j, LOG_ERR, "Only the system launchd will transfer Mach sub-bootstraps.");
return BOOTSTRAP_NOT_PRIVILEGED;
- } else if (!job_parent(j)) {
- job_log(j, LOG_ERR, "Root Mach bootstrap cannot be transferred.");
+ } else if (!vproc_parent(j)) {
+ vproc_log(j, LOG_ERR, "Root Mach bootstrap cannot be transferred.");
return BOOTSTRAP_NOT_PRIVILEGED;
}
- job_log(j, LOG_DEBUG, "Transferring sub-bootstrap to the per session launchd.");
+ vproc_log(j, LOG_DEBUG, "Transferring sub-bootstrap to the per session launchd.");
- job_foreach_service(j, x_bootstrap_info_countservices, &cnt, false);
+ vproc_foreach_service(j, x_bootstrap_info_countservices, &cnt, false);
result = vm_allocate(mach_task_self(), (vm_address_t *)&info_resp.service_names, cnt * sizeof(info_resp.service_names[0]), true);
if (!launchd_assumes(result == KERN_SUCCESS))
@@ -627,7 +627,7 @@
if (!launchd_assumes(result == KERN_SUCCESS))
goto out_bad;
- job_foreach_service(j, x_bootstrap_info_copyservices, &info_resp, false);
+ vproc_foreach_service(j, x_bootstrap_info_copyservices, &info_resp, false);
launchd_assumes(info_resp.i == cnt);
@@ -635,8 +635,8 @@
*ports = info_resp.ports;
*servicenames_cnt = *ports_cnt = cnt;
- *reqport = job_get_reqport(j);
- *rcvright = job_get_bsport(j);
+ *reqport = vproc_get_reqport(j);
+ *rcvright = vproc_get_bsport(j);
launchd_assumes(launchd_mport_request_callback(*rcvright, NULL, true) == KERN_SUCCESS);
@@ -654,48 +654,48 @@
kern_return_t
x_bootstrap_subset(mach_port_t bp, mach_port_t requestorport, mach_port_t *subsetportp)
{
- vproc_t js, j = job_find_by_port(bp);
+ vproc_t js, j = vproc_find_by_port(bp);
int bsdepth = 0;
- while ((j = job_parent(j)) != NULL)
+ while ((j = vproc_parent(j)) != NULL)
bsdepth++;
- j = job_find_by_port(bp);
+ j = vproc_find_by_port(bp);
/* Since we use recursion, we need an artificial depth for subsets */
if (bsdepth > 100) {
- job_log(j, LOG_ERR, "Mach sub-bootstrap create request failed. Depth greater than: %d", bsdepth);
+ vproc_log(j, LOG_ERR, "Mach sub-bootstrap create request failed. Depth greater than: %d", bsdepth);
return BOOTSTRAP_NO_MEMORY;
}
- if ((js = job_new_bootstrap(j, requestorport, MACH_PORT_NULL)) == NULL) {
+ if ((js = vproc_new_bootstrap(j, requestorport, MACH_PORT_NULL)) == NULL) {
if (requestorport == MACH_PORT_NULL)
return BOOTSTRAP_NOT_PRIVILEGED;
return BOOTSTRAP_NO_MEMORY;
}
- *subsetportp = job_get_bsport(js);
+ *subsetportp = vproc_get_bsport(js);
return BOOTSTRAP_SUCCESS;
}
kern_return_t
x_bootstrap_create_service(mach_port_t bp, name_t servicename, mach_port_t *serviceportp)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
struct machservice *ms;
- if (job_prog(j)[0] == '\0') {
- job_log(j, LOG_ERR, "Mach service creation requires a target server: %s", servicename);
+ if (vproc_prog(j)[0] == '\0') {
+ vproc_log(j, LOG_ERR, "Mach service creation requires a target server: %s", servicename);
return BOOTSTRAP_NOT_PRIVILEGED;
}
- ms = job_lookup_service(j, servicename, false);
+ ms = vproc_lookup_service(j, servicename, false);
if (ms) {
- job_log(j, LOG_DEBUG, "Mach service creation attempt for failed. Already exists: %s", servicename);
+ vproc_log(j, LOG_DEBUG, "Mach service creation attempt for failed. Already exists: %s", servicename);
return BOOTSTRAP_NAME_IN_USE;
}
- job_checkin(j);
+ vproc_checkin(j);
*serviceportp = MACH_PORT_NULL;
ms = machservice_new(j, servicename, serviceportp);
@@ -713,23 +713,23 @@
kern_return_t
x_mpm_wait(mach_port_t bp, mach_port_t srp, audit_token_t au_tok, integer_t *waitstatus)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
#if 0
struct ldcred ldc;
audit_token_to_launchd_cred(au_tok, &ldc);
#endif
- return job_handle_mpm_wait(j, srp, waitstatus);
+ return vproc_handle_mpm_wait(j, srp, waitstatus);
}
kern_return_t
x_mpm_uncork_fork(mach_port_t bp, audit_token_t au_tok)
{
- vproc_t j = job_find_by_port(bp);
+ vproc_t j = vproc_find_by_port(bp);
if (!j)
return BOOTSTRAP_NOT_PRIVILEGED;
- job_uncork_fork(j);
+ vproc_uncork_fork(j);
return 0;
}
@@ -740,7 +740,7 @@
uint32_t argc, uint32_t envc, uint64_t flags, uint16_t mig_umask,
pid_t *child_pid, mach_port_t *obsvr_port)
{
- vproc_t jr, j = job_find_by_port(bp);
+ vproc_t jr, j = vproc_find_by_port(bp);
struct ldcred ldc;
size_t offset = 0;
char *tmpp;
@@ -754,7 +754,7 @@
#if 0
if (ldc.asid != inherited_asid) {
- job_log(j, LOG_ERR, "Security: PID %d (ASID %d) was denied a request to spawn a process in this session (ASID %d)",
+ vproc_log(j, LOG_ERR, "Security: PID %d (ASID %d) was denied a request to spawn a process in this session (ASID %d)",
ldc.pid, ldc.asid, inherited_asid);
return BOOTSTRAP_NOT_PRIVILEGED;
}
@@ -790,7 +790,7 @@
}
}
- jr = job_new_spawn(label, path, workingdir, argv, env, flags & SPAWN_HAS_UMASK ? &mig_umask : NULL,
+ jr = vproc_new_spawn(label, path, workingdir, argv, env, flags & SPAWN_HAS_UMASK ? &mig_umask : NULL,
flags & SPAWN_WANTS_WAIT4DEBUGGER, flags & SPAWN_WANTS_FORCE_PPC);
if (jr == NULL) switch (errno) {
@@ -800,12 +800,12 @@
return BOOTSTRAP_NO_MEMORY;
}
- job_log(j, LOG_INFO, "Spawned with flags:%s%s",
+ vproc_log(j, LOG_INFO, "Spawned with flags:%s%s",
flags & SPAWN_WANTS_FORCE_PPC ? " ppc": "",
flags & SPAWN_WANTS_WAIT4DEBUGGER ? " stopped": "");
- *child_pid = job_get_pid(jr);
- *obsvr_port = job_get_bsport(jr);
+ *child_pid = vproc_get_pid(jr);
+ *obsvr_port = vproc_get_bsport(jr);
return BOOTSTRAP_SUCCESS;
}
@@ -815,7 +815,7 @@
{
/* This message is sent to us when a receive right is returned to us. */
- if (!job_ack_port_destruction(root_job, rights)) {
+ if (!vproc_ack_port_destruction(root_job, rights)) {
launchd_assumes(launchd_mport_close_recv(rights) == KERN_SUCCESS);
}
@@ -837,7 +837,7 @@
kern_return_t
do_mach_notify_no_senders(mach_port_t notify, mach_port_mscount_t mscount)
{
- vproc_t j = job_find_by_port(notify);
+ vproc_t j = vproc_find_by_port(notify);
/* This message is sent to us when the last customer of one of our objects
* goes away.
@@ -846,7 +846,7 @@
if (!launchd_assumes(j != NULL))
return KERN_FAILURE;
- job_ack_no_senders(j);
+ vproc_ack_no_senders(j);
return KERN_SUCCESS;
}
@@ -874,7 +874,7 @@
inherited_bootstrap_port = MACH_PORT_NULL;
}
- job_delete_anything_with_port(root_job, name);
+ vproc_delete_anything_with_port(root_job, name);
/* A dead-name notification about a port appears to increment the
* rights on said port. Let's deallocate it so that we don't leak
@@ -908,7 +908,7 @@
if (last_warned_pid == ldc->pid)
return false;
- job_log(j, LOG_NOTICE, "Security: PID %d (ASID %d) was leaked into this session (ASID %d). This will be denied in the future.", ldc->pid, ldc->asid, inherited_asid);
+ vproc_log(j, LOG_NOTICE, "Security: PID %d (ASID %d) was leaked into this session (ASID %d). This will be denied in the future.", ldc->pid, ldc->asid, inherited_asid);
last_warned_pid = ldc->pid;
Modified: trunk/launchd/src/launchd_unix_ipc.c
===================================================================
--- trunk/launchd/src/launchd_unix_ipc.c 2006-09-06 17:05:38 UTC (rev 22839)
+++ trunk/launchd/src/launchd_unix_ipc.c 2006-09-06 17:22:43 UTC (rev 22840)
@@ -332,8 +332,8 @@
if (data == NULL) {
if (!strcmp(cmd, LAUNCH_KEY_CHECKIN)) {
if (rmc->c->j) {
- resp = job_export(rmc->c->j);
- job_checkin(rmc->c->j);
+ resp = vproc_export(rmc->c->j);
+ vproc_checkin(rmc->c->j);
} else {
resp = launch_data_new_errno(EACCES);
}
@@ -347,7 +347,7 @@
launchd_single_user();
resp = launch_data_new_errno(0);
} else if (!strcmp(cmd, LAUNCH_KEY_GETJOBS)) {
- resp = job_export_all();
+ resp = vproc_export_all();
ipc_revoke_fds(resp);
} else if (!strcmp(cmd, LAUNCH_KEY_GETRESOURCELIMITS)) {
resp = adjust_rlimits(NULL);
@@ -383,28 +383,28 @@
launch_data_set_bool(resp, batch_disabler_count == 0);
}
} else if (!strcmp(cmd, LAUNCH_KEY_STARTJOB)) {
- if ((j = job_find(root_job, launch_data_get_string(data))) != NULL) {
- job_dispatch(j, true);
+ if ((j = vproc_find(root_job, launch_data_get_string(data))) != NULL) {
+ vproc_dispatch(j, true);
errno = 0;
}
resp = launch_data_new_errno(errno);
} else if (!strcmp(cmd, LAUNCH_KEY_STOPJOB)) {
- if ((j = job_find(root_job, launch_data_get_string(data))) != NULL) {
- job_stop(j);
+ if ((j = vproc_find(root_job, launch_data_get_string(data))) != NULL) {
+ vproc_stop(j);
errno = 0;
}
resp = launch_data_new_errno(errno);
} else if (!strcmp(cmd, LAUNCH_KEY_REMOVEJOB)) {
- if ((j = job_find(root_job, launch_data_get_string(data))) != NULL) {
- job_remove(j);
+ if ((j = vproc_find(root_job, launch_data_get_string(data))) != NULL) {
+ vproc_remove(j);
errno = 0;
}
resp = launch_data_new_errno(errno);
} else if (!strcmp(cmd, LAUNCH_KEY_SUBMITJOB)) {
if (launch_data_get_type(data) == LAUNCH_DATA_ARRAY) {
- resp = job_import_bulk(data);
+ resp = vproc_import_bulk(data);
} else {
- if (job_import(data))
+ if (vproc_import(data))
errno = 0;
resp = launch_data_new_errno(errno);
}
@@ -417,17 +417,17 @@
} else if (!strcmp(cmd, LAUNCH_KEY_SETRESOURCELIMITS)) {
resp = adjust_rlimits(data);
} else if (!strcmp(cmd, LAUNCH_KEY_GETJOB)) {
- if ((j = job_find(root_job, launch_data_get_string(data))) == NULL) {
+ if ((j = vproc_find(root_job, launch_data_get_string(data))) == NULL) {
resp = launch_data_new_errno(errno);
} else {
- resp = job_export(j);
+ resp = vproc_export(j);
ipc_revoke_fds(resp);
}
} else if (!strcmp(cmd, LAUNCH_KEY_GETJOBWITHHANDLES)) {
- if ((j = job_find(root_job, launch_data_get_string(data))) == NULL) {
+ if ((j = vproc_find(root_job, launch_data_get_string(data))) == NULL) {
resp = launch_data_new_errno(errno);
} else {
- resp = job_export(j);
+ resp = vproc_export(j);
}
} else if (!strcmp(cmd, LAUNCH_KEY_SETLOGMASK)) {
resp = launch_data_new_integer(setlogmask(launch_data_get_integer(data)));
@@ -438,7 +438,7 @@
} else if (!strcmp(cmd, LAUNCH_KEY_SETSTDERR)) {
resp = launchd_setstdio(STDERR_FILENO, data);
} else if (!strcmp(cmd, LAUNCH_KEY_BATCHCONTROL)) {
- batch_job_enable(launch_data_get_bool(data), rmc->c);
+ batch_vproc_enable(launch_data_get_bool(data), rmc->c);
resp = launch_data_new_errno(0);
}
@@ -448,7 +448,7 @@
void
ipc_close(struct conncb *c)
{
- batch_job_enable(true, c);
+ batch_vproc_enable(true, c);
SLIST_REMOVE(&connections, c, conncb, sle);
launchd_close(c->conn);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20060906/7a18ab9a/attachment.html
More information about the launchd-changes
mailing list