We try to map the console framebuffer through wsdisplay. It seems to work,
but we still need to _see_ something.
XXX Framebuffer size discovery is borken.
+ In ioframebuffer and iohidsystem:
More methods and more debug for io_connect_method_*
+ A few new IOKit mach traps.
return packet was wrong (port descriptor instead of VM area descriptor),
thus leading to SIGSEGV when calling IOKit's IOFBCreateSharedCursor().
Now this is fixed we can move forward again on graphic mode.
for the IOHIDSystem driver in Darwin. IOHIDSystem provides access
to user interface devices.
Communication between userspace and kernel is done through a shared
memory page. Our plan is to have a kernel thread waiting on wscons
events (for now it just does nothing), and have it feeding the
shared page.
request a mapping at fixed address, overlaying previously existing mappings.
The overlay is done by unmapping (sys_munmap) before mapping at fixed
location. This makes XDarwin able to link and run.
Darwin specific files. The handler does nothing yet.
This needs some improvement. Darwin attaches an IOHIDSystem device to
each human-interface device in the tree: mouse, keyboard, and a few others.
For now we only emulate one IOHIDSystem device.
- introduce mach_port_destroy (badly emulated for now)
- on fork/exec, don't set l_private, as the process might be not mature
enough to survive a proc_representative_lwp call (-> kernel panic)
Once we give WindowServer the io_master_port, it sends a message to it:
305 WindowServer MMSG id 2804 [0x1310009 -> 0x131000e] -12016 bytes, flags 0
x1513
0x0000 0x00001513 0xffffd110 0x0131000e 0x01310009 .........1...1..
0x0010 0xffffcfd0 0x00000af4 0x00000000 0x00000000 ................
0x0020 0xffffcf60 0x00000052 0x3c646963 0x74204944 ...`...R<dict ID
0x0030 0x3d223022 0x3e3c6b65 0x793e494f 0x50726f76 ="0"><key>IOProv
0x0040 0x69646572 0x436c6173 0x733c2f6b 0x65793e3c iderClass</key><
0x0050 0x73747269 0x6e672049 0x443d2231 0x223e494f string ID="1">IO
0x0060 0x48494453 0x79737465 0x6d3c2f73 0x7472696e HIDSystem</strin
0x0070 0x673e3c2f 0x64696374 0x3e0047cc g></dict>.G.
Did you ever dreamt about system call arguments in XML?
are using lwp.
Enable kill -9 to kill parent thread waiting for its child.
Use upcallret instead of child_return for the newly created lwp.
Add debug messages for thread creation.
Thread creation are still broken...
There are two new mach traps:
mach_vm_make_memory_entry, mach_host_get_io_master. Now we need to find
the documentation to understand what they are supposed to do.
send, send once, and dead names, not for port sets and receive rights.
This make vi and telnet able to work again.
Also removed the all process right list and its lock, which got useless. The
all process lock is replaced by a per process lock, located in struct
mach_emuldata.
Also one bug fix: we did not correctly called Mach hooks for struct emuldata
initialization and release for Darwin processes.
the right in the destination process.
This is a small step backward for functionnality: vi does not work anymore
because our right checks cause some spurious errors, but this will be fixed
later.
mach-O header. This is a guess based on what we have on Darwin, we need
to check other Mach systems to see if this value is Darwin specific or not.
Also updated copyright and removed useless debug