aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLeo Liu2012-04-22 10:58:23 +0800
committerLeo Liu2012-04-22 10:58:23 +0800
commitf01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24 (patch)
tree105c7c078f4b99c94d7a07f5c1498acf1c5011aa /src
parent5790543d1fa79f5302c2415fd0d3294796008eda (diff)
downloademacs-f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24.tar.gz
emacs-f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24.zip
* src/sysdep.c (list_system_processes): Support Darwin.
Fixes: debbugs:5725
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog4
-rw-r--r--src/sysdep.c18
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 549a5787a52..a5777058d9c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12012-04-22 Leo Liu <sdl.web@gmail.com>
2
3 * sysdep.c (list_system_processes): Support Darwin (Bug#5725).
4
12012-04-22 Paul Eggert <eggert@cs.ucla.edu> 52012-04-22 Paul Eggert <eggert@cs.ucla.edu>
2 6
3 * sysdep.c [__FreeBSD__]: Minor cleanups. 7 * 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 <http://www.gnu.org/licenses/>. */
44#include <math.h> 44#include <math.h>
45#endif 45#endif
46 46
47#ifdef DARWIN_OS
48#include <sys/sysctl.h>
49#endif
50
47#ifdef WINDOWSNT 51#ifdef WINDOWSNT
48#define read sys_read 52#define read sys_read
49#define write sys_write 53#define write sys_write
@@ -2536,12 +2540,16 @@ list_system_processes (void)
2536 return proclist; 2540 return proclist;
2537} 2541}
2538 2542
2539#elif defined __FreeBSD__ 2543#elif defined BSD_SYSTEM
2540 2544
2541Lisp_Object 2545Lisp_Object
2542list_system_processes (void) 2546list_system_processes (void)
2543{ 2547{
2548#ifdef DARWIN_OS
2549 int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL};
2550#else
2544 int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PROC}; 2551 int mib[] = {CTL_KERN, KERN_PROC, KERN_PROC_PROC};
2552#endif
2545 size_t len; 2553 size_t len;
2546 struct kinfo_proc *procs; 2554 struct kinfo_proc *procs;
2547 size_t i; 2555 size_t i;
@@ -2562,7 +2570,13 @@ list_system_processes (void)
2562 GCPRO1 (proclist); 2570 GCPRO1 (proclist);
2563 len /= sizeof (struct kinfo_proc); 2571 len /= sizeof (struct kinfo_proc);
2564 for (i = 0; i < len; i++) 2572 for (i = 0; i < len; i++)
2565 proclist = Fcons (make_fixnum_or_float (procs[i].ki_pid), proclist); 2573 {
2574#ifdef DARWIN_OS
2575 proclist = Fcons (make_fixnum_or_float (procs[i].kp_proc.p_pid), proclist);
2576#else
2577 proclist = Fcons (make_fixnum_or_float (procs[i].ki_pid), proclist);
2578#endif
2579 }
2566 UNGCPRO; 2580 UNGCPRO;
2567 2581
2568 xfree (procs); 2582 xfree (procs);