Commit Graph

2845 Commits

Author SHA1 Message Date
dsl 9be8ac5294 Alternative pid/proc allocater, removes all searches associated with pid
lookup and allocation, and any dependency on NPROC or MAXUSERS.
NO_PID changed to -1 (and renamed NO_PGID) to remove artificial limit
on PID_MAX.
As discussed on tech-kern.
2003-03-19 11:36:32 +00:00
manu 523dbf2146 Quick and dirty version of io_registry_entry_get_properties. 2003-03-09 18:33:28 +00:00
he 385f6e3afe Remove to local declarations of "p" which are no more in use, to make
this compile again.
2003-03-08 01:20:21 +00:00
manu a6757a0de1 Less accurate vm_region, but it sticks better to Darwin results. 2003-03-05 22:39:48 +00:00
dsl 4c320740d2 Use do_setres{u,g}id for osf1_sys_set{u,g}id 2003-03-05 18:47:39 +00:00
dsl dfdb668a2e Reimplement linux_sys_setresgid() in terms of do_setresgid() 2003-03-05 18:46:11 +00:00
dsl eabc565aaf Use do_setresuid() to implement linux_sys_setresuid() 2003-03-05 18:44:46 +00:00
manu 03dfd69a01 Added vm_region and vm_msync traps 2003-03-03 22:07:39 +00:00
thorpej 5afa6838bf Do the syscall_plain/syscall_fancy dance on ARM. Shaves a fair number
of cycles off the syscall overhead.

Since all COMPAT_LINUX platforms now support __HAVE_SYSCALL_INTERN,
garbage-collect the LINUX_SYSCALL_FUNCTION stuff.
2003-03-01 04:36:38 +00:00
manu edcf894563 Notification request packets format, nothing implemented yet. 2003-02-28 09:30:23 +00:00
cgd cd122e4a2d in irix_syssgi_mapelf: use vn_marktext where necessary, and make sure
a file isn't accidentally left 'USE'd if an error occurs.  reviewed
by simonb.
2003-02-28 02:12:55 +00:00
yamt da8d9f98f5 make compat_linux struct file interlock friendly. 2003-02-27 16:04:15 +00:00
enami 37d7d10857 Remember the allocated ptimer object so that it won't leak. 2003-02-23 23:36:35 +00:00
pk 2931081a79 Make updating a file's reference and use count MP-safe. 2003-02-23 14:37:32 +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
jdolecek 25d6f89a59 update emul alarm syscalls to recent timer changes
problem encountered by Luke Mewburn for linux emul, problem spot
found by Enami Tsugutomo
2003-02-19 11:23:53 +00:00
jdolecek 853290d652 remove local idea of ELF_AUX_ARGSIZ - since this emul uses elf32_copyargs(),
it shouldn't override the size
2003-02-19 09:45:48 +00:00
manu 749de24f94 - Make sure darwin_iokit_ioframebuffer is invoked
- fix a mistake in mach_io_registry_entry_get_property message format
2003-02-16 18:33:35 +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
dsl 71d53fb2ed Use find_stopped_child() and proc_free() in compat wait() code to
avoid code duplication.
(approved by christos)
2003-02-14 10:19:14 +00:00
christos e163414ca5 include more opt_ files for nfs. 2003-02-10 17:33:13 +00:00
christos 1bc826ce5e getfh is needed for NFS server. 2003-02-10 17:30:08 +00:00
manu 80a30f1a31 A first attempt at providing access to our device tree through the IOKit.
Darwin's ioreg is able to display the tree.
2003-02-09 22:13:46 +00:00
manu 44af8c7eb4 More IOKit shell. This makes ioreg looping on device discovery: foobar
has a child called foobar, and so on.
2003-02-07 20:40:37 +00:00
manu d0139ca922 More iokit shell: it does nothing, but WindowServer get a bit more far
away and ends with a SIGSEGV.
2003-02-07 16:56:19 +00:00
manu 2e73bb80fe More IOKit basics. Also introduced a mach_port flag to get a precise idea
of what port is sending a message to the kernel.
2003-02-05 23:58:09 +00:00
manu 357afc4e2f Some bits of the first iokit call 2003-02-04 22:47:41 +00:00
manu a643d6a63e Fixed typo 2003-02-03 20:46:55 +00:00
manu 2cd19ab0b2 - WindowServer wants io_master_port? Give it a port!
- 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?
2003-02-02 19:06:31 +00:00
manu 34a458238c For cproc_t, use a per thread value instead of a per process value. ifdef
out l_emuldata in struct lwp until we actually use it.
2003-01-30 19:14:18 +00:00
atatat bede65472d Cull unused variables. Sigh.
PS - Cross compilers are cool.
2003-01-29 07:00:35 +00:00
manu 26723dc292 lwpified sproc emulation so that it builds and works again. COMPAT_IRIX
now has the level of functionnality it had before SA merge
2003-01-28 23:47:42 +00:00
atatat 59b8237f5e No need to pick a "default address" for mmap in compat code, since we
merely call sys_mmap() at the end anyway, and that will pick the
address for us, if it's needed.

