<feed xmlns='http://www.w3.org/2005/Atom'>
<title>teythoon/gnumach.git/include, branch pmm-2015-08-12</title>
<subtitle>Personal GNU Mach development repository</subtitle>
<id>https://darnassus.sceen.net/cgit/teythoon/gnumach.git/atom?h=pmm-2015-08-12</id>
<link rel='self' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/atom?h=pmm-2015-08-12'/>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/'/>
<updated>2015-07-26T10:14:40Z</updated>
<entry>
<title>XXX pmm from x15, userspace crashes soon</title>
<updated>2015-07-26T10:14:40Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-04-01T12:01:14Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=550f9a075207b6b3f398d292ccae7335eba38189'/>
<id>urn:sha1:550f9a075207b6b3f398d292ccae7335eba38189</id>
<content type='text'>
</content>
</entry>
<entry>
<title>include: provide time-value substraction</title>
<updated>2015-07-25T18:12:14Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-07-25T18:04:27Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=bb23879791cf015f17cb50b6443bac44b1cfbc72'/>
<id>urn:sha1:bb23879791cf015f17cb50b6443bac44b1cfbc72</id>
<content type='text'>
* include/mach/time_value.h (time_value_assert): New macro to assert
that the given value is well-formed.
(time_value_add_usec): Use the new macro.
(time_value_sub_usec): New macro.
(time_value_add): Use `time_value_add_usec'.
(time_value_sub_usec): New macro.
</content>
</entry>
<entry>
<title>Allow non-privileged tasks to wire 64KiB task memory</title>
<updated>2015-07-09T12:13:25Z</updated>
<author>
<name>Samuel Thibault</name>
<email>samuel.thibault@ens-lyon.org</email>
</author>
<published>2015-07-09T12:13:25Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=eaee9424a120c289abc3eeeff331cb0d45efe971'/>
<id>urn:sha1:eaee9424a120c289abc3eeeff331cb0d45efe971</id>
<content type='text'>
* doc/mach.texi (vm_wire): Document that the host port does not have to be
privileged.
* include/mach/mach_hosts.defs (vm_wire): Use mach_port_t instead of
host_priv_t.
* vm/vm_map.h (vm_map): Add user_wired field.
* vm/vm_map.c (vm_map_setup): Initialize user_wired field to 0.
(vm_map_pageable_common, vm_map_entry_delete, vm_map_copy_overwrite,
vm_map_copyout_page_list, vm_map_copyin_page_list): When switching
user_wired_count field of entry between 0 and non-0, accumulate the
corresponding size into the user_wired field of map.
* vm/vm_user.c (vm_wire): Turn host parameter into port parameter, and
inline a version of convert_port_to_host_priv which records whether the host
port is privileged or not.  When it is not privileged, check whether
the additional amount to user_wired will overcome 64KiB.
</content>
</entry>
<entry>
<title>ipc: replace the IPC table with a radix tree</title>
<updated>2015-05-20T09:08:29Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-03-19T23:21:14Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=77b3b60aaee2382142dc7ed50e5b36664cdb21bc'/>
<id>urn:sha1:77b3b60aaee2382142dc7ed50e5b36664cdb21bc</id>
<content type='text'>
Currently, the port names are mapped to an IPC object (e.g. a port)
using a table.  This, however, requires large chunks of continuous
memory, and leads to scalability problems as virtual kernel memory is
a scarce resource.  To avoid excessive overhead, non-contiguous port
names are spilled into a splay tree.

Replace the IPC table with a radix tree.  As the radix tree is able to
store non-contiguous names with reasonable overhead, we can drop the
splay tree as well.

* ipc/ipc_entry.c (ipc_entry_tree_collision): Remove function.
(ipc_entry_cache): New variable.
(ipc_entry_lookup): Replace with a radix tree lookup.
(ipc_entry_get): The free list handling is changed a little.  Adopt
accordingly.
(ipc_entry_free_name): New function.
(ipc_entry_alloc): Adopt accordingly.
(ipc_entry_alloc_name): Likewise.
(ipc_entry_dealloc): Likewise.
(ipc_entry_grow_table): Remove function.
* ipc/ipc_entry.h (struct ipc_entry): Update comment, add field for
name and free list, remove unused fields.
(ipc_entry_cache, ie_alloc, ie_free): New declarations.
(struct ipc_tree_entry): Remove.  Also remove any related declarations.
(ipc_entry_grow_table): Remove declaration.
* ipc/ipc_init.c (ipc_bootstrap): Adopt initialization.
* ipc/ipc_kmsg.c (ipc_kmsg_copyout_header): Use `ipc_entry_alloc'
instead of re-coding it.  Adopt free list handling.
(ipc_kmsg_copyout_object): Adopt free list handling, store the name.
* ipc/ipc_object.c (ipc_object_copyout): Likewise.
(ipc_object_copyout_multiname): Likewise.
* ipc/ipc_space.c (ipc_space_create): Initialize radix tree and free list.
Drop table and splay tree initialization.
(ipc_space_destroy): Free ipc entries and radix tree, remove table and
splay tree cleanup.
* ipc/ipc_space.h (struct ipc_space): Add radix tree, free list, and size.
Remove all fields related to the table and splay tree.
* ddb/db_print.c (db_port_iterate): Adopt iteration.
(db_lookup_port): Adopt lookup.
* include/mach_debug/ipc_info.h: Remove unused parts of the debug interface.
* include/mach_debug/mach_debug.defs: Likewise.
* include/mach_debug/mach_debug_types.defs: Likewise.
* ipc/mach_debug.c: Likewise.
* ipc/ipc_right.c (ipc_right_reverse): Adopt lookup, store name.
(ipc_right_check): Adopt removal.
(ipc_right_destroy): Likewise.
(ipc_right_dealloc): Likewise.
(ipc_right_delta): Likewise.
(ipc_right_copyin): Adopt insertion, adopt removal.
(ipc_right_copyin_two): Adopt removal.
(ipc_right_copyout): Adopt insertion, adopt removal.
(ipc_right_rename): Likewise, also update comment.
* ipc/mach_port.c (mach_port_names): Adopt iteration.
(mach_port_get_set_status): Likewise.
* ipc/port.h: Update comment.
* ipc/ipc_hash.c: Delete file.
* ipc/ipc_hash.h: Likewise.
* ipc/ipc_splay.c: Likewise.
* ipc/ipc_splay.h: Likewise.
* Makefrag.am (libkernel_a_SOURCES): Remove these files.
</content>
</entry>
<entry>
<title>include: Fix typos in comments (found by codespell)</title>
<updated>2015-01-02T19:09:26Z</updated>
<author>
<name>Stefan Weil</name>
<email>sw@weilnetz.de</email>
</author>
<published>2015-01-02T15:02:50Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=01273099a4b7afb3b1c6eac7b31d73f599ef0beb'/>
<id>urn:sha1:01273099a4b7afb3b1c6eac7b31d73f599ef0beb</id>
<content type='text'>
Signed-off-by: Stefan Weil &lt;sw@weilnetz.de&gt;
</content>
</entry>
<entry>
<title>include: add X_IMPORTS to ipc definitions</title>
<updated>2014-12-09T08:34:51Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-11-06T15:57:35Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=c3473992f56e39acd11c6c4e64d6cd1c7d67d37a'/>
<id>urn:sha1:c3473992f56e39acd11c6c4e64d6cd1c7d67d37a</id>
<content type='text'>
This makes it possible to inject imports.

