diff options
Diffstat (limited to 'tmp/test.c~')
-rw-r--r-- | tmp/test.c~ | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/tmp/test.c~ b/tmp/test.c~ deleted file mode 100644 index bd069620..00000000 --- a/tmp/test.c~ +++ /dev/null @@ -1,96 +0,0 @@ -#include <mach.h> -#include <mach/notify.h> -#include <hurd.h> - -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> - -int test_change_kernel_port () -{ - task_t task = mach_task_self (); - mach_port_t kernel_port = MACH_PORT_NULL; - mach_port_t receive_port = mach_reply_port (); - kern_return_t err; - - err = mach_port_insert_right (task, receive_port, - receive_port, MACH_MSG_TYPE_MAKE_SEND); - if (err) - error (1, err, "mach_port_insert_right"); - err = task_set_kernel_port (task, receive_port); - if (err) - error (1, err, "task_set_kernel_port"); - err = task_get_kernel_port (task, &kernel_port); - if (err) - error (1, err, "task_get_kernel_port"); - printf ("task: %d, kernel port: %d, orig port: %d, receive port: %d\n", - (mach_task_self) (), kernel_port, task, receive_port); - return 0; -} - -int test_tasks_order () -{ - mach_port_t *psets; - mach_port_t priv_host; - size_t npsets; - int i; - - get_privileged_ports (&priv_host, NULL); - host_processor_sets (mach_host_self (), &psets, &npsets); - for (i = 0; i < npsets; i++) - { - mach_port_t psetpriv; - mach_port_t *tasks; - process_t proc; - size_t ntasks; - int j; - - proc = getproc (); - host_processor_set_priv (priv_host, psets[i], &psetpriv); - processor_set_tasks (psetpriv, &tasks, &ntasks); - printf ("get %d tasks\n", ntasks); - for (j = 0; j < ntasks; j++) - { - pid_t pid; - - printf ("task port (%d): %d\n", j, tasks[j]); - /* The kernel can deliver us an array with null slots in the - middle, e.g. if a task died during the call. */ - if (! MACH_PORT_VALID (tasks[j])) - continue; - proc_task2pid (proc, tasks[j], &pid); - printf ("task %d is valid, pid: %d\n", tasks[j], pid); - - mach_port_deallocate (mach_task_self (), tasks[j]); - } - munmap (tasks, ntasks * sizeof (task_t)); - mach_port_deallocate (mach_task_self (), psetpriv); - mach_port_deallocate (mach_task_self (), psets[i]); - } - munmap (psets, npsets * sizeof (mach_port_t)); - return 0; -} - -int test_port_notification () -{ - mach_port_t receive_port; - mach_port_t foo; - error_t err; - - err = mach_port_allocate (mach_task_self (), - MACH_PORT_RIGHT_RECEIVE, - &receive_port); - assert_perror (err); - err = mach_port_request_notification (mach_task_self (), receive_port, - MACH_NOTIFY_NO_SENDERS, 0, - MACH_PORT_NULL, - MACH_MSG_TYPE_MOVE_SEND_ONCE, &foo); - assert_perror (err); - return 0; -} - -int main () -{ - assert (0); - test_port_notification (); -} |