Likewise for checking if /dev/zero is being mapped.
2003-01-28 21:57:42 +00:00
manu 7e15e89c0a Fixed dumb bug 2003-01-26 19:32:04 +00:00
manu ce8bd172b2 For thread creation, make the newly created thread runnable. Mach threads
are now functionnal again.
2003-01-26 19:02:14 +00:00
manu 55215e5266 Remove right duplication on thread creation, which became useless now we
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...
2003-01-26 12:39:32 +00:00
manu 82a9c6faf0 Use per process emuldata for the thread id for now, but this will change
shortly. This makes hello world working again.
2003-01-24 22:35:43 +00:00
fvdl a3ff3a3038 Bump daddr_t to 64 bits. Replace it with int32_t in all places where
it was used on-disk, so that on-disk formats remain the same.
Remove ufs_daddr_t and ufs_lbn_t for the time being.
2003-01-24 21:55:02 +00:00
manu cb771e3c64 Make the beast build again (but it is still probably broken) 2003-01-24 21:37:01 +00:00
rafal 4490fd7293 Last bit of LWP'ification of compat_irix; this is probably wrong, but at
least it compiles and manu said he'd fix it up and test the whole kit when
he had a chance.
2003-01-22 21:04:50 +00:00
christos 2bb5209b1b lwp'ify 2003-01-22 17:48:02 +00:00
christos ed339f5241 regen. 2003-01-22 17:47:47 +00:00
christos bcc3424bc3 regen 2003-01-22 17:47:35 +00:00
christos 498aa03f2a lwp conversion 2003-01-22 17:47:03 +00:00
rafal 5234d1eb92 Mechanical LWP'ification of IRIX compat code; untested as of right now. 2003-01-22 12:58:22 +00:00
matt b03d17694a Do a preliminary switchover of the mach code to lwp's. It compiles now
but probably doesn't work.   That's for someone who understand this code
better.
2003-01-21 04:06:06 +00:00
matt de92ce633f Regen. 2003-01-21 04:02:37 +00:00
matt d8ad92c6b6 Add <sys/sa.h> 2003-01-21 04:02:10 +00:00
matt 312dfd8487 Adapt to the LWP world. 2003-01-21 04:01:09 +00:00
matt e093b867e9 Regen. 2003-01-21 04:00:02 +00:00
matt 6d793da904 Add <sys/sa.h> 2003-01-21 03:59:27 +00:00
jdolecek d4ad86a080 finish LWPify 2003-01-21 03:16:06 +00:00
martin 5adc155ebd Fix lwp_wait syscallargs. This closes PR 19941. 2003-01-20 08:27:40 +00:00
simonb b4cf696706 Don't need a semi-colon after the closing brace of a function. 2003-01-20 07:18:59 +00:00
simonb 276fd1665c The Double-Semi-Colon Police. 2003-01-20 05:29:53 +00:00
simonb 2eaedc2774 Remove variables that are only assigned too but not referenced. 2003-01-20 01:35:11 +00:00
thorpej 20ba6d6368 Regen to get correct RCS ID. 2003-01-19 16:49:12 +00:00
thorpej 39279e53b5 Merge the nathanw_sa branch. 2003-01-19 16:41:46 +00:00
thorpej f17177355f Regen for correct RCS ID. 2003-01-18 23:43:25 +00:00
thorpej d88bc9c3a2 Regen for correct RCS ID. 2003-01-18 23:36:48 +00:00
thorpej 9509ca1682 Regen for correct RCS IDs. 2003-01-18 23:36:09 +00:00
thorpej 6f62ffcd13 Regen to get correct RCS IDs. 2003-01-18 23:34:34 +00:00
thorpej a03cb2b851 Regen to get correct RCS ID. 2003-01-18 23:28:15 +00:00
christos c0b8b6d8c6 add compat_ossaudio 2003-01-18 22:34:23 +00:00
jdolecek 79509d7602 LWPify 2003-01-18 21:26:36 +00:00
thorpej 41978f782e Merge the nathanw_sa branch. 2003-01-18 21:21:28 +00:00
thorpej 8c0ee6a16b Merge the nathanw_sa branch. 2003-01-18 17:31:06 +00:00
thorpej 6576211dc0 Regen: Merge the nathanw_sa branch. 2003-01-18 08:49:59 +00:00
thorpej 71f181a907 Merge the nathanw_sa branch. 2003-01-18 08:49:22 +00:00
thorpej 6881e93b29 Regen: Merge the nathanw_sa branch. 2003-01-18 08:45:04 +00:00
thorpej 9b46ebe0bd Merge the nathanw_sa branch. 2003-01-18 08:44:26 +00:00
thorpej 84797271c2 Regen: Merge the nathanw_sa branch. 2003-01-18 08:38:50 +00:00
thorpej 540ba7bda5 Merge the nathanw_sa branch. 2003-01-18 08:38:14 +00:00
thorpej afdb47f3fb Regen: Merge the nathanw_sa branch. 2003-01-18 08:36:45 +00:00
thorpej fc54d21534 Merge the nathanw_sa branch. 2003-01-18 08:36:15 +00:00
thorpej 8cb74219bb Regen: Merge the nathanw_sa branch. 2003-01-18 08:35:00 +00:00
thorpej ca3240e089 Merge the nathanw_sa branch. 2003-01-18 08:33:08 +00:00
thorpej 34d5235cfa Regen: Merge the nathanw_sa branch. 2003-01-18 08:32:33 +00:00
thorpej df6b501dd4 Merge the nathanw_sa branch. 2003-01-18 08:32:04 +00:00
thorpej 27bb1001b7 Regen: Merge the nathanw_sa branch. 2003-01-18 08:29:08 +00:00
thorpej 6acc60d22d Merge the nathanw_sa branch. 2003-01-18 08:28:25 +00:00
thorpej 53e750d150 Regen: Merge the nathanw_sa branch. 2003-01-18 08:19:32 +00:00
thorpej 7024ec54cc Merge the nathanw_sa branch. 2003-01-18 08:18:50 +00:00
thorpej 9653eab062 Regen: Merge the nathanw_sa branch. 2003-01-18 08:07:52 +00:00
thorpej 3d60b73d4f Merge the nathanw_sa branch. 2003-01-18 08:06:20 +00:00
thorpej 42f134e02f Regen: Merge the nathanw_sa branch. 2003-01-18 08:05:32 +00:00
thorpej 46141a3135 Merge the nathanw_sa branch. 2003-01-18 08:02:46 +00:00
thorpej 16311b53c0 Regen: Merge the nathanw_sa branch. 2003-01-18 07:45:34 +00:00
thorpej 064d091d71 Merge the nathanw_sa branch. 2003-01-18 07:44:50 +00:00
thorpej 062c115a84 Regen: Merge the nathanw_sa branch. 2003-01-18 07:41:34 +00:00
thorpej a9d45e7ce9 Merge the nathanw_sa branch. 2003-01-18 07:40:44 +00:00
thorpej 790d584247 Regen: Merge the nathanw_sa branch. 2003-01-18 07:37:32 +00:00
thorpej f12607ba9f Merge the nathanw_sa branch. 2003-01-18 07:36:56 +00:00
thorpej acac9c96bb Regen: Merge the nathanw_sa branch. 2003-01-18 07:33:52 +00:00
thorpej 6762b37e5a Merge the nathanw_sa branch. 2003-01-18 07:28:34 +00:00
thorpej a83ddff873 Regen: Merge the nathanw_sa branch. 2003-01-18 07:21:52 +00:00
thorpej 179f14e286 Merge the nathanw_sa branch. 2003-01-18 07:21:14 +00:00
thorpej 85cf298c95 Regen: Merge the nathanw_sa branch. 2003-01-18 07:18:30 +00:00
thorpej d2275d51e1 Merge the nathanw_sa branch. 2003-01-18 06:55:21 +00:00
jdolecek 98cb17d023 add support for SNDCTL_DSP_SETDUPLEX ioctl to ossaudio emulation code
code provided by Andreas Wrede in PR kern/19793
2003-01-12 08:20:05 +00:00
oki 1b09272dff Use text size in COFF header instead of size of section header
marked as COFF_STYP_TEXT.
2003-01-08 17:43:51 +00:00
oki 31789669fa Use uprintf for debug print. 2003-01-08 12:29:44 +00:00
simonb 775343ebae Fix a tyop. 2003-01-08 00:39:44 +00:00
wiz 1035faff1d writable, not writeable. 2003-01-06 20:30:28 +00:00
wiz c053751628 compatibility, not compatiblity. 2003-01-06 13:26:24 +00:00
wiz 617b132aac Spell output with two ts. 2003-01-04 23:43:02 +00:00
manu f656d621e7 Here we enter the land of IOKit where the shadows lie.
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.
2003-01-04 15:15:01 +00:00
manu 4b219b054a I don't know where I saw this 8 bit shift for the inherit argument of
vm_inherit, but it's not usefull (it's even harmful), so remove it.
WindowServer still crashes but later.
2003-01-04 13:17:07 +00:00
manu 7f468ee029 Bug fixes for the fake pid hack.
WindowServer is now able to talk with mach_init to exchange bootstrap
information.
2003-01-03 14:47:27 +00:00
manu 80d406d8fe FIxed the way rights are recycled: the refcount makes only sense for
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.
2003-01-03 13:40:04 +00:00
manu 2c04ce0604 A better implementation of right carried by messages. We now correctly create
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.
2003-01-02 12:46:06 +00:00
manu 0d5c4544d1 The first int on the stack is not the page size, it's the address of the
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
2003-01-01 15:18:25 +00:00
manu f3e11e72e9 Introduce port names, deallocate mach ressources at Darwin process exit 2002-12-31 15:47:37 +00:00
manu 6f978415df When the kernel transmits a message to a processs, remote and local port
are swapped. Also added some debug.
2002-12-31 13:09:38 +00:00
manu 48ad3f41b6 Remove some debug and make it build again wihout DEBUG_MACH 2002-12-31 09:32:03 +00:00
manu 1d1b901b90 bug fix: in debug functions, the port set right and the port set members
wer mixed up
2002-12-30 19:32:15 +00:00
manu d9f2a8dbcd - When mach_init saves the bootstrap port, make it the default bootstrap port
for any program we will launch later. This is a hack to avoid the need
of launching any Darwin binary as a child of mach_init
- More and more debug
2002-12-30 18:44:33 +00:00
manu f449715c66 When allocating a receive right on a port, don't forget to change
the reciever.
2002-12-30 12:46:19 +00:00
manu 27427542f4 When the right is not a port set, set the port set head to the right
itself. That way when we want to wakeup a receiver, we just have to
wakeup the port set head, it will work either for port set and for non
port sets.
2002-12-30 12:41:52 +00:00
manu 459d0be3a4 More hacks to make Darwin's /sbin/init happy with its pid. 2002-12-28 00:15:23 +00:00
manu 874517b438 - When MACH_MSG_RCV_LARGE is set, we must return a message with just a header
and a body.
- If mach_init is not availabkle for boostrap requests, try to handle them
in the kernel (we don't really handle them, we just try to avoid hanging there)
- minor tweaks.
2002-12-27 19:57:47 +00:00
manu 3b815ab820 We must also return pid 2 when mach_init asks for its pid after it forked init. 2002-12-27 19:54:54 +00:00
manu f464631d66 Several things:
1) rights should be shared by the threads within a process. While it would
be easier to handle this with the struct proc/struct lwp split, we attempt to
do this now by sharing the right lists. Because each right holds a reference
to struct proc, this might cause some problems later.
2) in pthread_exit, really exit the thread. Also reintialize the righ tlist to
make sure we will not destroy the parent's right list
3) rights can hold multiple permissions on a port (ie: send and receive). Fix th
is.
4) first attempt on right carried by messages. We still have to do rights carrie
d in the message body (complex messages).
2002-12-27 09:59:24 +00:00
manu 20fca78f89 regen 2002-12-26 14:41:34 +00:00
manu bab8693bba Added the mysterious system call 331 (it does not seems to be in the
header files anywhere). This is pthread_exit.
2002-12-26 14:41:05 +00:00
manu 2894c4a53f Handle the kernel clock service by the kernel. 2002-12-26 13:45:17 +00:00
manu f4d5ba5dbd Queue and dequeue message replies from kernel servers. This is less efficient,
but it sticks closer to the actual Mach semantics: the reply is queued at the
end of the queue. Also add more debug messages on port operations.
2002-12-26 11:41:46 +00:00
manu dc403d4519 Bootstrap messages are not for the kernel, they are for mach_init. 2002-12-24 16:40:46 +00:00
manu b2a7ace594 Better error reporting in mach_msg_trap: this system call does not use the
standard error codes.
2002-12-24 15:54:26 +00:00
manu 4d3d28af57 cosmetic 2002-12-24 15:53:46 +00:00
manu 93b65fbd1d regen 2002-12-24 12:29:28 +00:00
manu 185383e0a7 Typo 2002-12-24 12:29:06 +00:00
manu 41bfbd28fe On Darwin, mach_init is the system bootstrap process. It is responsible
for forking the traditional UNIX init(8) and it does the Mach port naming
service. We need mach_init for the naming service, but unfortunately, it
will only act as such if its PID is 1. We introduce a sysctl
(emul.darwin.init_pid) to fool a given process into thinking its PID is 1.
That way we can get mach_init into behaving as the name server.

