diff options
| author | Leo Liu | 2012-04-22 10:58:23 +0800 |
|---|---|---|
| committer | Leo Liu | 2012-04-22 10:58:23 +0800 |
| commit | f01769f9ca9cc718cc5ae3c9b6f2669ad8d93c24 (patch) | |
| tree | 105c7c078f4b99c94d7a07f5c1498acf1c5011aa /src | |
| parent | 5790543d1fa79f5302c2415fd0d3294796008eda (diff) | |
| download | emacs-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/ChangeLog | 4 | ||||
| -rw-r--r-- | src/sysdep.c | 18 |
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 @@ | |||
| 1 | 2012-04-22 Leo Liu <sdl.web@gmail.com> | ||
| 2 | |||
| 3 | * sysdep.c (list_system_processes): Support Darwin (Bug#5725). | ||
| 4 | |||
| 1 | 2012-04-22 Paul Eggert <eggert@cs.ucla.edu> | 5 | 2012-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 | ||
| 2541 | Lisp_Object | 2545 | Lisp_Object |
| 2542 | list_system_processes (void) | 2546 | list_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); |