Commit Graph

3249 Commits

Author SHA1 Message Date
atatat
bb33b98bad I obviously put this (__SYSCTL_PRIVATE) here, but I have no
recollection of what it was for and it's now just useless, so it goes.
2004-03-09 03:11:39 +00:00
drochner
aaececd2f4 allow to start other emulations (eg native code)
from here: set p_execsw to the new thing, and call
the new emulation's syscall_intern()

XXX there are more differences to kern_exec.c, sa/ras
related afaics, this is harmliss for now since
netbsd32 doesn't support multithreaded programs yet --
one day one execve() implementation should be shared
by native and netbsd32 code.
2004-02-25 18:15:45 +00:00
drochner
b07c616019 did this ever work? The EXEC_32 flag must be set _before_
exec_aout_prep_*magic(), otherwise setup_stack() fails.
2004-02-20 17:04:27 +00:00
drochner
f0423dfad5 -MID_SPARC->NETBSD32_MID_MACHINE
-check for zero BSS size, as in kern/exec_aout.c rev. 1.23
2004-02-20 16:14:38 +00:00
wiz
d20841bb64 Uppercase CPU, plural is CPUs. 2004-02-13 11:36:08 +00:00
junyoung
9a410f9ed0 Rename es_check in struct execsw to es_makecmds. 2004-02-06 08:02:58 +00:00
tsarna
72489e1ea0 uuidgen(2) syscall. Originally from FreeBSD, ported by John Franklin in
PR#23470, with minor updates by me. This is only the syscall support
from that PR, for now.

Changes: port over fix from FreeBSD for multicast address generation.
Changed bcopy to memcpy.  For now, #ifdef notyet the portions of
kern_uuid.c that are meant to be used by (currently nonexistent) other
things in the kernel.  Added syscall to COMPAT_FREEBSD as well, though
that's currently not useful, as any program new enough to use this call
also uses other syscalls we don't (yet) emulate.
2004-01-29 02:00:02 +00:00
yamt
2a93afdfd5 rename i386 mdlwp flags from MDP_ to MDL_
to avoid confusion with mdproc flags which also have MDP_ prefixes.
2004-01-28 10:48:55 +00:00
mrg
6f15ac16fc delete ktrsyscall32() prototype 2004-01-21 11:28:30 +00:00
atatat
4604fb0abe Remove useless comment 2004-01-17 03:30:14 +00:00
mrg
23884e8622 clean up a little:
- delete ktrsyscall32()
- add a check #ifdef _LP64 to do the conversion if P_32 is set to the
standard ktrsyscall()
- add a couple of similar _LP64/P_32 checks to the systrace code.

this should get systrace working for 32 bit apps as well as complete
ktrace support for "trace_enter/trace_exit" using platforms such as amd64.

XXX: systrace isn't supported on sparc64 currently... (it doesn't use
trace_enter/trace_exit, or have it's own calls to systrace_xxx()...)
2004-01-16 05:03:02 +00:00
mrg
1d9c8161a0 begin to implement some ifreq ioctls... long long way to go. 2004-01-15 14:36:28 +00:00
mrg
28a83c2d9f add a copy of the ktrsyscall() entry point for 32 bit emulated calls.
the main purpose of this function is to adjust the "argsize" value of
the ktrace syscall record, otherwise userland will see N/2 (rounded
down) arguments instead of N.
2004-01-15 14:34:38 +00:00
manu
29638672ea off-by-one error in ary subscript. 2004-01-02 02:09:52 +00:00
manu
996e659ce6 Try to do a better job at Mach port refcount. That's not perfect, though. 2004-01-01 22:48:54 +00:00
manu
0dc13ccc05 Added the getattrlist system call. That was annoying. 2003-12-31 02:55:04 +00:00
manu
d1845c906c - Rework the Mach semaphore code to handle threads instead of processes
- Add 2 system calls: semaphore_signal_thread and sempaphore_signal_all (the
latter being untested)
- semaphore_signal_thread arguments list was wrong
2003-12-30 00:15:46 +00:00
manu
1a96ea0da6 In DPRINTF? replace uprintf, so that we get debug output for daemons too. 2003-12-30 00:14:20 +00:00
manu
5c83b03a81 Added DARWIN_IOFBSETGAMMATABLE
In DARWIN_IOFBSETCLUTWITHENTRIES, split big tables into 128 items chunks
so that they fit in the stackgap (currently 512 bytes)
2003-12-29 01:34:02 +00:00
manu
7ab97b2c76 Added Mach services (no real implementation, just empty shells to make
userland happy)
processor_set_default, host_processor_set_priv, and thread_set_policy
2003-12-29 01:30:27 +00:00
manu
31b3c2a056 Added the semaphore_wait_signal_trap Mach system call (untested) 2003-12-28 23:00:36 +00:00
manu
2c772b20d9 When the catcher of an exception dies before releasing the thread that
raised the exception, don't release the lock, this causes a crash (the lock
shall be released by the process that took it). Wakeup the thread instead,
it will release the lock itself.
2003-12-28 13:28:39 +00:00
manu
48d72491a9 The VRAM offset seems to be the offset of the framebuffer within the VRAM.
Until we really map the whole VRAM, this is 0.
Two missing files in the last commit
2003-12-27 22:06:19 +00:00
manu
afc357e66b Correctly return the VRAM offset in IOFBGETVRAMMAPOFFSET connect method.
With this, WindowServer blanks hals of my screen before crashing the kernel.
That's sweet.
2003-12-26 20:34:34 +00:00
manu
d0de7398af union without a name does not build on i386... 2003-12-26 16:31:29 +00:00
manu
219b24a068 Chand emul.darwin MIB to fit best current practice.
emul.darwin.init.pid instead of emul.darwin.init_pid, and so on.

