From: Leo Liu Date: Sun, 22 Apr 2012 02:58:23 +0000 (+0800) Subject: * src/sysdep.c (list_system_processes): Support Darwin. X-Git-Tag: emacs-24.2.90~471^2~319 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24;p=emacs.git * src/sysdep.c (list_system_processes): Support Darwin. Fixes: debbugs:5725 --- diff --git a/src/ChangeLog b/src/ChangeLog index 549a5787a52..a5777058d9c 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 d33e7a21acc..81529fc7d9b 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);