Revision: 22919 http://trac.macosforge.org/projects/launchd/changeset/22919 Author: zarzycki@apple.com Date: 2006-10-25 18:18:08 -0700 (Wed, 25 Oct 2006) Log Message: ----------- Make the internal logging code accessible to jobs as private API. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c trunk/launchd/src/launchd_mig_types.defs trunk/launchd/src/libvproc.c trunk/launchd/src/libvproc_internal.h trunk/launchd/src/libvproc_private.h trunk/launchd/src/protocol_job.defs Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/launchd_core_logic.c 2006-10-26 01:18:08 UTC (rev 22919) @@ -3622,6 +3622,18 @@ } kern_return_t +job_mig_log(job_t j, int pri, int err, logmsg_t msg) +{ + if ((errno = err)) { + job_log_error(j, pri, "%s", msg); + } else { + job_log(j, pri, "%s", msg); + } + + return 0; +} + +kern_return_t job_mig_check_in(job_t j, name_t servicename, mach_port_t *serviceportp) { static pid_t last_warned_pid = 0; Modified: trunk/launchd/src/launchd_mig_types.defs =================================================================== --- trunk/launchd/src/launchd_mig_types.defs 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/launchd_mig_types.defs 2006-10-26 01:18:08 UTC (rev 22919) @@ -25,6 +25,7 @@ type pid_t = integer_t; type get_set_int_key_t = integer_t; +type logmsg_t = c_string[*:2048]; type cmd_t = c_string[512]; type cmd_array_t = ^array [] of cmd_t; type name_t = c_string[128]; Modified: trunk/launchd/src/libvproc.c =================================================================== --- trunk/launchd/src/libvproc.c 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/libvproc.c 2006-10-26 01:18:08 UTC (rev 22919) @@ -27,6 +27,7 @@ #include <mach/vm_map.h> #include <sys/param.h> #include <stdlib.h> +#include <stdio.h> #include <errno.h> #include "liblaunch_public.h" @@ -175,3 +176,34 @@ return (vproc_err_t)_vproc_set_global_on_demand; } + +static void +_vproc_logv(int pri, int err, const char *msg, va_list ap) +{ + char flat_msg[3000]; + + snprintf(flat_msg, sizeof(flat_msg) - 1, msg, ap); + flat_msg[sizeof(flat_msg) - 1] = '\0'; + + vproc_mig_log(bootstrap_port, pri, err, flat_msg); +} + +void +_vproc_log(int pri, const char *msg, ...) +{ + va_list ap; + + va_start(ap, msg); + _vproc_logv(pri, 0, msg, ap); + va_end(ap); +} + +void +_vproc_log_error(int pri, const char *msg, ...) +{ + va_list ap; + + va_start(ap, msg); + _vproc_logv(pri, errno, msg, ap); + va_end(ap); +} Modified: trunk/launchd/src/libvproc_internal.h =================================================================== --- trunk/launchd/src/libvproc_internal.h 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/libvproc_internal.h 2006-10-26 01:18:08 UTC (rev 22919) @@ -24,6 +24,7 @@ #include "libbootstrap_public.h" typedef char * _internal_string_t; +typedef char * logmsg_t; typedef mach_port_t vproc_mig_t; typedef enum { LAST_EXIT_STATUS = 1, Modified: trunk/launchd/src/libvproc_private.h =================================================================== --- trunk/launchd/src/libvproc_private.h 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/libvproc_private.h 2006-10-26 01:18:08 UTC (rev 22919) @@ -30,6 +30,9 @@ vproc_err_t _vproc_get_last_exit_status(int *wstatus); vproc_err_t _vproc_set_global_on_demand(bool val); +void _vproc_log(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3))); +void _vproc_log_error(int pri, const char *msg, ...) __attribute__((format(printf, 2, 3))); + #pragma GCC visibility pop __END_DECLS Modified: trunk/launchd/src/protocol_job.defs =================================================================== --- trunk/launchd/src/protocol_job.defs 2006-10-25 16:36:57 UTC (rev 22918) +++ trunk/launchd/src/protocol_job.defs 2006-10-26 01:18:08 UTC (rev 22919) @@ -119,3 +119,9 @@ __bs_port : job_t; __key : get_set_int_key_t; __val : int64_t); + +simpleroutine log( + __bs_port : job_t; + __pri : integer_t; + __err : integer_t; + __msg : logmsg_t);
participants (1)
-
source_changes@macosforge.org