This breaks backward compatibility with the pre-dynamic sysctl(8) for
emul.darwin, but it has never been available in a formal release, so
it should be alright.
2003-12-26 16:00:53 +00:00
manu
834aafd284 Rework Mach exception and Darwin's ptrace. gdb is now able to attach a
remote process. This new implementation also passes all the test programs
I've written so far.

- When exceptions come from traps, no UNIX signal should evet be sent.
- Add a lock to ensure a debugger handles only one exception at a time
- Use a structure to hold flavor and behavior in exception ports, instead
  of stuffing the two argument into an int.
- Implement new Mach services: thread_suspend, thread_resume and thread_abort
- Implement Darwin's ptrace PT_ATTACHEXC and PT_THUPDATE commands
- Handle NULL second argument correctly in sigprocmask.
- One mistake in the last commit (darwin_tracesig prototype)
2003-12-24 23:22:22 +00:00
manu
3bc6a59873 Small prototype mistake (I'm juggling with too much uncommitted files) 2003-12-24 22:57:22 +00:00
manu
ffb3de5522 Move the sigfilter hook to a more adequate location, and rename it to better
fit what it does.

The softsignal feature is used in Darwin to trace processes. When the
traced process gets a signal, this raises an exception. The debugger will
receive the exception message, use ptrace with PT_THUPDATE to pass the
signal to the child or discard it, and then it will send a reply to the
exception message, to resume the child.

With the hook at the beginnng of kpsignal2, we are in the context of the
signal sender, which can be the kill(1) command, for instance. We cannot
afford to sleep until the debugger tells us if the signal should be
delivered or not.

Therefore, the hook to generate the Mach exception must be in the traced
process context. That was we can sleep awaiting for the debugger opinion
about the signal, this is not a problem. The hook is hence located into
issignal, at the place where normally SIGCHILD is sent to the debugger,
whereas the traced process is stopped. If the hook returns 0, we bypass
thoses operations, the Mach exception mecanism will take care of notifying
the debugger (through a Mach exception), and stop the faulting thread.
2003-12-24 22:53:59 +00:00
manu
ebbd46991b clock_sleep was 10 times too fast because of a wrong constant. 2003-12-21 14:44:43 +00:00
simonb
740725d725 Fix usage of fifth argument to pool_init(). 2003-12-21 07:53:58 +00:00
manu
066436a916 Provide a kernel port for each thread. This makes the emulation of
Mach threads much more accurate: we do not confuse threads and tasks
anymore.
2003-12-20 19:43:17 +00:00
fvdl
d99705e941 Put back Emmanuel's sigfilter hooks, as decided by Core. 2003-12-20 19:01:29 +00:00
manu
b23b73b953 Introduce lwp_emuldata and the associated hooks. No hook is provided for the
exec case, as the emulation already has the ability to intercept that
with the e_proc_exec hook. It is the responsability of the emulation to
take appropriaye action about lwp_emuldata in e_proc_exec.

Patch reviewed by Christos.
2003-12-20 18:22:16 +00:00
grant
44ed233ab5 KNF, spelling and english fixes to some comments. remove trailing
whitespace.
2003-12-18 01:10:20 +00:00
manu
966a0ee30b Darwin's sigprocmask is an hybrid between or modern sigprocmak (old set
argument, large sigset), and the older sigprocset (no old set argument,
small sigset). It feature old set argument and small sigset.

