Commit Graph

25 Commits

Author SHA1 Message Date
manu 10f0bf745b Fix various broken sanity checks in iokit emulation.
Add some methods to IOFramebuffer (DARWIN_IOFBSETBOUNDS,
DARWIN_IOFBSETCURSORVISIBLE) and to IOHIDSystem (DARWIN_IOHIDPOSTEVENT),
all are unimplemented empty shells.
2003-12-09 17:13:18 +00:00
manu 99ee466dbb Move most of the code involved into message header, trailer, and descriptor
construction to inline functions. This removes a lot of redundent code
from Mach services
2003-12-09 11:29:01 +00:00
manu b5139de154 Enforce good santity checks with Mach messages sizes:
1) make sure Mach servers will not work on data beyond the end of the
   request message buffer.
2) make sure that on copying out the reply message buffer, we will not
   leak kernel data located after the buffer.
3) make sure that the server will not overwrite memory beyond the end
   of the reply message buffer. That check is the responsability of the
   server, there is just a DIAGNOSTIC test to check everything is in
   good shape. All currently implemented servers in NetBSD have been
   modified to check for this condition

While we are here, build the mach services table (formerly in mach_namemap.c)
and the services prototypes automatically from mach_services.master, just
as this is done for system calls.

The next step would be to fold the message formats in the mach_services.master
file, but this tends to be difficult, as some messages are quite long and
complex.
2003-11-13 13:40:39 +00:00
manu 60e46c0cc8 Finnally, the missing field in IOHIDSystem keyboard events was identified. The
keyboard now works in XDarwin. Hurrah!
2003-11-02 00:44:19 +00:00
manu bb7e6443cb Remove all our real devices from the IOKit registry, as they won't be
usefull. Emulate only IOHIDSystem, IOFramebuffer and friends in the
registry.

ioreg is able to display the tree and dump the properties.
2003-11-01 18:41:25 +00:00
manu 762ffea0a4 Build again whereas I removed adarwin_ioresource.c (removed before it
was committed...)
2003-11-01 00:42:04 +00:00
manu 53b35abfa2 Parent itarators in the IOKit emulation. A driver can only
have one parent yet (on Darwin, multiple parents are possible: the IOKit
seems to handle a graph more than a tree). Introfuction of a keyboard
driver parent for IOHIDSystem.

The kernel keymapping is still a big mystery.
2003-11-01 00:32:44 +00:00
christos 4bec333ae4 Fix uninitialized variable warnings 2003-10-25 18:37:49 +00:00
manu e7fc3d0217 Correctly terminate the iohidsystem thread (with appropriate cleanups of
the shared memory), when the display server quits. We are now able to
restart the X server without the need to reboot the machine. That's better.
2003-10-25 10:43:45 +00:00
manu 8c5377c3b8 Remove references to wsmux_cdevsw and wsdisplay_cdevsw (how to remove
them completely?)

Add SETCURSORPOSITION operation
2003-10-18 13:27:17 +00:00
manu 45fa851e14 Report keyup and keydown events
Qhen the event queue is full, sleep so that the process will be able to
consume entries
2003-09-30 19:56:54 +00:00
manu 9972873c7d Handle mouseup and mousdown events
Add three sysctl to choose wsdisplay unit and screen and wsmux that
ioframebuffer and iohidsystem will use.
2003-09-14 09:48:42 +00:00
manu 755716d281 Darwin's I/O reverse the mouse's Y axis. 2003-09-13 16:35:47 +00:00
manu 08f5f5b835 Bugfix: notifications sent by iohidsystem kernel threads are to be
hnalded as mmessages coming from the kernel, since the threas has
no p->p_emuldata
2003-09-13 16:07:44 +00:00
manu 11d6605f3f Sync between parent and child in iohdisystem thread so that the child has
time to get its parmeteres before the parent throw them away
2003-09-13 07:56:54 +00:00
manu f9c483a301 Some initial support for IOHIDSystem. This gives us some pointer moves in X11
(not really related the the actual mouse movement, but this will come).

The darwin_iohidsystem_thread reads events from wscons, translates them
into IOHIDSystem events and wakes up the userland client with a notification.
To do this, I had to improve the void implementation of
io_connect_set_notification_port() to actually register something (I assumed
a single notification port, which makes some sense since only one process
seems to be able to open the driver)

Missing bits:
- we do not take event masks given by the process into account.
- the notification message has not been checked against Darwin
- events are badly translated
2003-09-11 23:16:18 +00:00
manu 0229e10bf3 Added a IOFBSETCOLORCONVERTTABLE method in ioframebuffer driver.
Added sanity check for user provided offsets in messages.
2003-07-01 19:15:47 +00:00
manu faba943220 Added IOHIDSystem properties (this is about keyboard mapping)
Also added a ssize arg to mach trap args so that trap handler are aware
of the sent packet size.
2003-06-03 06:48:47 +00:00
manu 1ea26aeafe + In ioframebuffer driver:
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.
2003-05-22 22:07:36 +00:00
manu da05e7b4d3 Added io_service_close and the io_connect_map_memory method for
ioframebuffer's shared meory (used to handle the cursor).

XDarwin and WindowServer now fail on framebuffer mapping.
2003-05-14 18:28:04 +00:00
manu 31b52bb7f2 More efforts on the XDarwin front. Introduce io_connect_method_scalari_structo
and io_connect_method_structi_structo. We don't know at all how this stuff
works, but at least we can imitate what Darwin does.
2003-05-14 14:41:04 +00:00
manu d46d73437c Added the map_memory method for the IOKit, plus an implementation
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.
2003-04-29 22:16:38 +00:00
manu 523dbf2146 Quick and dirty version of io_registry_entry_get_properties. 2003-03-09 18:33:28 +00:00
manu c3be74fe41 Introduced IOKit driver methods. Moved back into Mach some IOKit driver
support that was in Darwin code. I get an empty darwin_iokit.c, which is
getting a good candidate for cvs delete.
2003-02-20 22:39:42 +00:00
manu ca120fe1a2 Match IOHIDSystem and IOFramebuffer request in the IOKit and handle them in
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.
2003-02-16 15:02:05 +00:00