diff options
author | Leo Liu <sdl.web@gmail.com> | 2012-04-22 10:58:23 +0800 |
---|---|---|
committer | Leo Liu <sdl.web@gmail.com> | 2012-04-22 10:58:23 +0800 |
commit | f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24 (patch) | |
tree | 105c7c078f4b99c94d7a07f5c1498acf1c5011aa /src/sysdep.c | |
parent | 5790543d1fa79f5302c2415fd0d3294796008eda (diff) | |
download | emacs-f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24.tar.gz |
* src/sysdep.c (list_system_processes): Support Darwin.
Fixes: debbugs:5725
Diffstat (limited to 'src/sysdep.c')
-rw-r--r-- | src/sysdep.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index d33e7a21acc..81529fc7d9b 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -44,6 +44,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <math.h> #endif +#ifdef DARWIN_OS +#include <sys/sysctl.h> +#endif + #ifdef WINDOWSNT #define read sys_read #define write sys_write @@ -2536,12 +2540,16 @@ list_system_processes (void) return proclist; } -#elif defined __FreeBSD__ +#elif defined BSD_SYSTEM Lisp_Object list_system_processes (void) { +#ifdef DARWIN_OS + int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL}; +#else int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PROC}; +#endif size_t len; struct kinfo_proc *procs; size_t i; @@ -2562,7 +2570,13 @@ list_system_processes (void) GCPRO1 (proclist); len /= sizeof (struct kinfo_proc); for (i = 0; i < len; i++) - proclist = Fcons (make_fixnum_or_float (procs[i].ki_pid), proclist); + { +#ifdef DARWIN_OS + proclist = Fcons (make_fixnum_or_float (procs[i].kp_proc.p_pid), proclist); +#else + proclist = Fcons (make_fixnum_or_float (procs[i].ki_pid), proclist); +#endif + } UNGCPRO; xfree (procs); |