We now emulates this correctly.
2003-12-16 16:13:59 +00:00
manu
d2b4a2c0fa Enable SA_SIGINFO for COMPAT_DARWIN 2003-12-16 13:38:25 +00:00
manu
780bd92b51 Catch signals in clock_sleep, so that sleeping processes can be interupted. 2003-12-09 22:04:25 +00:00
manu
d34fcf6a3b One more property needed by WindowServer 2003-12-09 19:51:51 +00:00
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
98c34875d4 In mach_msg_error, don't display error message when the error
is 0 (no error). This function is often used as a shortcut to
return a short message with retval = 0.

Add error codes to the debug display
2003-12-09 17:10:02 +00:00
manu
b50934fc19 Move exception related code to a dedicated file 2003-12-09 12:13:44 +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
christos
9c81f1b787 make this compile again. 2003-12-09 00:48:54 +00:00
manu
98f233296d Factor the code for OOL data movement into mach_ool_copyin and
mach_ool_copyout.

Handle port namespace and address space translations when OOL
data moves between different processes (untested)
2003-12-08 19:27:38 +00:00
christos
5c9b8df403 remove error(1) comment. 2003-12-08 17:51:53 +00:00
manu
9046478856 Use appropriate macro definitions when filling complex messages
descriptor. This changes nothing but it removes a lot of XXX
2003-12-08 12:03:16 +00:00
manu
df54a7fcc7 When handling complex messages, uses mach_msg_type_descriptor_t until we
know what type a descriptor really is.
2003-12-08 12:02:24 +00:00
manu
4e9539e452 When a task to task message carries ports, translate the port names into the
receiver namespace.

While we are there, refactor mach_msg_overwrite by splitting it into
several smaller functions. It had grown too big to be easily maintainable.
2003-12-07 23:44:14 +00:00
manu
bb9ea468f8 Remove useless and verbose debug message 2003-12-07 10:25:38 +00:00
manu
c29e7d5f16 Added SCHED_INFO flavor in host_info 2003-12-07 10:17:09 +00:00
dmcmahill
3bff1bb631 fix style. Thanks Simon! 2003-12-07 02:01:25 +00:00
dmcmahill
a243add09b regen after schedctl addition. 2003-12-07 01:50:10 +00:00
dmcmahill
82d69cf8b8 Add a dummy entry for syscall #206, schedctl, that simply returns zero.
This lets FlexLM clients run under compat_svr4_32 on sparc64.  Patch
checked by Matt Green.
2003-12-07 01:36:58 +00:00
manu
dc728f311c Don't allow mappings at address zero in vm_allocate: first page is a
red zone in Darwin, and nothing should be mapped there.
While we are here, ifdef DEBUG_MACH_VM all the VM-related debug messages
2003-12-06 19:34:21 +00:00
manu
0951833f2e Remove the reference to struct proc in kernel and host port once the
process terminate, so that no stale pointer can be used if the port is
still referenced
2003-12-06 17:04:50 +00:00
manu
0105d58e0a Don't send Mach exceptions to dying processes 2003-12-06 15:16:38 +00:00
manu
174b751317 In task_terminate, unstop the process so that we can really terminate it now 2003-12-06 15:16:10 +00:00
manu
8f3ee36470 Fix some panics caused by incorrect Mach exceptions reference counts 2003-12-06 15:15:19 +00:00
manu
8019168c34 Remove a useless debug printf 2003-12-06 11:43:56 +00:00
christos
0cc29b2a89 darwin_sysctl is no more. 2003-12-05 22:17:47 +00:00
jdolecek
0e253cf5f5 back the sigfilter emulation hook change off 2003-12-05 21:12:42 +00:00
manu
c79cdf6650 struct darwin_slock is not undefined, it's just machine dependent. 2003-12-05 19:57:44 +00:00
christos
91fec5ebba Make this compile.
- does darwin_sysctl() need to be gc'ed?
- does the darwin root node need to be in struct emul?
- does struct emul need a root sysctl node?
2003-12-05 17:34:56 +00:00
manu
6d6c56a0dc Add the kdebug_trace system call. It does nothing but dumping anything it
gets. dyd uses that feature when DYLD_TRACE is set.
2003-12-04 23:59:50 +00:00
manu
632ce64965 When wakeing up a process that was sleeping for a signal when we have a Mach
exception, don't temper with ps_sigwaited.
2003-12-04 22:00:03 +00:00
manu
8a670a0018 Fix newer compiler warning 2003-12-04 21:48:15 +00:00
atatat
13f8d2ce5f Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(),
vfs_sysctl(), etc, routines, along with sysctl_int() et al.  Now all
nodes are registered with the tree, and nodes can be added (or
removed) easily, and I/O to and from the tree is handled generically.

