summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-06-29procfs: keep old config values if the parsing failsJustus Winter
Previously if strtol failed the previous configuration value would get overwritten. Prevent this by storing the result in a temporary variable and update the configuration if the argument was parsed correctly and passed the sanity checks. * procfs/main.c (argp_parser): Keep old configuration in case a malformed value is encountered.
2013-06-29procfs: fix the error handling in argp_parserSamuel Thibault
Do not exit using error (1, ..) but gracefully handle the error using argp_error. Also fix a typo ("the a user") while touching these lines. * procfs/main.c (argp_parser): Proper error handling. (argp_parser): Fix typo.
2013-03-02Remove old hack for the "stat" permissionsPino Toscano
7550343b09a94dc1c659ad74dc75b3b77e7ab0bc added a better way to set the permissions of that file, so this old hack is not needed anymore. * process.c (process_lookup_pid): Do not change the mode of ENTRIES[2].hook.
2013-01-12Report VM cache size in meminfoRichard Braun
* rootdir.c: Include <mach/gnumach.h> and <mach/vm_cache_statistics.h>. (rootdir_gc_meminfo): Call vm_cache_statistics and return the VM cache size.
2012-12-06Simple implementation of statfsPino Toscano
Initial implementation of statfs reply, just returning the filesystem type and its id. * netfs.c: Include <sys/statvfs.h> and <unistd.h>. (netfs_attempt_statfs): Implement.
2012-11-27Move procfs to pthreadsRichard Braun
2012-10-19Fix procfs linkCyril Roelandt
Makefile (LIBS): Add -lfshelp
2012-09-11Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/procfs into ↵Samuel Thibault
jkoenig/master
2012-09-11PID stat/status: show only the first wordPino Toscano
If a process changed its title to a multiword string, show only the first word of it. * process.c (args_filename_length): New function. (process_file_gc_stat): Use args_filename_length. (process_file_gc_status): Likewise.
2012-07-12Merge jkoenig/master into master.Thomas Schwinge
This branch supersedes the previous one.
2012-01-14PID stat/status: show only the file name of processesPino Toscano
The Linux /proc fs shows only the file name of processes in the `stat' and `status' files of every process directory, so adapt also procfs to show process file names. Add a new `args_filename` function, much similar to GNU's `basename' but returning the original string also when the resulting file name is an empty string. * process.c (args_filename): New function. (process_file_gc_stat): Wrap the `proc_stat_args' result with `args_filename'. (process_file_gc_status): Likewise.
2011-12-27Revert "Do not use msgport information"Samuel Thibault
This reverts commit d9fc76bd4e8c9a459fad7152135b738496318415, as it breaks /proc/pid/stat
2011-12-27Do not use msgport informationSamuel Thibault
* process.c (process_lookup_pid): Set PSTAT_NO_MSGPORT flag. * rootdir.c (get_boottime, get_idletime, rootdir_gc_cmdline): Set PSTAT_NO_MSGPORT flag.
2011-02-22Add Buffers and Cached to /proc/meminfoSamuel Thibault
* rootdir.c (rootdir_gc_meminfo): Add Buffers and Cached, set to 0.
2010-09-14Use 2 instead of 42 as the parent inode numberJeremie Koenig
* procfs.c (procfs_make_ino): Use 2 rather than 42 as a temporary hack, since 2 is the root's inode with ext2fs.
2010-09-14Use the user-provided kernel PID for uptimeJeremie Koenig
* rootdir.c (get_boottime, get_idletime): replace KERNEL_PID with the opt_kernel_pid command-line option. * main.c (argp): Document the change.
2010-09-14Add copyright noticesJeremie Koenig
* dircat.c, dircat.h, main.c, main.h, netfs.c, process.c, process.h, procfs.c, procfs.h, procfs_dir.c, procfs_dir.h, proclist.c, proclist.h, rootdir.c, rootdir.h: Add copyright notices.
2010-08-30Update the to-do list.Jeremie Koenig
* TODO: Add more entries.
2010-08-30Add some comments in rootdir.cJeremie Koenig
* rootdir.c: Add page breaks to separate sections and add header comments for them.
2010-08-30Add swap information to the top-level stat fileJeremie Koenig
* rootdir.c (rootdir_gc_meminfo): Add swap information. * TODO: Update.
2010-08-30Add a PROFILE modeJeremie Koenig
* Makefile: Change FOOFLAGS defaults to appropriate values when $(PROFILE) is defined. * rootdir.c: Add an "exit" file, which causes exit to be called when looked up, so that profiling data can be written to disk.
2010-08-30Fix leak in error caseJeremie Koenig
* process.c (process_lookup_pid): Fix leak in error case.
2010-08-30Refresh nodes when they're read from the start.Jeremie Koenig
This is necessary for top, for instance, which keeps some files open and re-reads them regularly. As an extra bonus we can drop the refresh hack. * procfs.c, procfs.h: Remove the refresh hack. (procfs_refresh): New function, invalidates the cached contents. * netfs.c (netfs_attempt_read, netfs_get_dirents): Call procfs_refresh when the read is from offset 0. * proclist.c (proclist_make_node): Remove the refresh hack. * dircat.c (dircat_make_node): Likewise. (dircat_get_contents): Use procfs_refresh to avoid keeping old data from the component nodes.
2010-08-30Make sure the clock never runs backwards.Jeremie Koenig
* process.c, rootdir.c: When converting timeval structures into seconds or jiffies, make sure that floating point rounding errors don't make the clock the result jump backwards on second boundaries.
2010-08-30Fix the global idle timeJeremie Koenig
* rootdir.c: Replace INIT_PID by KERNEL_PID, for boot time and idle time purposes. (get_idletime): New function, queries the kernel's idle thread. (rootdir_gc_uptime, rootdir_gc_stat): Use the new function and provide the real idle time.
2010-08-30Cleanup pass on process.cJeremie Koenig
* process.c: Reorder some of the code. Improve comments. Jiffies and clock tick are the same thing, right? Replace the stat mode and cleanup hacks by more straightforward solutions.
2010-08-30Revamp procfs_dirJeremie Koenig
* procfs_dir.c, procfs_dir.h: Revamp the interface to make the more complicated use cases somewhat less hackish. * process.c: Update, specify a default make_node function. * rootdir.c: Likewise; make this optional "self" link use case somewhat less hackish.
2010-08-30Improve the interface for dircat_make_nodeJeremie Koenig
* dircat.c, dircat.h (dircat_make_node): Use an explicit array size for DIRS, fail with ENOMEM is any of them is NULL, and release the reference on the non-NULL nodes on any error. * main.c (root_make_node): Use the new interface.
2010-08-30Detect asprintf's ENOMEM in procfs.c rather than everywhereJeremie Koenig
* procfs.h: Make CONTENTS_LEN an ssize_t rather than a size_t, and document the change. * procfs.c (procfs_get_contents): Initialize CONTENTS_LEN to a negative value, and fail with ENOMEM if it's still negative after the callback returns. (everywhere): Update to ssize_t. * dircat.c, netfs.c, process.c, procfs_dir.c, proclist.c, rootdir.c: Update to ssize_t and the new GET_CONTENTS semantics.
2010-08-30Make contents a char* to avoid typecasts all over the placeJeremie Koenig
* procfs.h (procfs_cleanup_contents_with_free, procfs_cleanup_contents_with_vm_deallocate, procfs_get_contents, struct procfs_ops): Change CONTENTS from a void pointer to a char one. * dircat.c, netfs.c, process.c, procfs.c, procfs_dir.c, proclist.c, rootdir.c: Update.
2010-08-30Remove the unused procfs_file moduleJeremie Koenig
* procfs_file.c, procfs_file.h: Remove. * Makefile: Remove procfs_file.
2010-08-30Fix the handling of processes without an ownerJeremie Koenig
* main.c (argp_parser): New option --anonymous-owner. * main.h: Publish it. * process.c (process_lookup_pid): Use it to set the file owner uid of non-owned processes.
2010-08-30Use a global ps_contextJeremie Koenig
* proclist.c, proclist.h (proclist_create_node): Use a ps_context passed by the caller; errors are no longer possible, rename to proclist_make_node and change the signature accordingly. * rootdir.c, rootdir.h (rootdir_create_node): Likewise. * main.c (main): Create the ps_context here and pass it to root_make_node. (root_make_node): Pass it to proclist_make_node and rootdir_make_node.
2010-08-30Add a TODO-listJeremie Koenig
* TODO: New file.
2010-08-30netfs_server_loop never returnsJeremie Koenig
* main.c: Don't call netfs_server_loop repeatedly; it should never return.
2010-08-30Handle errors in mainJeremie Koenig
* main.c (main): Handle errors from argp_parse and root_make_node.
2010-08-30Add a --compatible optionJeremie Koenig
* main.c (argp_parser): Add --compatible, which sets the options required for compatibility with the procps tools.
2010-08-30Add a status file to process directoriesJeremie Koenig
* process.c: Add a status file.
2010-08-30Add statm to process directoriesJeremie Koenig
* process.c: Add the statm file.
2010-08-30Add a global cmdline fileJeremie Koenig
* main.c (argp_parser, main): Add the --kernel-pid option. * main.h: Publish it. * rootdir.c (rootdir_gc_cmdline): New function.
2010-08-30Add meminfo and vmstatJeremie Koenig
* rootdir.c: Add a (non-empty) meminfo and a vmstat file.
2010-08-30Add a fake-self option to control the self symlinkJeremie Koenig
* main.c (argp_parse, main): Add the --fake-self option. * main.h: Publish it. * rootdir.c (rootdir_gc_fakeself, rootdir_entries, rootdir_create_node): Use it.
2010-08-30Add --stat-mode to override the perms for [pid]/statJeremie Koenig
* main.c (argp_parser, main): Add the --stat-mode option. * process.c (process_lookup_pid): Use it.
2010-08-30Add --clk-tck to set the clock unitJeremie Koenig
* main.c (argp_parser, main): Add and parse the --clk-tck option. * main.h: Publish opt_clk_tck. * process.c (sc_tc): Use the user-provided clock frequency. * rootdir.c (rootdir_gc_stat): Likewise.
2010-08-30Play nice with the procps old_Hertz_hackJeremie Koenig
* rootdir.c (rootdir_gc_uptime, rootdir_gc_stat): assume a completely idle rather than completely busy system, so that the idle seconds can be meaningfully divided by the idle jiffies by procps.
2010-08-30Add an empty meminfo root fileJeremie Koenig
* rootdir.c: Add "meminfo", empty for now.
2010-08-30Add a fake "self" symlinkJeremie Koenig
* rootdir.c: Add a fake "self" symlink which always points to init.
2010-08-30Add loadavgJeremie Koenig
* rootdir.c: Add the root file "loadavg".
2010-08-30New root files: version, uptime, statJeremie Koenig
* rootdir.c, rootdir.h: New files. * main.c: Use rootdir_create_node. * Makefile: Add the rootdir module.
2010-08-30Set a restrictive mode on some sensitive filesJeremie Koenig
* process.c (process_file_make_node, entries): Set the environ and stat files as readable only by the owner of the process.