Commit Graph

186 Commits

Author SHA1 Message Date
matt
027c11539b Add IFNET_FOREACH and IFADDR_FOREACH macros and start using them. 2005-01-24 21:25:09 +00:00
david
bf4bf03db8 Refine bounds check code. 2004-11-07 04:08:37 +00:00
david
090b8be8f9 Bounds check syscall arguments where appropriate 2004-10-27 19:29:56 +00:00
skrll
3780f859c7 Only create a KTR_USER record if it's one of the tracepoints.
OK'd by manu.
2004-10-24 14:42:10 +00:00
yamt
0994e6acb8 introduce a function, proclist_foreach_call, to iterate all procs on
a proclist and call the specified function for each of them.
primarily to fix a procfs locking problem, but i think that it's useful for
others as well.

while i'm here, introduce PROCLIST_FOREACH macro, which is similar to
LIST_FOREACH but skips marker entries which are used by proclist_foreach_call.
2004-10-01 16:30:52 +00:00
skrll
f7155e40f6 There's no need to pass a proc value when using UIO_SYSSPACE with
vn_rdwr(9) and uiomove(9).

OK'd by Jason Thorpe
2004-09-17 14:11:20 +00:00
jdolecek
74436be135 pass the fork flags down to the emulation fork hook, so that emulation
code can use the information for setup
2004-08-08 08:42:03 +00:00
manu
158fe62cd6 Fix a build problem pointed out by wiz 2004-08-02 18:45:53 +00:00
manu
cdd12932c6 Regen 2004-07-28 22:25:10 +00:00
manu
66fc5fb621 Empty shell for Darwin audit API 2004-07-28 22:24:06 +00:00
manu
bc620e30a6 Added the utrace system call 2004-07-28 21:30:00 +00:00
manu
09ee1c0349 The entropy collection sysctl returns the number of record and not the
copied data size.
2004-07-27 20:41:48 +00:00
manu
0a61854f64 Build with debug enabled 2004-07-27 20:41:13 +00:00
manu
a380f938d4 Added kern.debug.getentropy sysctl 2004-07-25 07:54:54 +00:00
manu
c0431a8e23 - Perform alternate path checks in emulation tree for connect with AF_LOCAL
sockets
- When converting Darwin to native sockets, beware that darwin does not set
the size to AF_LOCAL sockets. We need to recompute by hand.
2004-07-24 15:45:27 +00:00
manu
e7d6d3e79b garbage data following darwin_if_msghdr was in fact a struct sockaddr_dl
Fixing this makes ifconfig nearly happy.
2004-07-24 01:00:29 +00:00
manu
59c4edd145 typo that caused ifaddr to report no addresses. 2004-07-23 21:34:01 +00:00
manu
ebac5544ba Don't try to pre-compute the ifaddr data, it just leads to mistakes when
the code that fills the structure is modified and the the size computation
code.

Instead compute while filling the data.
2004-07-23 21:03:33 +00:00
he
e3def7a76a It's not supposed to be possible to commit files with remnants of
CVS conflicts in them, but apparently this happened here around
__KERNEL_RCSID().  Fix it.
2004-07-22 09:43:19 +00:00
manu
d5cb507ae3 If struct sockaddr's sa_family must be transalted, then struct sockaddr
itself needs to be translated. It means that we must translate it in
every system call using it: recvfrom, sendto, connect, accept, bind,
getpeername, getsockname.
2004-07-21 23:43:25 +00:00
manu
828bbdacac Don't assume ARG_MAX < MAXPATHLEN: someone might build with a modified
constant
2004-07-21 21:45:34 +00:00
manu
00c1d07082 Simplify the socket translation code.
Have the same size in the darwin/native and native/darwin AF translators
2004-07-21 20:57:30 +00:00
manu
941b113c0e Add the sysctl that provides interface enumeration (used by getifaddrs()
library call). Programs such as ifconfig or XFree86 4.4 XDarwin use it.
The emulation is not complete, as ifconfig is not able to display inet6
addresses correctly.
2004-07-21 01:37:57 +00:00
manu
d4d3cc307c commpage function changes:
Copy all the commpages instead of one
Add the missing bcopy function
Wrong function name: pthread_getspecific instead of pthread_specific
2004-07-11 19:38:14 +00:00
christos
b970e18139 Regen 2004-07-07 22:04:27 +00:00
christos
63c19634d0 no #ifdef __powerpc__ here. 2004-07-07 22:03:38 +00:00
manu
67cf1bc043 MacOS X.3 introduces a new sigreturn for PowerPC, with a usercontext
versionning argument. For now we only implement the X.2 flavor.
2004-07-04 21:03:55 +00:00
manu
aab7e2ab6f Useful debug since ktrace doesn't show sysctl arg array. 2004-07-04 20:30:14 +00:00
christos
439d1da971 #ifdef the altivec option, because only powerpc has it. To be fixed in
a better way later.
2004-07-04 15:27:26 +00:00
manu
7fef082024 Move all the MD bits of commpage to a new file.
Map the comm page as RW in kernel (we want to modify it but not to execute it),
and RX in userland (no need to modify it but we want to execute it
2004-07-03 22:17:18 +00:00
manu
318748a9d0 Wrong argument to memset for bzero in commpage. 2004-07-03 17:29:17 +00:00
manu
5d33c4b91c 2^53 does not compute 2 power 53... 2004-07-03 16:47:13 +00:00
manu
26200ee754 In MacOS X.3, the kernel maps tw opages of memory in every user process.
This areas is called the comm pages. It is used to provide fast access to
several data and functions.

The comm pages are mapped starting at 0xffff800 (address chosed so that
absolute branch can be used, so it can be accessed even when dynamic linking
is not ready). NetBSD has the user stack here, so we need to provide a
Darwin-specific stack setup routine which sets the top of the stack at
0xbfff0000.

This implementation is not complete but it does enough to get MacOS X.3
starting again (static binaries run, dynamic binaries still have an issue).
in the comm pages functions, we only implement bcopy, pthread_self and
memcpy.

TODO:
- clean up the powerpc specific code from MD parts
- for now we map only one page to avoid a crash, we want two pages.
- write all the comm functions.
2004-07-03 00:14:30 +00:00
drochner
6f8b4c1216 There is no point in mapping a NetBSD signal trampoline
(which doesn't exist unless COMPAT_16 anyway)
into a Darwin emulation process' address space.
2004-06-24 17:02:06 +00:00
atatat
190adb15c3 Sysctl descriptions under emul subtree. 2004-05-25 04:29:08 +00:00
pk
4a04452106 Use crdup(), instead of crget()+memcpy(). 2004-05-02 12:32:22 +00:00
atatat
3f800573aa Be consistent about using sysc_init_field() 2004-04-25 05:54:38 +00:00
christos
6bd1d6d4db Replace the statfs() family of system calls with statvfs().
Retain binary compatibility.
2004-04-21 01:05:31 +00:00
christos
a97d60211a fix undefined variable. 2004-03-29 21:43:28 +00:00
atatat
19af35fd0d Tango on sysctl_createv() and flags. The flags have all been renamed,
and sysctl_createv() now uses more arguments.
2004-03-24 15:34:46 +00:00
atatat
4604fb0abe Remove useless comment 2004-01-17 03:30:14 +00:00
manu
0dc13ccc05 Added the getattrlist system call. That was annoying. 2003-12-31 02:55:04 +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
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
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
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