Since the nodes are registered with the tree, the mapping from name to
number (and back again) can now be discovered, instead of having to be
hard coded.  Adding new nodes to the tree is likewise much simpler --
the new infrastructure handles almost all the work for simple types,
and just about anything else can be done with a small helper function.

All existing nodes are where they were before (numerically speaking),
so all existing consumers of sysctl information should notice no
difference.

PS - I'm sorry, but there's a distinct lack of documentation at the
moment.  I'm working on sysctl(3/8/9) right now, and I promise to
watch out for buses.
2003-12-04 19:38:21 +00:00
manu
ac7838e90f In the basic thread info, suspend count is the suspend sempahore. Just return
0 for now. This is plain wrong, but at least it allows gdb to startup a
program.
2003-12-03 22:25:46 +00:00
manu
18e13eee35 Add a sigfilter emulation hook. It is used at the beginning of kpsignal2()
so that a specific emulation has the oportunity to filter out some signals.

if sigfilter returns 0, then no signal is sent by kpsignal2().

There is another place where signals can be generated: trapsignal. Since this
function is already an emulation hook, no call to the sigfilter hook was
introduced in trapsignal.

This is needed to emulate the softsignal feature in COMPAT_DARWIN (signals
sent as Mach exception messages)
2003-12-03 20:24:51 +00:00
manu
7973f2217b Rework Mach exceptions and softignals
Exceptions coming from a trap are generated from darwin_trapsignal()
softsignals are from darwin_sigfilter(), a function that is called
from darwin_trapsignal() and from kpsignal2() [the latter from a
emulation specific hook which is not yet committed]

Make some sanity checks to avoid sending data to a port with no receiver.

See http://mail-index.netbsd.org/tech-kern/2003/12/01/0008.html and
follow-ups for details.
2003-12-03 18:40:07 +00:00
manu
057381d1b4 Move machine dependent definitions to machine dependent headers. 2003-12-03 18:25:44 +00:00
manu
20fbf8c756 Trace data movement with vm_read and vm_write 2003-12-03 18:19:12 +00:00
manu
eff089cdc0 More santity checks when sending data to a port: is there someone listening
on the receive end?
2003-12-03 18:18:43 +00:00
manu
437424d5f6 I forgot to commit this file for vm_machine_attribute to build correctly 2003-11-30 20:42:55 +00:00
manu
ab8a1b7902 Add task_terminate 2003-11-30 20:42:03 +00:00
manu
540ad6ee85 Fix minor bug in the script that generate Mach services files (the master
fie tag was not copied)
2003-11-30 00:09:59 +00:00
manu
097771219f Implement vm_read, vm_write, and a framework for vm_machine_attribute.
THe machine dependent bit nees to be written.
2003-11-29 23:56:08 +00:00
manu
23a18da8cd To lookup a map entry in vm_map, use uvm_map_lookup, and not uvm_map_findspace,
which will not work on already mapped objects.
2003-11-28 08:03:14 +00:00
manu
8aa5d7b0f3 In Mach_task_suspend, stop the process without awaking its parent, this is
wrong on the semantic front; the spurious wakeup confuses Darwin's gdb.