Typical use:
/sbin/sysctl -w emul.darwin.init_pid=$$ ; exec /emul/darwin/sbin/mach_init
2002-12-24 12:15:45 +00:00
manu c075c4d7f5 Get less debug output 2002-12-24 12:13:15 +00:00
gmcgarry 6b5b61b136 Update for revised ktrsyscall() prototype.
Perhaps this file should be changed to use trace_enter() so that
systrace works for aliased syscalls?  Leave that for someone familiar
with the systrace system.
2002-12-23 01:08:45 +00:00
manu 360f1c3ebe Cosmetic changes, added a debug printf 2002-12-22 21:51:56 +00:00
mrg 131dc6aa08 catch up with changes in sparc64/autoconf.c. 2002-12-22 02:54:34 +00:00
gmcgarry 66c19fc50c Add stubs for scheduler syscalls. 2002-12-22 00:05:59 +00:00
gmcgarry 87aecbbd2c Add scheduler syscalls. 2002-12-22 00:04:29 +00:00
gmcgarry 53bdf646b5 Use yield() for voluntary context switches. 2002-12-22 00:00:22 +00:00
gmcgarry c4b66baf3f We do want yield() for voluntary context switches. Update comment. 2002-12-21 23:57:57 +00:00
manu 8958b6f9ba Handle receive operations on port sets 2002-12-21 23:50:47 +00:00
manu ccd9e9a24d Fix plain bugs that prevented insert_right and move_member from working correctly. 2002-12-21 23:50:00 +00:00
manu 3ee2623baa Make it build again 2002-12-21 23:48:47 +00:00
kristerw 084ae1f838 ibcs2_debug is used only for IBCS2_DEBUG, so no need to define it otherwise. 2002-12-21 15:48:57 +00:00
gmcgarry 16f1be1856 Flag a context switch using need_resched() rather than invoking yield().
Matches the linux compat approach.
2002-12-20 04:58:44 +00:00
manu 3b71b464b2 First attempt on mach ports sets. Also maitian only one list of rights
per process, as segregating recv, send and send_once did not buy anything.
2002-12-19 22:23:06 +00:00
manu f037b240d0 Instead of keeping track of the receiving process in struct mach_port,
keep track of the receive right for the port. There can be only one, and
the receive right references struct proc should we need it.

This makes easier to find the receive right associated with the port.
2002-12-17 22:48:33 +00:00
manu 391c8a71fc In mach_ports_lookup, allow the out of band data mapping anywhere we have
some free space
2002-12-17 22:47:07 +00:00
manu 5ba396cfb3 Added support for exchange of Mach messages between processes.
This does not buy us new functionnality for now, because we still have to
discover how mach_init (which acts as a name server, enabling processes to
discover each other's ports) is able to receive messages from other processes
(this is a bootstrap problem, and the bootstrap port might be the place to
search).

While we are there:
- removed a lot of debug which is now available using ktrace.
- reworked message handling to avoid mutliple copyin/copyout of the
same data. ktrace of Mach message now uses the in-kernel copy of the
message instead of copying it from userland.
- packed mach trap handlers arguments into a structure to avoid modifying
everything next time we have to add an argument.
2002-12-17 18:42:54 +00:00