diff options
author | Yaakov Selkowitz <yselkowi@redhat.com> | 2011-04-01 09:00:21 +0000 |
---|---|---|
committer | Yaakov Selkowitz <yselkowi@redhat.com> | 2011-04-01 09:00:21 +0000 |
commit | 9ca65531e0ed9916b9fd94c8b9fd9a41a0559d6a (patch) | |
tree | 798e9a868d82eac30953a6105c15ca1b0fb2c0bc | |
parent | 40afcae3565fc6dee9452bf0d7c0ae64c27208d8 (diff) | |
download | cygnal-9ca65531e0ed9916b9fd94c8b9fd9a41a0559d6a.tar.gz cygnal-9ca65531e0ed9916b9fd94c8b9fd9a41a0559d6a.tar.bz2 cygnal-9ca65531e0ed9916b9fd94c8b9fd9a41a0559d6a.zip |
* fhandler_proc.cc (format_proc_loadavg): Add running/total
processes as fourth component of output.
* fhandler_process.cc (get_process_state): Make non-static.
Add FIXME about generating an 'O' flag.
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_proc.cc | 16 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_process.cc | 6 |
3 files changed, 24 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 37b560ea3..9e7d53fad 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2011-04-01 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> + + * fhandler_proc.cc (format_proc_loadavg): Add running/total + processes as fourth component of output. + * fhandler_process.cc (get_process_state): Make non-static. + Add FIXME about generating an 'O' flag. + 2011-04-01 Corinna Vinschen <corinna@vinschen.de> * fhandler_random.cc (fhandler_dev_random::crypt_gen_random): diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc index a6636ae90..6ae7d807d 100644 --- a/winsup/cygwin/fhandler_proc.cc +++ b/winsup/cygwin/fhandler_proc.cc @@ -374,9 +374,21 @@ format_proc_version (void *, char *&destbuf) static _off64_t format_proc_loadavg (void *, char *&destbuf) { + extern int get_process_state (DWORD dwProcessId); + unsigned running = 0; + winpids pids ((DWORD) 0); + + for (unsigned i = 0; i < pids.npids; i++) + switch (get_process_state (i)) { + case 'O': + case 'R': + running++; + break; + } + destbuf = (char *) crealloc_abort (destbuf, 16); - return __small_sprintf (destbuf, "%u.%02u %u.%02u %u.%02u\n", - 0, 0, 0, 0, 0, 0); + return __small_sprintf (destbuf, "%u.%02u %u.%02u %u.%02u %u/%u\n", + 0, 0, 0, 0, 0, 0, running, pids.npids); } static _off64_t diff --git a/winsup/cygwin/fhandler_process.cc b/winsup/cygwin/fhandler_process.cc index 526cd3322..80ca6573f 100644 --- a/winsup/cygwin/fhandler_process.cc +++ b/winsup/cygwin/fhandler_process.cc @@ -79,8 +79,7 @@ static const virt_tab_t process_tab[] = static const int PROCESS_LINK_COUNT = (sizeof (process_tab) / sizeof (virt_tab_t)) - 1; - -static int get_process_state (DWORD dwProcessId); +int get_process_state (DWORD dwProcessId); static bool get_mem_values (DWORD dwProcessId, unsigned long *vmsize, unsigned long *vmrss, unsigned long *vmtext, unsigned long *vmdata, unsigned long *vmlib, @@ -928,7 +927,7 @@ format_process_mounts (void *data, char *&destbuf) return len; } -static int +int get_process_state (DWORD dwProcessId) { /* @@ -975,6 +974,7 @@ get_process_state (DWORD dwProcessId) state = 'S'; for (unsigned i = 0; i < sp->ThreadCount; i++) { + /* FIXME: at some point we should consider generating 'O' */ if (st->State == StateRunning || st->State == StateReady) { |