Allow vm, task and thread operations on remote processes. The code to pick up
the remote process is in mach_sys_msg_trap(), so that any Mach service can
use it.
2003-11-27 23:44:49 +00:00
jdolecek
6a23b29f58 Regen: add new syscalls to the list 2003-11-26 19:23:29 +00:00
jdolecek
95ad68c571 add the new syscalls to the list 2003-11-26 19:22:57 +00:00
he
ea56bcee84 Hide the register number constants behind an _R_ prefix, and also
rename FPBASE to _FPBASE, so that we avoid polluting the user's
name space when e.g. <sys/ptrace.h> is included.  Previously, the
PC symbol in mips/regnum.h would conflict with the declaration of
the external variable by the same name in termcap.h, as discovered
by the ``okheaders'' regression test.
2003-11-26 08:36:49 +00:00
manu
9f69fbc7dc When sending exception with identity, include right names in the
receiver name space, not the sender one.
2003-11-25 23:17:40 +00:00
christos
5b1f7c5277 lr is uninitialized if we goto out1 2003-11-25 21:59:31 +00:00
manu
c5006e8c0c Outch, uninitialized variable. How could that work before? 2003-11-25 17:09:24 +00:00
manu
206a81affc Don't change process' special ports on exec(). If gdb attached the process,
it holds rights to the special ports, and it expects the rights to be valid
even after the process calls exec().
2003-11-25 13:22:38 +00:00
manu
ae4ac4f570 Also allow to change special and exception ports from a remote process 2003-11-24 20:30:19 +00:00
manu
2569c624db Don't free a buffer before we finished reading it 2003-11-24 17:20:58 +00:00
manu
1147a0b1e6 Enable tracing of out of line data sent with Mach message 2003-11-24 16:51:33 +00:00
manu
c7f488a7ae typo 2003-11-24 15:06:09 +00:00
manu
662a14a8e6 Once a process has the kernel port to another process or thread, it can
use it to get process state and other stuff. It's not clear if this can
be used to modify exception ports or special ports (this needs to be
tested)
2003-11-24 14:31:40 +00:00
manu
c36ad94b40 Add HW_PAGE_SIZE sysctl 2003-11-22 23:26:52 +00:00
manu
48b5fdb14d Don't use the target port in task_for_pid: it is only usefull on
multiple-machine configurations -- something we don't do yet.
2003-11-22 17:17:55 +00:00
manu
43b8c2c38e Avoid re-allocations of darwin_emuldata structures by COMPAT_MACH. This
caused a memory leak, and as mach_emuldata is shorter than darwin_emuldata,
it caused memory corruption.
2003-11-20 22:05:25 +00:00
manu
3c00d1aad5 Start to implement another strange feature: signals as Mach software
exceptions. This can be requested with ptrace, and cause signals to
be transformed into a particular kind of exception.
2003-11-20 07:12:34 +00:00
christos
5a02ed0f97 - don't use MALLOC for non constant counts
- check malloc() size.
2003-11-19 16:43:38 +00:00
christos
4ca4498262 Don't include malloc.h if you are not going to use it. 2003-11-19 15:48:21 +00:00
christos
42e971bfba Previous fix was incomplete; did not handle negative values.
It is best to use size_t's when dealing with sizes, so that
testing for negative ones, is not needed.
2003-11-19 15:46:16 +00:00
itojun
7db67502f8 avoid integer type truncation. be picky about integer computation overflow.
inspired by ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.3/i386/011_ibcs2.patch
2003-11-18 19:46:37 +00:00
manu
28116d3012 Don't release the bootstrap port too much, as it is shared between
processes.
2003-11-18 15:57:13 +00:00
manu
74076749f8 Avoid leaking some Mach ports allocated in the kernel on fork, exec and
exit operations.
2003-11-18 14:11:33 +00:00
manu
2079e3b2b5 SIGTRAP is used for breakpoints 2003-11-18 11:20:34 +00:00
manu
e04d06c9bb More work on exceptions. Once a task has raised an exception, it remains
blocked in the kernel. The task that catched the exception may unblock
it by sending a reply to the exception message (Of course it will have
to change something so that the exception is not immediatly raised again).

Handling of this reply is a bit complicated, as the kernel acts as the
client instead of the server. In this situation, we receive a message
but we will not send any reply (the message we receive is already a reply).
I have not found anything better than a special case in
mach_msg_overwrite_trap() to handle this.

A surprise: exceptions ports are preserved accross forks.

While we are there, use appropriate 64 bit types for make_memory_entry_64.
2003-11-18 01:40:18 +00:00
manu
d4b49d8b97 Illegal instruction exceptions
Warning on non-supported exception in task_set_exception_ports
Implementation of task_get_exception_ports
2003-11-17 13:20:06 +00:00
keihan
0714799990 www.netbsd.org -> www.NetBSD.org 2003-11-17 10:07:58 +00:00
manu
144bfac97b First work on Mach exceptions. Things that can turn into signals on UNIX
may turn into exceptions on Mach: a small message sent by the kernel to
the task that requested the exception.
On Darwin, when an exception is sent, no signal can be delivered.

TODO: more exceptions: arithmetic, bad instructions, emulation, s
software, and syscalls (plain and Mach). There is also RPC alert, but
I have no idea about what it is.

While we are there, remove some user ktrace in notification code, and add
a NODEF qualifier in mach_services.master: it will be used for notifications
and exceptions, where the kernel is always client and never server: we
don't want the message to be displayed as "unimplemented xxx" in kdump (thus
UNIMPL is not good), but we don't want to generate the server prototype
(therefore, STD is not good either). NODEF will declare it normally in the
name tables without creating the prototype.
2003-11-17 01:52:14 +00:00
manu
5d86e6465f Typos in make_memory_entry_64 name definitions 2003-11-16 01:14:07 +00:00
manu
ce84f3934f Implement swtch_pri() and swtch() 2003-11-16 01:12:30 +00:00
manu
4513f19345 iTry to gather as much Mach services names as possible, this way we
will have unimplemented services showing their names in ktrace

