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.
|
|
* proc/info.c (S_proc_getprocinfo): Clear PI_FETCH_TASKEVENTS from
`flags' when task_info.
|
|
* proc/info.c (S_proc_register_version): Do not deallocate port
`credential' when err != 0.
|
|
* proc/notify.c (do_mach_notify_dead_name): Do not call
mach_port_deallocate on `deadport' on failure.
|
|
* ChangeLog: Wipe out content, and add instructions about how to get it back.
* auth/ChangeLog: Remove file.
* benchmarks/ChangeLog: Likewise.
* boot/ChangeLog: Likewise.
* bsdfsck/ChangeLog: Likewise.
* config/ChangeLog: Likewise.
* console-client/ChangeLog: Likewise.
* console/ChangeLog: Likewise.
* daemons/ChangeLog: Likewise.
* defpager/ChangeLog: Likewise.
* doc/ChangeLog: Likewise.
* exec/ChangeLog: Likewise.
* ext2fs/ChangeLog: Likewise.
* fatfs/ChangeLog: Likewise.
* fstests/ChangeLog: Likewise.
* ftpfs/ChangeLog: Likewise.
* hostmux/ChangeLog: Likewise.
* hurd/ChangeLog: Likewise.
* include/ChangeLog: Likewise.
* init/ChangeLog: Likewise.
* isofs/ChangeLog: Likewise.
* libcons/ChangeLog: Likewise.
* libdirmgt/ChangeLog: Likewise.
* libdiskfs/ChangeLog: Likewise.
* libfshelp/ChangeLog: Likewise.
* libftpconn/ChangeLog: Likewise.
* libhurdbugaddr/ChangeLog: Likewise.
* libihash/ChangeLog: Likewise.
* libiohelp/ChangeLog: Likewise.
* libnetfs/ChangeLog: Likewise.
* libpager/ChangeLog: Likewise.
* libpipe/ChangeLog: Likewise.
* libports/ChangeLog: Likewise.
* libps/ChangeLog: Likewise.
* libshouldbeinlibc/ChangeLog: Likewise.
* libstore/ChangeLog: Likewise.
* libthreads/ChangeLog: Likewise.
* libtrivfs/ChangeLog: Likewise.
* login/ChangeLog: Likewise.
* mach-defpager/ChangeLog: Likewise.
* nfs/ChangeLog: Likewise.
* nfsd/ChangeLog: Likewise.
* pfinet/ChangeLog: Likewise.
* pflocal/ChangeLog: Likewise.
* proc/ChangeLog: Likewise.
* release/ChangeLog: Likewise.
* serverboot/ChangeLog: Likewise.
* storeio/ChangeLog: Likewise.
* sutils/ChangeLog: Likewise.
* term/ChangeLog: Likewise.
* tmpfs/ChangeLog: Likewise.
* trans/ChangeLog: Likewise.
* ufs-fsck/ChangeLog: Likewise.
* ufs-utils/ChangeLog: Likewise.
* ufs/ChangeLog: Likewise.
* usermux/ChangeLog: Likewise.
* utils/ChangeLog: Likewise.
|
|
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* auth.c: Include <stddef.h>.
(pending_users, pending_server): Change type to struct hurd_ihash,
initialize with HURD_IHASH_INITIALIZER.
(struct pending): Change type of member LOCP to hurd_ihash_locp_t.
(S_auth_user_authenticate): Use hurd_ihash_* functions instead
ihash_*.
(S_auth_server_authenticate): Likewise.
(main): Do not allocate the hash tables.
console-client/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* vga-dynafont.c: Include <stddef.h>.
(struct mapped_character): Change type of LOCP to
hurd_ihash_locp_t.
(struct dynafont): Change type of CHARMAP to struct hurd_ihash.
(dynafont_new): Use hurd_ihash_init instead of ihash_create.
Remove variable ERR. Call hurd_ihash_add instead of ihash_add.
(dynafont_free): Call hurd_ihash_destroy, no ihash_free.
(dynafont_lookup_internal): Use hurd_ihash_find, not ihash_find.
(dynafont_lookup_internal): Call hurd_ihash_locp_remove instead
ihash_locp_remove, and hurd_ihash_add instead ihash_add.
(dynafont_change_font): Likewise. Clean out LOCP if character is
unmapped.
ftpfs/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* ftpfs.h: Include <hurd/ihash.h>.
(struct ftpfs): Change type of INODE_MAPPINGS to struct
hurd_ihash.
(struct ftpfs_dir_entry): Change type of INODE_LOCP to
hurd_ihash_locp_t.
* node.c (ftpfs_create_node): Call hurd_ihash_add, not ihash_add.
(netfs_node_norefs): Call hurd_ihash_locp_remove, not
ihash_locp_remove.
* fs.c: Include <stddef.h>.
(ftpfs_create): Call hurd_ihash_init, not hurd_ihash_create.
Call hurd_ihash_destroy on error.
libihash/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* ihash.c: Rewritten.
* ihash.h: Rewritten.
* Makefile (SRCS): Remove sizes.c.
(LCLHDRS): Remove priv.h.
* primes.c, sizes.c, priv.h: Files removed.
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* ports.h (struct port_bucket): Change type of HTABLE to struct
hurd_ihash.
(struct port_info): Change type of HENTRY to hurd_ihash_locp_t.
* lookup-port.c (ports_lookup_port): Use hurd_ihash_find instead
ihash_find.
* bucket-iterate.c (_ports_bucket_class_iterate): Use
HURD_IHASH_ITERATE instead ihash_iterate.
* inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Likewise.
* inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise.
* create-internal.c (_ports_create_port_internal): Use
hurd_ihash_add instead ihash_add.
* import-port.c (ports_import_port): Likewise.
* reallocate-from-external.c (ports_reallocate_from_external):
Likewise.
* reallocate-port.c (ports_reallocate_port): Likewise.
* transfer-right.c (ports_transfer_right): Likewise.
* create-bucket.c: Include <stddef.h>.
(ports_create_bucket): Use hurd_ihash_init instead hurd_ihash_create.
* class-iterate.c: Do not include <hurd/ihash.h>.
* claim-right.c (ports_claim_right): Call hurd_ihash_locp_remove
instead ihash_locp_remove.
* complete-deallocate.c (_ports_complete_deallocate): Likewise.
* destroy-right.c (ports_destroy_right): Likewise.
* reallocate-from-external.c (ports_reallocate_from_external):
Likewise.
* reallocate-port.c (ports_reallocate_port): Likewise.
* transfer-right.c (ports_transfer_right): Likewise.
libps/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* ps.h (struct ps_context): Change type of members procs, ttys,
ttys_by_cttyid and users to struct hurd_ihash.
* context.c (ps_context_create): Remove variables err_procs,
err_ttys, err_ttys_by_cttyid and err_users. Use hurd_ihash_init
instead of ihash_create. Call hurd_ihash_set_cleanup and the
hurd_ihash_cleanup_t type instead of ihash_set_cleanup.
(ps_context_free): Call hurd_ihash_destroy instead of ihash_free.
(lookup): Call hurd_ihash_find instead ihash_find, hurd_ihash_add
instead ihash_add.
(ps_context_find_proc_stat): Take pointer of hash object.
(ps_context_find_tty): Likewise.
(ps_context_find_tty_by_cttyid): Likewise.
(ps_context_find_user): Likewise.
libpthread/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* sysdeps/hurd/pt-key.h (PTHREAD_KEY_MEMBERS): Change type of
THREAD_SPECIFICS to hurd_ihash_t.
* sysdeps/hurd/pt-setspecific.c (pthread_setspecific): Call
hurd_ihash_create instead ihash_create, and hurd_ihash_add instead
ihash_add.
* sysdeps/hurd/pt-getspecific.c (pthread_getspecific): Call
hurd_ihash_find instead of ihash_find.
* sysdeps/hurd/pt-destroy-specific.c (__pthread_destroy_specific):
Call hurd_ihash_find instead of ihash_find, hurd_ihash_remove
instead of ihash_remove, and hurd_ihash_free instead of
ihash_free.
proc/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* proc.h: Include <hurd/ihash.h>.
(struct proc): Change type of members p_pidhashloc and
p_taskhashloc to hurd_ihash_locp_t.
(struct pgrp): Likewise for pg_hashloc.
(struct session): Likewise for s_hashloc.
* hash.c: Change type of pghash, pidhash, taskhash and sidhash to
struct hurd_ihash and initialize them with HURD_IHASH_INITIALIZER.
Include stddef.h.
(pid_find): Call hurd_ihash_find instead ihash_find.
(pid_find_allow_zombie): Likewise.
(task_find): Likewise.
(task_find_nocreate): Likewise.
(pgrp_find): Likewise.
(session_find): Likewise.
(add_proc_to_hash): Call hurd_ihash_add instead ihash_add.
(add_pgrp_to_hash): Likewise.
(add_session_to_hash): Likewise.
(remove_pgrp_from_hash): Call hurd_ihash_locp_remove instead
ihash_locp_remove, and provide hash table pointer.
(remove_proc_from_hash): Likewise.
(remove_session_from_hash): Likewise.
(prociterate): Use HURD_IHASH_ITERATE instead ihash_iterate.
trans/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* fakeroot.c: Include <stddef.h>.
(struct netnode): Change type of member idport_locp
to hurd_ihash_locp_t.
(idport_ihash): Change type to struct hurd_ihash and initialize
with HURD_IHASH_INITIALIZER.
(new_node): Call hurd_ihash_add instead of ihash_add.
(netfs_node_norefs): Call hrd_ihash_locp_remove instead
ihash_locp_remove.
(netfs_S_dir_lookup): Call hurd_ihash_find instead ihash_find.
utils/
2003-08-17 Marcus Brinkmann <marcus@gnu.org>
* rpctrace.c: Include <stddef.h>.
(struct traced_info): Change type of LOCP to hurd_ihash_locp_t.
(msgid_ihash): Change type to struct hurd_ihash, and initialize
with HURD_IHASH_INITIALIZER, don't set cleanup here.
(traced_names): Likewise.
(main): Call hurd_ihash_set_cleanup for msgid_ihash. Don't create
traced_names.
(parse_msgid_list): Call hurd_ihash_add instead ihash_add.
(new_send_wrapper): Likewise.
(msgid_info): Likewise. Call hurd_ihash_find instead ihash_find.
(rewrite_right): Likewise.
(traced_dropweak): Call hurd_ihash_locp_remove instead
ihash_locp_remove.
|
|
* mgt.c (S_proc_dostop): Revert last change.
|
|
* mgt.c (S_proc_dostop): Instead of suspending all threads except
CONTTHREAD, first suspend all threads, and then resume CONTTHREAD.
|
|
|
|
* info.c (S_proc_getprocinfo): If PI_FETCH_TASKEVENTS is set in *FLAGS,
fill in PI->taskevents using task_info with TASK_EVENTS_INFO.
|
|
|
|
* mgt.c (S_proc_reauthenticate, S_proc_getallpids): Likewise.
(add_tasks, S_proc_dostop): Likewise.
(S_proc_exception_raise): int -> integer_t
* pgrp.c (S_proc_getsessionpids, S_proc_getsessionpgids): Likewise.
(S_proc_getpgrppids): Likewise.
|
|
* host.c (S_proc_setexecdata, S_proc_getexecdata): u_int -> size_t
(initialize_version_info): Likewise. Fix cast in host_info arg.
(get_string_array): Likewise.
* info.c (get_string, S_proc_getprocargs, S_proc_getprocenv): Likewise.
(S_proc_getprocinfo, S_proc_getloginpids): Likewise.
(S_proc_getprocinfo): int -> size_t; fix casts in *_info argument.
|
|
|
|
* proc.h (check_owner): Move this extern inline function ...
* info.c (check_owner): ... to here, made static inline.
|
|
* mgt.c (S_proc_dostop): If task_threads fails, resume the
suspended task.
|
|
|
|
* wait.c (S_proc_wait: reap): Set *PID_STATUS to CHILD->p_pid.
Reported by Neal H Walfield <neal@cs.uml.edu>.
|
|
* mgt.c (allocate_proc): Don't zero P->p_pi.
Reported by Neal H Walfield <neal@cs.uml.edu>.
|
|
|
|
* wait.c (sample_rusage): New function.
(S_proc_mark_exit): Call it.
|
|
|
|
* proc.h (struct proc): New members p_rusage, p_child_rusage.
* wait.c (rusage_add): New static function.
(alert_parent): Use it to add dead child's p_rusage into parent's
p_child_rusage.
(S_proc_wait): Fill *RU out param with CHILD->p_rusage, not just zeros.
Rewrote subfunction child_ready and its two callers into new
subfunction reap to reduce duplicated code.
|
|
* mgt.c (process_has_exited): Call ports_interrupt_rpcs last thing.
|
|
|
|
* mgt.c (S_proc_reauthenticate): Release global_lock while making RPC.
Don't mach_port_deallocate an argument port when returning an error,
because mig does it for us.
2001-08-03 Roland McGrath <roland@frob.com>
* mgt.c (allocate_proc): Use memset instead of lots of 0 initializers.
|
|
|
|
* mgt.c (genpid): Rewritten.
|
|
* mgt.c (genpid): Before checking if NEXTPID is free, check if it
is greater than WRAP, and if yes, start over.
|
|
* host.c (S_proc_getexecdata): New variable PORTS_ALLOCATED.
Set it if we allocated a new buffer for PORTS. If it is set,
and allocation of a new buffer for INTS fails, unmap the buffer
for PORTS.
* host.c (S_proc_getexecdata): New variable I. Go over all
standard ports and increase the send right user reference by one.
Set *PORTSPOLY to MACH_MSG_TYPE_MOVE_SEND.
|
|
* info.c (S_proc_getprocinfo): If we return because mmap failed
for *PIARRAY, be sure to munmap THDS if necessary.
|
|
* host.c (initialize_version_info): Clear last byte of KV to make
sure that the string is null-terminated.
|
|
|
|
* proc.h (struct ids): Drop gids and ngids, we never use
them. Turn uids into a zero length array.
* mgt.c (make_ids): Conform to new semantics.
(ids_free): Removed. Rendered obsolete by ids_rele.
(ids_rele): New function. Drop a reference to the given
ids.
(ids_ref): Add a reference to the given ids.
(S_proc_reauthenticate): Use ids_rele and new make_ids
semantics.
(S_proc_child): Use ids_rele and ids_ref.
(create_startup_proc): Conform to new make_ids semantics.
(complete_proc): Use ids_ref.
(process_has_exited): Use ids_rele.
|
|
* host.c (S_proc_setexecdata): Check for memory allocation errors.
Use memcpy, not bcopy.
(S_proc_getexecdata): Likewise.
(S_proc_execdata_notify): Check return of malloc.
(S_proc_register_version): Likewise.
(initialize_version_info): Add asserts.
* info.c (S_proc_pid2task): Do not bother searching for the pid
if we do not have a valid caller.
(S_proc_pid2proc): Likewise.
Use memcpy, not bcopy.
(S_proc_getprocinfo): Doc fixes. Use MAP_FAILED not -1. Use
memcpy, not bcopy.
(S_proc_getloginpids): Check return value of malloc. Use realloc
correctly.
(S_proc_setlogin): Check return value of malloc.
* main.c (main): Assert allocate_proc.
* mgt.c (make_ids): Check return value of malloc and fail
accordingly.
(S_proc_reauthenticate): Check return value of make_ids and fail
accordingly.
(S_proc_child): Call task_find after we know that we were passed
a valid child.
(S_proc_reassign): Likewise.
(S_proc_handle_exceptions): Use memcpy, not bcopy.
(allocate_proc): Check return value of ports_create_port and fail
accordingly.
(create_startup_proc): Add asserts.
(complete_proc): Do not assume the length of "<none>".
* msg.c (S_proc_getmsgport): Call pid_find_allow_zombie after
we know we were passed a valid caller.
* pgrp.c: Include assert.h.
(new_pgrp): Check return value of malloc and fail accordingly.
(new_session): Likewise.
(boot_setsid): Assert sess.
(S_proc_getsessionpids): Use MAP_FAILED not -1.
(S_proc_getsessionppids): Likewise.
(S_proc_getpgrppids): Likewise.
* wait.c (S_proc_wait): Use memset, not bzero.
|
|
* host.c: Doc fix: ``Implement foo as described in <hurd/proc.defs>''
=> ``Implement foo as described in <hurd/process.defs>''
* info.c: Likewise.
* mgt.c: Likewise.
* pgrp.c: Likewise.
* wait.c: Likewise.
* host.c (S_proc_setexecdata): Check for memory allocation errors.
Use memcpy, not bcopy.
(S_proc_getexecdata): Likewise.
(S_proc_execdata_notify): Check return of malloc.
(S_proc_register_version): Likewise.
(initialize_version_info): Add asserts.
* info.c (S_proc_pid2task): Do not bother searching for the pid
if we do not have a valid caller.
(S_proc_pid2proc): Likewise.
Use memcpy, not bcopy.
(S_proc_getprocinfo): Doc fixes. Use MAP_FAILED not -1. Use
memcpy, not bcopy.
(S_proc_getloginpids): Check return value of malloc. Use realloc
correctly.
(S_proc_setlogin): Check return value of malloc.
* main.c (main): Assert allocate_proc.
* mgt.c (make_ids): Check return value of malloc and fail
accordingly.
(S_proc_reauthenticate): Check return value of make_ids and fail
accordingly.
(S_proc_child): Call task_find after we know that we were passed
a valid child.
(S_proc_reassign): Likewise.
(S_proc_handle_exceptions): Use memcpy, not bcopy.
(allocate_proc): Check return value of ports_create_port and fail
accordingly.
(create_startup_proc): Add asserts.
(complete_proc): Do not assume the length of "<none>".
* msg.c (S_proc_getmsgport): Call pid_find_allow_zombie after
we know we were passed a valid caller.
* pgrp.c: Include assert.h.
(new_pgrp): Check return value of malloc and fail accordingly.
(new_session): Likewise.
(boot_setsid): Assert sess.
(S_proc_getsessionpids): Use MAP_FAILED not -1.
(S_proc_getsessionppids): Likewise.
(S_proc_getpgrppids): Likewise.
* wait.c (S_proc_wait): Use memset, not bzero.
|
|
* proc.h (struct ids): Drop gids and ngids, we never use
them. Turn uids into a zero length array.
* mgt.c (make_ids): Conform to new semantics.
(ids_free): Removed. Rendered obsolete by ids_rele.
(ids_rele): New function. Drop a reference to the given
ids.
(ids_ref): Add a reference to the given ids.
(S_proc_reauthenticate): Use ids_rele and new make_ids
semantics.
(S_proc_child): Use ids_rele and ids_ref.
(create_startup_proc): Conform to new make_ids semantics.
(complete_proc): Use ids_ref.
(process_has_exited): Use ids_rele.
* host.c: Doc fix: ``Implement foo as described in <hurd/proc.defs>''
=> ``Implement foo as described in <hurd/process.defs>''
* info.c: Likewise.
* mgt.c: Likewise.
* pgrp.c: Likewise.
* wait.c: Likewise.
* mgt.c (S_proc_reauthenticate): Calculate the value of
NGEN_UIDS, NAUX_UIDS, NGEN_GIDS AND NAUX_GIDS; do not use
a constant.
(create_startup_proc): Add asserts.
* host.c (S_proc_setexecdata): Check for memory allocation errors.
Use memcpy, not bcopy.
(S_proc_getexecdata): Likewise.
(S_proc_execdata_notify): Check return of malloc.
(S_proc_register_version): Likewise.
(initialize_version_info): Add asserts.
* info.c (S_proc_pid2task): Do not bother searching for the pid
if we do not have a valid caller.
(S_proc_pid2proc): Likewise.
Use memcpy, not bcopy.
(S_proc_getprocinfo): Doc fixes. Use MAP_FAILED not -1. Use
memcpy, not bcopy.
(S_proc_getloginpids): Check return value of malloc. Use realloc
correctly.
(S_proc_setlogin): Check return value of malloc.
* main.c (main): Assert allocate_proc.
* mgt.c (make_ids): Check return value of malloc and fail
accordingly.
(S_proc_reauthenticate): Check return value of make_ids and fail
accordingly.
(S_proc_child): Call task_find after we know that we were passed
a valid child.
(S_proc_reassign): Likewise.
(S_proc_handle_exceptions): Use memcpy, not bcopy.
(allocate_proc): Check return value of ports_create_port and fail
accordingly.
(create_startup_proc): Add asserts.
(complete_proc): Do not assume the length of "<none>".
* msg.c (S_proc_getmsgport): Call pid_find_allow_zombie after
we know we were passed a valid caller.
* pgrp.c: Include assert.h.
(new_pgrp): Check return value of malloc and fail accordingly.
(new_session): Likewise.
(boot_setsid): Assert sess.
(S_proc_getsessionpids): Use MAP_FAILED not -1.
(S_proc_getsessionppids): Likewise.
(S_proc_getpgrppids): Likewise.
* wait.c (S_proc_wait): Use memset, not bzero.
|
|
|
|
* main.c (main): Use ports_get_send_right.
|
|
|
|
* mgt.c (S_proc_exception_raise): Check for
MACH_SEND_NOTIFY_IN_PROGRESS rather than MACH_SEND_INVALID_NOTIFY.
Don't deallocate THREAD and TASK ports before the switch, since the
successful case uses THREAD again and the failure case uses TASK
again. Instead, deallocate them at the end of the successful case.
At the end of the error case, use mach_port_destroy on THREAD only.
|
|
|
|
* stubs.c (struct msg_sig_post_request): New type, broken out of
send_signal, where it was anonymous.
(struct msg_spec): Type removed.
(blocking_message_send): Change type to any_t -> any_t.
Don't call cthread_wire; it's a no-op in GNU anyway.
Just return instead of calling cthread_exit.
Argument is now a pointer to struct msg_sig_post_request.
Check mach_msg return value for sanity assert.
(send_signal): Make MESSAGE auto instead of static, use new type name.
This problem tracked down by Mark Kettenis <kettenis@gnu.org>.
|
|
|
|
* mgt.c (allocate_proc): Don't do mach_port_request_notification here.
(proc_death_notify): New function, do it here instead.
(complete_proc): Call proc_death_notify.
* main.c (main): Call proc_death_notify on STARTUP_PROC after
we have set its task port.
* proc.h: Declare proc_death_notify.
|
|
|
|
* info.c (get_string): New arg, pass back length of string.
(get_string_array): Use it, rather than repeating strlen.
When increasing NEWSIZE to fit, round it to page size.
Diddle a few casts to be prettier.
|
|
|
|
* primes.c: File removed (long obsolete).
* proc.h: Don't declare nextprime.
|
|
|