From f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Sun, 22 Apr 2012 10:58:23 +0800 Subject: [PATCH] * src/sysdep.c (list_system_processes): Support Darwin. Fixes: debbugs:5725 --- src/ChangeLog | 4 ++++ src/sysdep.c | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 549a5787a5..a5777058d9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2012-04-22 Leo Liu + + * sysdep.c (list_system_processes): Support Darwin (Bug#5725). + 2012-04-22 Paul Eggert * sysdep.c [__FreeBSD__]: Minor cleanups. diff --git a/src/sysdep.c b/src/sysdep.c index d33e7a21ac..81529fc7d9 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -44,6 +44,10 @@ along with GNU Emacs. If not, see . */ #include #endif +#ifdef DARWIN_OS +#include +#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); -- 2.20.1