Add a new generated file with only service id and name, which will
be included by kdump to display services names.

This removes the need for using the user ktrace facility for services names.
2003-11-15 22:55:35 +00:00
thorpej
052ba0ec50 We have CVS; there is no reason to make .bak files when generating the
syscall tables.
2003-11-15 20:30:59 +00:00
manu
527b59366e regen 2003-11-15 17:45:34 +00:00
manu
26853377eb Try to add all mach servers defined in Darwin in the server list. Most of
them will never be implemented, of course.
2003-11-15 17:44:38 +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
chs
e07f0b9362 eliminate uvm_useracc() in favor of checking the return value of
copyin() or copyout().

uvm_useracc() tells us whether the mapping permissions allow access to
the desired part of an address space, and many callers assume that
this is the same as knowing whether an attempt to access that part of
the address space will succeed.  however, access to user space can
fail for reasons other than insufficient permission, most notably that
paging in any non-resident data can fail due to i/o errors.  most of
the callers of uvm_useracc() make the above incorrect assumption.  the
rest are all misguided optimizations, which optimize for the case
where an operation will fail.  we'd rather optimize for operations
succeeding, in which case we should just attempt the access and handle
failures due to insufficient permissions the same way we handle i/o
errors.  since there appear to be no good uses of uvm_useracc(), we'll
just remove it.
2003-11-13 03:09:28 +00:00
dsl
0342c9586a - Count number of zombies and stopped children and requeue them at the top
of the sibling list so that find_stopped_child can be optimised to avoid
  traversing the entire sibling list - helps when a process has a lot of
  children.
- Modify locking in pfind() and pgfind() to that the caller can rely on the
  result being valid, allow caller to request that zombies be findable.
- Rename pfind() to p_find() to ensure we break binary compatibility.
- Remove svr4_pfind since p_find willnow do the job.
- Modify some of the SMP locking of the proc lists - signals are still stuffed.

