summaryrefslogtreecommitdiff
path: root/libps/procstat.c
AgeCommit message (Collapse)Author
2010-09-18Obtain number of ports in proc and libpsantrik
Add (and implement) a proc RPC to obtain the number of Mach ports used by the target task. Add infrastructure in libps to read this information. * hurd/process.defs (proc_getnports): New RPC. * hurd/process_request.defs (proc_getnports_request): New RPC. * libps/procstat.c (proc_stat_set_flags): Call proc_getnports RPC if needed. * libps/ps.h (proc_stat): New `num_ports' field. (PSTAT_NUM_PORTS): New macro. (proc_stat_num_ports): New macro. * libps/spec.c (ps_get_num_ports): New function. (ps_num_ports_getter): New variable. (specs): New entry for `ps_num_ports_getter'. * proc/info.c (S_proc_getnports): New function.
2010-08-26libps (proc_stat_set_flags): Fix pointer signedness warningJeremie Koenig
* libps/procstat.c (proc_stat_set_flags): Cast &ps->umask into (int*) before calling ps_msg_get_init_int.
2010-08-26Merge branch 'master' of git.savannah.gnu.org:/srv/git/hurd/hurdSamuel Thibault
2010-08-26libps (fetch_procinfo): Fix non-set flag PSTAT_TASK_EVENTSJeremie Koenig
The fetch_procinfo function failed to set the PSTAT_TASK_EVENTS when those has been retreived. It should be noted that GNU Mach does not support the TASK_EVENTS_INFO flavor, so this is of minor importance. The new code also checks that all the requested proc server flags related to a given proc_stat flags have been returned before setting the proc_stat flag in question. * libps/procstat.c (fetch_procinfo): Add map array containing `ps_flags_t' and `procinfo' flags. Use it in a loop to check for flags in `need' and `have' and set them in `pi_flags'. Likewise to check for flags in `pi_flags' and set them in `have'.
2010-08-26libps (_proc_stat_free): Fix memory leakJeremie Koenig
The thread_waits field was never freed; this change adds the code to do so if the corresponding flag is set. Users are also warned of the consequences, namely, that they should not free process proc_stats before all their associated thread ones are gone, since the latter may reference the former's thread_waits field. However, with the normal interface (ie. ps_context_free), all proc_stats are freed at once, so this is not an issue. * libps/procstat.c (_proc_stat_free): Free ps->thread_waits if PSTAT_THREAD_WAITS flag is set. * libps/ps.h (_proc_stat_free): Document that thread proc_stats must be freed before process proc_stat can be.
2010-08-26libps: Fix deadly typoJeremie Koenig
PSTAT_PROCINFO is a set of flags, some of which can be obtained in alternative ways. In this case, _proc_stat_free will try to deallocate an uninitialised field. PSTAT_PROC_INFO is the flag we want. * libps/procstat.c (_proc_stat_free): Use PSTAT_PROC_INFO instead of PSTAT_PROCINFO.
2002-06-052002-06-05 Roland McGrath <roland@frob.com>Roland McGrath
* procstat.c (fetch_procinfo): Use PI_FETCH_TASKEVENTS. (add_preconditions): PSTAT_TASK_EVENTS no longer needs PSTAT_TASK. (PSTAT_PROCINFO_TASK): Add PSTAT_TASK_EVENTS to the mask. (PSTAT_PROCINFO_MERGE): Here too. (proc_stat_set_flags): Don't use task_info for PSTAT_TASK_EVENTS.
2002-05-082002-05-07 Roland McGrath <roland@frob.com>Roland McGrath
* host.c (ps_host_basic_info): int -> size_t (ps_host_basic_info, ps_host_load_info): Likewise. * ps.h: Update decls. (struct proc_stat): unsigned -> size_t for task_events_info_size, args_len, env_len. * procstat.c (summarize_thread_waits): Fix argument type.
1999-07-031999-07-03 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* common.h (VMFREE): Use munmap instead of vm_deallocate. * procstat.c (merge_procinfo): Likewise.
1999-06-021999-06-02 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* ps.h (PSTAT_ENV): New macro. (struct proc_stat): New members `env', `env_len', `env_vm_alloced'. (proc_stat_env, proc_stat_env_len): New accessor macros. (PSTAT_USER_BASE): Increase value to leave more room for additions. * procstat.c (proc_stat_set_flags): Handle environment. (_proc_stat_free): Likewise. * spec.c (ps_get_env, ps_env_getter): New function and constant. (specs): New spec "Env" using ps_env_getter and ps_emit_args.
1998-10-20Add braces to silence gcc warnings.Roland McGrath
1997-05-23fix typoThomas Bushnell
1997-05-23Fri May 23 13:13:18 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>Thomas Bushnell
* procstat.c (summarize_thread_basic_info): Don't include the kernel's idle threads in the summation. (summarize_thread_sched_info): Likewise. (summarize_thread_states): Likewise. (summarize_thread_waits): Likewise.
1996-11-16(proc_stat_set_flags):Miles Bader
Allow the user fetch hook to turn on non-user bits, even if they've already failed in the standard code.
1996-10-08(proc_stat_set_flags):Miles Bader
Get rid of INAPP macro. Fix preconditions of PSTAT_SUSPEND_COUNT.
1996-10-08(proc_stat_thread_create):Miles Bader
Initialize FAILED and INAPP fields. (PSTAT_PROCINFO): Redefined. (set_procinfo_flags): Set bits in PS->inapp as appropriate. (count_threads): Use PSTAT_PROCINFO_TASK_THREAD_DEP. (PSTAT_PROCINFO_TASK_THREAD_DEP): Renamed from PSTAT_PROCINFO_THREAD. (PSTAT_PROCINFO_THREAD, PSTAT_PROCINFO_TASK): New macro. (proc_stat_set_flags): Add NEED & INAPP macros, and use them to set the inapp field as well as the failed field. (_proc_stat_create): Initialize INAPP field.
1996-08-02(set_procinfo_flags): Pass HAVE to count_threads.Miles Bader
(count_threads): Take new argument HAVE, and use different thread counting method depending on whether we have thread detail info.
1996-07-11(set_procinfo_flags): Don't use fake "*" wait value if there's no msgport.Miles Bader
1996-07-02(proc_stat_set_flags):Miles Bader
Pass PS->task_events_info to task_info, not its address.
1996-06-03(merge_procinfo):Miles Bader
Take a struct proc_stat as an arg, not all the individual fields. Correctly set old_pi_hdr. Correctly calculate REALLY_NEED. (set_procinfo_flags): Use new calling merge_procinfo calling convention. (proc_stat_set_flags): Try mallocing a buffer for PS->args. Move second call to set_procinfo_flags after msgport suppress test. Add TEST_MSGPORT_FLAGS variable, & use it. Be more picky about when we call set_procinfo_flags. (_proc_stat_free): Use explicit VM_ALLOCED flag for MFREEMEM.
1996-06-02(set_procinfo_flags): New function.Miles Bader
(proc_stat_set_flags): Use it, to get msgport validity testing right. (merge_procinfo): Take and return HAVE instead of using a reference parameter. Do mem allocation more efficiently and correctly. (fetch_procinfo): Do conversion for PI_SIZE from/to units of sizeof (int), so no one else has to deal with it. (PROCINFO_MALLOC_SIZE, WAITS_MALLOC_SIZE): New macros. (MFREEMEM): New macro combining MFREEM & MFREEVM. (MFREEM, MFREEVM): Macros deleted.
1996-05-31(proc_stat_set_flags): After fetching number of threads to guess whether weMiles Bader
need wait info, put it in PS->num_threads. (merge_procinfo): Avoid vm_allocing a procinfo buffer each time if we can help it. Correctly reflect newly fetched info. (PSTAT_PROCINFO_MERGE, PSTAT_PROCINFO_REFETCH): New macros.
1996-05-29(MP_MGET): Only disable msgport on timeout.Miles Bader
(get_thread_wait): Decrement N in loop. (get_thread_wait): Use strnlen instead of memchr. (PSTAT_PROCINFO): Typo: PSTAT_THREAD_WAIT --> PSTAT_THREAD_WAITS. (PSTAT_USES_MSGPORT): Add PSTAT_THREAD_WAIT.
1996-05-29(merge_procinfo): Don't die if WAITS == 0.Miles Bader
(summarize_thread_waits): Correctly advance NEXT_WAIT. Skip threads marked `itimer'. (proc_stat_set_flags): Consider processes with less than 4 threads to be candidates for a meaningful process wait status.
1996-05-24(merge_procinfo): And update *HAVE with PSTAT_PROC_INFO fromMichael I. Bushnell
REALLY_HAVE here.
1996-05-24(fetch_procinfo): Always turn on PSTAT_PROC_INFO if proc_getprocinfoMichael I. Bushnell
returns successfully.
1996-05-13(PSTAT_PROCINFO, PSTAT_PROCINFO_THREAD): Add PSTAT_THREAD_WAITS.Miles Bader
(proc_stat_set_flags): Be more careful about when we fetch thread_wait information, and synthesize a process-summary thread_wait value for lots of threads. (summarize_thread_waits): Only give a real summary if there's but a single user thread. (fetch_procinfo): Use PSTAT_THREAD_WAITS instead of PSTAT_THREAD_WAIT.
1996-05-12(merge_procinfo, fetch_procinfo): Change HAVE to be an input/output parameter.Miles Bader
(proc_stat_set_flags): Change accordingly. (get_thread_wait): Correctly advance WAIT.
1996-05-12(get_thread_wait): Correctly advance WAIT.Miles Bader
1996-05-12Frob comment.Miles Bader
1996-05-09(fetch_procinfo): Pass a reference to PI_FLAGS in call toMichael I. Bushnell
fetch_procinfo.
1996-05-07(add_preconditions, proc_stat_set_flags): Remove references to exec_flags.Miles Bader
1996-03-27(proc_stat_set_flags): Use new `ps_' prefix for msg rpcs.Miles Bader
Include "ps_msg.h".
1996-03-26Get rid of mega typedefs, and just use structure pointers like other hurdMiles Bader
libraries. Other misc cleanups.
1996-02-13(fetch_procinfo, merge_procinfo): Return wait strings.Miles Bader
(summarize_thread_waits): Return both wait and rpc info. (get_thread_wait): New function. (proc_stat_set_flags): Support finding wait info. Change occurances of PSTAT_THREAD_RPC to PSTAT_THREAD_WAIT.
1996-01-19(summarize_thread_basic_info):Miles Bader
If there are any running threads, then only average priority from them. (_proc_stat_free): Call user cleanup hook. (proc_stat_set_flags, add_preconditions): Deal with user bits. (proc_stat_set_flags): Support the failed field. (_proc_stat_create): Initialize the failed and hook fields.
1995-12-20(proc_stat_set_flags): If there's no owner, set the uid to -1 (and the ownerMiles Bader
to null), instead of failing. (proc_stat_set_flags): Add support for PROC_OWNER_UID. (add_preconditions): Add preconditions for owner_uid (& owner).
1995-11-08(proc_stat_set_flags):Miles Bader
Initialize the proc_info and proc_info_size fields if they've never been set. Always update proc_getprocinfo fields, even if we already had them. (add_preconditions): Correct preconditions for PSTAT_STATE. (PSTAT_TEST_MSGPORT): Renamed from SHOULD_SUPPRESS_MSGPORT_FLAGS. (PSTAT_USES_MSGPORT): New macro. (SUPPRESS_MSGPORT_FLAGS): Use PSTAT_USES_MSGPORT, not PSTAT_MSGPORT. (proc_stat_set_flags): Use PSTAT_TEST_MSGPORT. (merge_procinfo): Only copy old task info if we actually had it. (proc_stat_set_flags): Don't unnecessarily grab procinfo stuff. (summarize_thread_basic_info): Summarize available priority info too. (summarize_thread_sched_info): Do max_ & depress_priority too.
1995-11-03(add_preconditions): Don't require PSTAT_EXEC_FLAGS for getting the stateMiles Bader
anymore (but do require PSTAT_{TASK,THREAD}_BASIC). (proc_stat_state_tags): Update to reflect new flags. (proc_stat_set_flags): Set new flags. (PSTAT_PROCINFO, PSTAT_PROCINFO_THREAD): New macros. (fetch_procinfo, merge_procinfo): New functions. (SHOULD_SUPPRESS_MSGPORT_FLAGS): Change to use more accurate flags. (should_suppress_msgport): Use new fields. (summarize_thread_basic_info, summarize_thread_sched_info, summarize_thread_states, summarize_thread_rpcs, count_threads): New funcs. (proc_stat_set_flags): Support the new division of PSTAT_INFO into individual flags, and support getting thread information by using the thread's origin proc_stat. (_proc_stat_free): Free the thread_basic_info and thread_sched_info fields if necessary. (proc_stat_thread_create): Don't require that the source process have thread information around; it will be fetched later if necessary.
1995-08-19(thread_state, proc_stat_set_flags): Use the new state bits.Miles Bader
(proc_stat_set_flags): Actually set the PSTAT_STATE_P_STOP bit. (proc_stat_state_tags): Reordered to reflect the new ordering of the state bits.
1995-05-05If a msg port call times out, disable use of that msg port.Miles Bader
1995-05-02(proc_stat_set_flags, add_preconditions): Add support for the suspend_countMiles Bader
field.
1995-05-02(add_preconditions): A new function that calculates inter-flag dependencies;Miles Bader
code moved here from from proc_stat_set_flags. (should_suppress_msgport): A new function that returns true when there's some condition indicating that we shouldn't use a process's msg port. (proc_stat_set_flags): Avoid using a process's msg port when it may be unusable. (proc_stat_set_flags): Set PSTAT_STATE_FORKED instead of PSTAT_STATE_EXECED. (proc_stat_state_tags): Change the user state letter to "f" from "e".
1995-04-07Tighten up types used (i.e., don't use int for everything).Miles Bader
1995-04-05(proc_stat_set_flags): If PSTAT_NO_MSGPORT is set, don't use the msg port.Miles Bader
1995-03-29Don't get barf on processes with zero threads.Miles Bader
1995-03-28Add support for the exec_flags field, and make the state bits calculation useMiles Bader
that to support the PSTAT_STATE_TRACED bit. Update proc_stat_state_tags to add PSTAT_STATE_TRACED.
1995-03-21Include <string.h>.Michael I. Bushnell
1995-03-15Set the PSTAT_STATE_PRIORITY and PSTAT_STATE_NICED flags when appropiate.Miles Bader
1995-03-14A proc_stat_t points to a ps_context_t now instead of directly to the procMiles Bader
server (but we can get the proc server from the context). Added the owner (ps_user_t) field to proc_stat_t, and tty now points to a ps_tty_t instead of to a tty port; tty_name is deleted since that gets handled in the ps_tty_t.