Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2011-04-01 13:00:21 +0400
committerYaakov Selkowitz <yselkowi@redhat.com>2011-04-01 13:00:21 +0400
commit9ca65531e0ed9916b9fd94c8b9fd9a41a0559d6a (patch)
tree798e9a868d82eac30953a6105c15ca1b0fb2c0bc
parent40afcae3565fc6dee9452bf0d7c0ae64c27208d8 (diff)
* 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/ChangeLog7
-rw-r--r--winsup/cygwin/fhandler_proc.cc16
-rw-r--r--winsup/cygwin/fhandler_process.cc6
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)
{