Welcome to 1.6ZF
2003-11-12 21:07:37 +00:00
manu
40a3558468 mach_msg_ool_ports_descriptor_t describe a memory region containing
an array of mach_port_name_t, not mach_msg_port_descriptor_t.
2003-11-12 00:00:28 +00:00
manu
b6b7d129a1 Added mach_thread_set_state 2003-11-11 18:12:40 +00:00
manu
a2bed85761 Implement mach_thread_get_state.
While we are here, try to tag machine dependent functions in header files.
also transformed darwin_ppc_*_state into mach_ppc_*_state, as this is
what they really are (COMPAT_DARWIN is on the top of COMPAT_MACH, not the
other way around)
2003-11-11 17:31:59 +00:00
manu
95cc30edca Correctly implement task_suspend and task_resume: the struct proc is
taked from mp->mp_data.
2003-11-11 17:26:32 +00:00
manu
6961fe8c08 Fix an unitialized variable bug that caused a crash in mach_task_suspend().
While we are there, resolved another mystery: the unallocated port described
in the comment removed by this commit was in fact allocated by mach_task_pid().
2003-11-11 15:00:09 +00:00
manu
7c1e8e9716 There is some padding on the reply packet of vm_make_memory_entry too. 2003-11-09 23:17:15 +00:00
manu
ffe118644c Added missing padding fields in vm_make_memory_entry request packet. 2003-11-09 23:07:05 +00:00
manu
d7d1474c7a Typo 2003-11-09 23:05:29 +00:00
manu
70a91d4b66 Better warnings on not fully implemented mach traps. 2003-11-09 11:10:11 +00:00
manu
43a6b5539b Make ngetdents working again, after the strcpy -> strlcpy move broke it
(because of an incorrect len argument)
2003-11-08 22:36:01 +00:00
manu
6d58f326f1 Build again with SIGINFO, patches from Christopher Sekiya. 2003-11-08 21:35:26 +00:00
manu
352595e88d Warkaround warning for uninitalized variables 2003-11-08 21:33:34 +00:00
manu
ee7a6d2747 Restore COMPAT_IRIX signal delivery to an usable state. We provide a
fake sigcode so that trampoline vers checks in sigaction1() will not
return EINVAL. Another fix would be to duplicate code from svr4_sys_sigaction()
to irix_sys_sigaction() and call sigaction1() with vers != 0. We do not
do that because it would duplicate some code.
2003-11-08 21:28:45 +00:00
christos
e348b1067c Catch up with struct proc lock changes. 2003-11-07 17:17:00 +00:00
christos
69ae0c6ad2 Fix unitialized variable use. mmm gcc. 2003-11-07 17:16:39 +00:00
christos
82812c7677 remove malloc.h (we don't need it) 2003-11-05 04:03:43 +00:00
christos
293ab5b508 limit malloc so that corrupted executables don't allocate a lot of memory. 2003-11-05 04:03:21 +00:00
manu
10d03389ac mach_port_get_attributes (incomplete and untested) 2003-11-03 22:17:42 +00:00
manu
90b3ec4640 First attempt at mach_make_memory_entry. Untested 2003-11-03 20:58:18 +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
tsutsui
518c5a2e6a Fix an uninitialized warning. 2003-11-01 17:48:20 +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
drochner
714de0452f adapt for changes to kern/exec_elf32.c 2003-10-31 14:04:35 +00:00
drochner
24082a2293 -ELF_LINK_ADDR does now what irix_load_addr() did, so the latter can
be nuked
-adapt for changes to kern/exec_elf32.c
2003-10-31 14:04:04 +00:00
simonb
f3f5fb123b Fix bogus uninitialised warnings. 2003-10-27 09:58:42 +00:00
chs
3b6d3c710c uninitialized variables 2003-10-27 07:07:34 +00:00
christos
2e92e66166 don't use extra variables where there is no need to. 2003-10-26 19:13:18 +00:00
christos
4ca54df1ef Don't do the tsleep dance if timo is 0; simplify the code. 2003-10-26 19:12:50 +00:00
christos
de6033f456 Add __HAVE_SIGINFO 2003-10-26 08:11:53 +00:00
christos
94c11938c1 Regen 2003-10-26 08:11:17 +00:00
christos
099d2ea44d Add __HAVE_SIGINFO 2003-10-26 08:11:01 +00:00
lukem
f85d2d1c14 Use ${HOST_SH} instead of `sh'.
If necessary, pull in <bsd.sys.mk> to get the definition of HOST_SH;
Makefiles that pull in one of (most of) <bsd.*.mk> will get this anyway.
2003-10-26 07:25:33 +00:00
mycroft
a65f74a513 Previous changes were not correct. 2003-10-25 20:15:13 +00:00
christos
4bec333ae4 Fix uninitialized variable warnings 2003-10-25 18:37:49 +00:00
chs
359e5c8c2e regen 2003-10-25 16:28:09 +00:00
chs
b9a4f8c809 allow COMPAT_SUNOS without COMPAT_43. 2003-10-25 16:27:25 +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
13b975e15d Typo 2003-10-25 10:41:53 +00:00
kleink
004922cd70 Don't use NULL in integer-type assignments/comparisons. 2003-10-21 12:08:11 +00:00
petrov
fd995d7327 More NULL vs not pointer. 2003-10-21 09:02:50 +00:00
fvdl
f4fff513a1 Fix NULL vs. int comparison. 2003-10-21 01:44:45 +00:00
fvdl
38bee36b4c Fix some int vs. NULL comparisons. 2003-10-21 01:38:42 +00:00
fvdl
d114e05b9c Don't compare an integer value against 0. 2003-10-21 01:20:12 +00:00
manu
d77ec799a5 Support Darwin static binaries (I should say: support the only Darwin
static binary: otool). Dynamic binaires have a pointer to the Mach-O
header on the top of the stack, static binaries don't have this, and
having it produced a crash.

One bugfix: the EXEC_MACHO code assumes that entry = NULL means that
the entry point has not been found in the load commands seen so far.
Therefore we need to initialized entry to NULL if we want a static binary
to discover it. (dynamic binaries were forced to iscover it because when
the intepreter load command is found, entry is updated whatever its
value was before).

One hack: Both COMPAT_MACH and COMPAT_DARWIN are willing to run Mach-O
binaries. COMPAT_MACH fails for dynamic binaries because it cannot find
the interpreter in /emul/mach. For static binaires, it will accept them
(and for Darwin static binaries, this will cause a failure). Until we
rite a test for matchinf Darwin static binaries, just swap the order of
COMPAT_MACH and COMPAT_DARWIN in the exec switch so that COMPAT_DARWIN
is tried first (this will have the advantage of speeding up program
startup). EXECSW_PRIO_{FIRST_LAST} does not seem to work...
2003-10-19 07:52:22 +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
3b556e0bb2 Fix error in struct definition 2003-10-18 13:25:27 +00:00
fvdl
4b84b8d930 Don't put the netbsd32_compat*.c files in the 'compat library'. Unconditionally
compiling these causes a ripple effect making it hard to conditionalize
anything on COMPAT_* in the kernel.
2003-10-15 13:32:14 +00:00
hannken
a3a898ff0f Add the gating of system calls that cause modifications to the underlying
file system.
The function vfs_write_suspend stops all new write operations to a file
system, allows any file system modifying system calls already in progress
to complete, then sync's the file system to disk and returns. The
function vfs_write_resume allows the suspended write operations to
complete.

From FreeBSD with slight modifications.

Approved by: Frank van der Linden <fvdl@netbsd.org>
2003-10-15 11:28:59 +00:00
fvdl
ff376b0763 Implement 32bit get/setcontext entry points. 2003-10-13 18:55:30 +00:00
fvdl
fd1fb232de Regenerate. 2003-10-13 18:54:57 +00:00
fvdl
4a68d0f9cb Define compat_16 as valid prefix; define the 1.6 compat sigreturn. 2003-10-13 18:53:35 +00:00
agc
b2b49933f4 Move Matt Green's code from a 4-clause to a 3-clause licence by removing
the advertising clause. Diffs provided in PR 22396 by Joel Baker, the changes
were confirmed to the board by Matt Green.
2003-10-13 14:22:20 +00:00
chs
efdef4fa03 fix typo in previous. 2003-10-11 10:36:46 +00:00
matt
77a7f39625 Define SIGINFO variant of netbsd32_sendsig when __HAVE_SIGINFO is defined. 2003-10-10 23:18:57 +00:00
matt
f2e488d9af Adapt to SIGINFO changes. 2003-10-10 18:08:04 +00:00
matt
0dbe439e05 Adapt ARM Linux compat code to deal with SIGINFO. 2003-10-10 14:44:42 +00:00
matt
25fb6de823 Adapt to SIGINFO changes. 2003-10-10 02:26:54 +00:00
thorpej
8321b2554f Use ksi_signo accessor macro. 2003-10-08 00:39:57 +00:00
christos
07ceba4419 Catch up with chuck's stack changes. Don't map the linux stuff executable
and avoid mapping segments that have 0 size.
2003-10-06 03:45:40 +00:00
itojun
f8641ea112 avoid out-of-bound memory access. found by openbsd "bound" C attribute. 2003-10-01 08:03:48 +00:00
manu
2522a3f784 Build PowerPC again with _HAS_SIGINFO. Remove the ifdef on _HAS_SIGINFO
in the header file since all platforms supported by COMPAT_DARWIN now have it.
2003-09-30 21:04:54 +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
a61584517b Attempt to restore colormap after a display server crashed 2003-09-30 19:49:00 +00:00
martin
a498dbd6b4 constify 2003-09-28 10:24:47 +00:00
martin
b4f2a7e0a0 const poisioning. 2003-09-28 10:22:21 +00:00
tsutsui
f9acb25560 Catch up with const sigset_t. From Christopher SEKIYA. 2003-09-28 08:11:47 +00:00
cl
ea7f5f55b4 fix fmovem argument reference 2003-09-28 00:15:13 +00:00
cl
af0728fff5 catch up with const sigset_t 2003-09-28 00:07:50 +00:00
cl
944c9c43ab catch up with const sigset_t and const ksiginfo_t 2003-09-28 00:04:52 +00:00
christos
deacebb910 Add necessary include file. 2003-09-26 21:28:24 +00:00
christos
7e25d9a162 catch up with const sigset_t 2003-09-26 18:11:47 +00:00
christos
25f1b29f36 bring in MI declarations. 2003-09-26 18:10:32 +00:00
simonb
550b4bef88 Fix "constify sendsig/trapsignal" fallout for non-siginfo'd archs. Test
compiled on most architectures.
2003-09-26 12:02:55 +00:00
christos
cfba45c856 constify sendsig/trapsignal 2003-09-25 22:00:02 +00:00
matt
85a5f3065d Add siginfo support for PowerPC. 2003-09-25 18:42:18 +00:00
cl
cf9f62a8e7 catch up with sys___sigaction14 compat_16 rename 2003-09-23 18:54:24 +00:00
cl
0dd1fb3d17 regen 2003-09-23 18:32:12 +00:00
cl
7e40a36c7f catch up with sys___sigaction14 compat_16 rename 2003-09-23 18:31:03 +00:00
christos
24915aa1a2 Regen. 2003-09-23 14:33:34 +00:00
christos
cf3a45c8c1 Make this compile and link properly. 2003-09-23 14:33:24 +00:00
cl
11af0a3c8d SA_SIGINFO support for m68k (emul linux) 2003-09-22 14:36:42 +00:00
cl
bf9728e0db SA_SIGINFO support for m68k (compat sunos) 2003-09-22 14:34:57 +00:00