Age | Commit message (Collapse) | Author |
|
* 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.
|
|
|
|
* proc.h: Add #include <sys/mman.h>.
|
|
* info.c (get_string_array): Use mmap instead of vm_allocate.
(S_proc_getprocinfo): Likewise.
(S_proc_getloginpids): Likewise.
* mgt.c (S_proc_getallpids): Likewise.
* pgrp.c (S_proc_getsessionpids): Likewise.
(S_proc_getsessionpgids): Likewise.
(S_proc_getpgrppids): Likewise.
|
|
|
|
* info.c: Add #include <sys/mman.h> for munmap decl.
* mgt.c: Likewise.
|
|
* info.c (get_string): Use munmap instead of vm_deallocate.
(get_vector): Likewise.
(get_string_array): Likewise.
(S_proc_getprocinfo): Likewise.
* mgt.c (S_proc_reauthenticate): Likewise.
(S_proc_dostop): Likewise.
(add_tasks): Likewise.
|
|
|
|
* main.c (main): Remove commented-out wire_task_self call, #include.
|
|
|
|
* mgt.c (create_startup_proc): Don't call add_proc_to_hash here.
* main.c (main): Do it here instead, after we have the task port.
|
|
|
|
* mgt.c (allocate_proc, complete_proc): New functions, broken
out of new_proc. Remove magic handling of PIDs 0 and 1.
(new_proc): Now just call those two. Made static.
(create_startup_proc): New function, also broken out of old new_proc.
Do special setup for PID 1 (init) proc structure here.
* proc.h: Update decls.
* main.c (main): Use create_startup_proc for startup_proc, and
allocate_proc + complete_proc (with PID 0) for self_proc.
* mgt.c (make_ids): Add const to arguments.
|
|
* proc.h (struct proc): Use unsigned int for flag bitfields.
* mgt.c (allocate_proc, complete_proc): New functions, broken
out of new_proc. Remove magic handling of PIDs 0 and 1.
(new_proc): Now just call those two. Made static.
(create_startup_proc): New function, also broken out of old new_proc.
Do special setup for PID 1 (init) proc structure here.
* proc.h: Update decls.
* main.c (main): Use create_startup_proc for startup_proc, and
allocate_proc + complete_proc (with PID 0) for self_proc.
|
|
* mgt.c (allocate_proc, complete_proc): New functions, broken
out of new_proc. Remove magic handling of PIDs 0 and 1.
(new_proc): Now just call those two. Made static.
(create_startup_proc): New function, also broken out of old new_proc.
Do special setup for PID 1 (init) proc structure here.
* proc.h: Update decls.
* main.c (main): Use create_startup_proc for startup_proc, and
allocate_proc + complete_proc (with PID 0) for self_proc.
|
|
|
|
* mgt.c (add_tasks): Skip invalid (null) rights in tasks array.
* info.c (S_proc_pid2task): Add assert for p_task right validity.
|
|
|
|
* main.c: Include <device/device.h>.
|
|
|
|
* main.c (main): Set up console on stderr.
|
|
* msg.c (check_msgport_death): New function.
(S_proc_getmsgport): Use it.
* proc.h (check_msgport_death): Provide prototype.
* info.c (S_proc_getprocinfo): Call check_msgport_death to make
sure that our knowledge about P's message port is up to date.
|
|
|
|
* main.c: Include <error.h>.
|
|
|
|
* main.c (main): Use assert_perror. Give diagnostic for lack of
bootstrap port.
|
|
|
|
* mgt.c (S_proc_reassign): Remove unused variable FOO.
|
|
* notify.c (do_mach_notify_dead_name): Remove unnecessary braces.
* msg.c (S_proc_setmsgport): Remove unused variable FOO.
(S_proc_getmsgport): Only check if the message port is still alive
if it is not MACH_PORT_NULL. Use mach_port_type instead of
mach_port_get_refs to check if the port is dead.
* mgt.c (S_proc_reassign): Use mach_port_destroy to release the
old task port.
|
|
* notify.c (do_mach_notify_dead_name): Don't check against
P->p_msgport anymore.
* msg.c (message_port_dead): Delete function.
(S_proc_setmsgport): Don't request a dead-name notification
anymore.
(S_proc_getmsgport): Check to see if P->p_msgport is dead before
returning it.
* mgt.c (S_proc_reassign): Only use mach_port_deallocate to
release P->msgport.
(process_has_exited): Likewise.
* proc.h (message_port_dead): Delete prototype.
|
|
* mgt.c (S_proc_reassign): It's not necessary to re-request the
task-death notification; we've moved both the task right and the
proc port that gets the notification, so delete that.
* mgt.c (S_proc_reassign): Use mach_port_destroy instead of
mach_port_deallocate to release P->p_msgport, for the same reasons
as the changes below.
|
|
* mgt.c (process_has_exited): Use mach_port_destroy instead of
mach_port_deallocate to release P->p_msgport.
(complete_exit): Likewise for P->p_task.
These changes eliminate a race; we are destroying the receiver of
the dead-name notifications on these ports, but if that means we
lose a notification, then the ref-count on the name will get
incremented and we can't re-decrement it since we never hear the
notification.
|
|
* notify.c (do_mach_notify_dead_name): Deallocate reference to
DEADPORT.
|