A few unfortunate IPC dependecies remain in the server.
mig_vm_write is called explicitly in uxkern/user_reply_msg.c This is the copyout code to move data out to a user task in response to a syscall or signal. This data used to go in a reply message to the emulator. Without an emulator we have to stuff it in the user task with vm_write.
vm_write usually moves data in PAGESIZE chunks but thats not the case with copyout. A bcopy in syscall_vm_write gets a dreaded "Bad Access" exception trying to move small message. As of August, syscall_vm_write was
Todo: Rationalize the vm_read/write code so the syscall version can be used rather than the IPC version.
savage says some of the device_ calls only exist in IPC form. If so, syscall versions need to be added to MK. I suspect the device_*_inband calls. Ask savage.