* include/mach/gnumach.defs: Make it possible to inject imports.
* include/mach/mach.defs: Likewise.
* include/mach/mach_host.defs: Likewise.
</content>
</entry>
<entry>
<title>kern: provide notifications about new tasks</title>
<updated>2014-12-09T08:34:51Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-11-04T17:46:42Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=8c4d15d5b824fd02bd6909f6d254828732f3bb7b'/>
<id>urn:sha1:8c4d15d5b824fd02bd6909f6d254828732f3bb7b</id>
<content type='text'>
These notifications are sent to the port registered via
`register_new_task_notification' and provide a robust parental
relation between tasks to a userspace server.

* Makefrag.am: Add task_notify.defs.
* include/mach/gnumach.defs: Add register_new_task_notification.
* include/mach/task_notify.defs: New file.
* kern/task.c (new_task_notification): New variable.
(task_create): Send new task notifications.
(register_new_task_notification): Add server function.
* kern/task_notify.cli: New file.
</content>
</entry>
<entry>
<title>Retire procedure `old_mach_port_get_receive_status'</title>
<updated>2014-12-09T08:32:01Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-12-06T10:59:32Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=8214da0d2e0e6f01b17c9d1dc1608f0ec3cf3be4'/>
<id>urn:sha1:8214da0d2e0e6f01b17c9d1dc1608f0ec3cf3be4</id>
<content type='text'>
Retire the compatibility RPC `old_mach_port_get_receive_status' that
works like `mach_port_get_receive_status' but returns an
`old_mach_port_status' object that lacks the `mps_seqno' field.

Do not remove the type yet, so we do not break anyones build.  The RPC
stubs currently distributed with the glibc require it.

* include/mach/mach_port.defs (old_mach_port_get_receive_status): Drop RPC.
* include/mach/mach_types.defs (old_mach_port_status_t): Drop type.
* include/mach/port.h (old_mach_port_status_t): Add note to remove
this for the 1.6 release.
* ipc/mach_port.c (old_mach_port_get_receive_status): Drop function.
</content>
</entry>
<entry>
<title>include: make `mach_port_t' payload-aware</title>
<updated>2014-11-28T11:43:36Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-11-21T00:05:49Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=51ebaeb376521c0dbd0020d3515a4b5dfe01a12d'/>
<id>urn:sha1:51ebaeb376521c0dbd0020d3515a4b5dfe01a12d</id>
<content type='text'>
Honor a new macro `MACH_PAYLOAD_TO_PORT' to inject a translation
function mapping payloads to port names in the definition of
`mach_port_t'.

* include/mach/std_types.defs (mach_port_t): Honor
`MACH_PAYLOAD_TO_PORT'.
* include/device/device.defs (reply_port_t): Likewise.
* include/device/device_reply.defs (reply_port_t): Likewise.
* include/device/device_request.defs (reply_port_t): Likewise.
</content>
</entry>
<entry>
<title>include: add a payload-aware intran mutator for device_t</title>
<updated>2014-11-03T10:11:43Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-06-08T11:08:29Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/gnumach.git/commit/?id=79f9f058820be50e510f499b5b4d08144ab71bc2'/>
<id>urn:sha1:79f9f058820be50e510f499b5b4d08144ab71bc2</id>
<content type='text'>
* include/device/device_types.defs (device_t): Add a payload-aware
intran mutator.
</content>
</entry>
</feed>
