aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/fhandler_virtual.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2002-05-12 01:37:48 +0000
committerChristopher Faylor <me@cgf.cx>2002-05-12 01:37:48 +0000
commit9ba913a56dd6eb5af664cb3e29fa3e9a8d7a3752 (patch)
tree383aa2254cb793d0b3e606e8c981894b2b778d5a /winsup/cygwin/fhandler_virtual.cc
parent558ab81ed169c70460dcd502050f76b3d47fb9b0 (diff)
downloadnewlib-9ba913a56dd6eb5af664cb3e29fa3e9a8d7a3752.zip
newlib-9ba913a56dd6eb5af664cb3e29fa3e9a8d7a3752.tar.gz
newlib-9ba913a56dd6eb5af664cb3e29fa3e9a8d7a3752.tar.bz2
* autoload.cc: Add dynamic load statements for 'ZwQueryInformationProcess' and
'ZwQueryVirtualMemory'. * fhandler.h: Change type of bufalloc and filesize members of fhandler_virtual from int to size_t. Change type of position member from __off32_t to __off64_t. Add new fileid member to fhandler_virtual class. Make seekdir take an __off64_t argument. Make lseek take an __off64_t argument. Add fill_filebuf method to fhandler_virtual. Add fill_filebuf method to fhandler_proc. Add fill_filebuf method to fhandler_registry. Add fill_filebuf method to fhandler_process. Add saved_pid and saved_p members to fhandler_process. * fhandler_proc.cc (proc_listing_array): Add 'loadavg', 'meminfo', and 'stat'. (proc_fhandlers array): Ditto. (fhandler_proc::open): Use fill_filebuf to flesh out the file contents. (fhandler_proc::fill_filebuf): New method. (fhandler_proc::format_proc_meminfo): Ditto. (fhandler_proc::format_proc_stat): Ditto. (fhandler_proc::format_proc_uptime): Ditto. * fhandler_process.cc (process_listing): Add 'stat' and 'statm'. (fhandler_process::fstat): Find the _pinfo structure for the process named in the filename. Return ENOENT if the process is no longer around. Set the gid and uid fields of the stat structure. (fhandler_process::open): Store pid and pointer to _pinfo structure in saved_pid and saved_p respectively. Use fill_filebuf to flesh out file contents. (fhandler_proc::fill_filebuf): New method. (format_process_stat): New function. (format_process_status): Ditto. (format_process_statm): Ditto. (get_process_state): Ditto. (get_mem_values): Ditto. * fhandler_registry.cc (fhandler_registry::seekdir): Change argument type from __off32_t to __off64_t. (fhandler_registry::fill_filebuf): New method. * fhandler_virtual.cc (fhandler_virtual::seekdir): Change argument type from __off32_t to __off64_t. (fhandler_virtual::lseek): Ditto. (fhandler_virtual::fill_filebuf): New method. (fhandler_virtual::fhandler_virtual): Initialise fileid to -1. * wincap.cc: Set flag has_process_io_counters appropriately. * wincap.h: Add flag has_process_io_counters.
Diffstat (limited to 'winsup/cygwin/fhandler_virtual.cc')
-rw-r--r--winsup/cygwin/fhandler_virtual.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/winsup/cygwin/fhandler_virtual.cc b/winsup/cygwin/fhandler_virtual.cc
index fa774f0..29b7ceb 100644
--- a/winsup/cygwin/fhandler_virtual.cc
+++ b/winsup/cygwin/fhandler_virtual.cc
@@ -27,7 +27,8 @@ details. */
#include <dirent.h>
fhandler_virtual::fhandler_virtual (DWORD devtype):
- fhandler_base (devtype), filebuf (NULL), bufalloc (-1)
+ fhandler_base (devtype), filebuf (NULL), bufalloc ((size_t) -1),
+ fileid (-1)
{
}
@@ -89,7 +90,7 @@ __off64_t fhandler_virtual::telldir (DIR * dir)
}
void
-fhandler_virtual::seekdir (DIR * dir, __off32_t loc)
+fhandler_virtual::seekdir (DIR * dir, __off64_t loc)
{
dir->__d_position = loc;
return;
@@ -109,8 +110,13 @@ fhandler_virtual::closedir (DIR * dir)
}
__off64_t
-fhandler_virtual::lseek (__off32_t offset, int whence)
+fhandler_virtual::lseek (__off64_t offset, int whence)
{
+ /*
+ * On Linux, when you lseek within a /proc file,
+ * the contents of the file are updated.
+ */
+ fill_filebuf ();
switch (whence)
{
case SEEK_SET:
@@ -124,7 +130,7 @@ fhandler_virtual::lseek (__off32_t offset, int whence)
break;
default:
set_errno (EINVAL);
- return (__off32_t) -1;
+ return (__off64_t) -1;
}
return position;
}
@@ -214,3 +220,8 @@ fhandler_virtual::exists (const char *path)
{
return 0;
}
+
+void
+fhandler_virtual::fill_filebuf ()
+{
+}