Age | Commit message (Collapse) | Author |
|
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.
|
|
* libps/procstat.c (proc_stat_set_flags): Cast &ps->umask into (int*)
before calling ps_msg_get_init_int.
|
|
|
|
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'.
|
|
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.
|
|
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.
|
|
* 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.
|
|
* 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.
|
|
* common.h (VMFREE): Use munmap instead of vm_deallocate.
* procstat.c (merge_procinfo): Likewise.
|
|
* 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.
|
|
|
|
|
|
* 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.
|
|
Allow the user fetch hook to turn on non-user bits, even if they've already
failed in the standard code.
|
|
Get rid of INAPP macro.
Fix preconditions of PSTAT_SUSPEND_COUNT.
|
|
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.
|
|
(count_threads): Take new argument HAVE, and use different thread counting
method depending on whether we have thread detail info.
|
|
|
|
Pass PS->task_events_info to task_info, not its address.
|
|
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.
|
|
(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.
|
|
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.
|
|
(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.
|
|
(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.
|
|
REALLY_HAVE here.
|
|
returns successfully.
|
|
(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.
|
|
(proc_stat_set_flags): Change accordingly.
(get_thread_wait): Correctly advance WAIT.
|
|
|
|
|
|
fetch_procinfo.
|
|
|
|
Include "ps_msg.h".
|
|
libraries. Other misc cleanups.
|
|
(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.
|
|
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.
|
|
to null), instead of failing.
(proc_stat_set_flags): Add support for PROC_OWNER_UID.
(add_preconditions): Add preconditions for owner_uid (& owner).
|
|
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.
|
|
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.
|
|
(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.
|
|
|
|
field.
|
|
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".
|
|
|
|
|
|
|
|
that to support the PSTAT_STATE_TRACED bit.
Update proc_stat_state_tags to add PSTAT_STATE_TRACED.
|
|
|
|
|
|
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.
|