Commit Graph

1631 Commits

Author SHA1 Message Date
rwatson
33a1e03065 Remove WITNESS from GENERIC by default: as we grow more locks, this gets
slower, and may be impeding adoption of -CURRENT by developers.  We
recommend turning on WITNESS by default on crash boxes, and when doing
locking development.  It will probably get turned on by default for a week
or two following any major locking commits, also.

Approved by:	all and sundry (jhb, phk, ...)
2002-02-13 07:44:59 +00:00
jhb
2b39165550 Don't grab the ICU lock while reading the current pending interrupts and
current masked interrupts from the AT PIC.

Requested by:	bde
2002-02-08 18:30:36 +00:00
jhb
1d8d40a194 Turn SMP back on by default in GENERIC on the Alpha. 2002-02-08 18:25:07 +00:00
jhb
62824956eb Turn interrupt thread preemption back on on the alpha.
Tested by:	mjacob
2002-02-08 18:23:46 +00:00
peter
3589cfc992 Bah, I managed to turn cosmetic things into real bugs. Fix shadowed
variable declarations. :-(  Definately not my day today.
2002-02-08 08:56:01 +00:00
peter
1470f0dc97 Fix a long line introduced in previous commit. 2002-02-07 22:29:41 +00:00
peter
5a17526c20 Fix long line added in previous commit. 2002-02-07 22:28:24 +00:00
peter
a2e9d206a5 Patch up some long lines introduced in previous commit. 2002-02-07 22:26:51 +00:00
peter
e32237fcfa Fix style bug introduced in previous commit. 2002-02-07 22:26:07 +00:00
mjacob
c83077ee4a You cannot take the address of a variable with the 'register' qualifier.
MFC after:	1 day
2002-02-07 22:06:23 +00:00
julian
b5eb64d6f0 Pre-KSE/M3 commit.
this is a low-functionality change that changes the kernel to access the main
thread of a process via the linked list of threads rather than
assuming that it is embedded in the process. It IS still embeded there
but remove all teh code that assumes that in preparation for the next commit
which will actually move it out.

Reviewed by: peter@freebsd.org, gallatin@cs.duke.edu, benno rice,
2002-02-07 20:58:47 +00:00
phk
fb9c14949a GC the PC_SWITCH* symbols which are not used in assembly anymore. 2002-02-07 10:27:58 +00:00
mjacob
049aebbb73 Replace the MFREE that Marshal (Quick Draw) Dillon apparently didn't look for.
MFC after:	1 day
2002-02-07 08:39:26 +00:00
jhb
156f4c8aea Fixes for alpha pmap on SMP machines:
- Create a private list of active pmaps rather than abusing the list of all
  processes when we need to look up pmaps.  The process list needs a sx lock
  and we can't be getting sx locks in the middle of cpu_switch()
  (pmap_activate() can call pmap_get_asn() from cpu_switch()).  Instead, we
  protect the list with a spinlock.  This also means the list is shorter
  since a pmap can be used by more than one process and we could (at least
  in thoery) dink with pmap's more than once, but now we only touch each
  pmap once when we have to update all of them.
- Wrap pmap_activate()'s code to get a new ASN in an explicit critical section
  so that when it is called while doing an exec() we can't get preempted.
- Replace splhigh() in pmap_growkernel() with a critical section to prevent
  preemption while we are adjusting the kernel page tables.
- Fixes abuse of PCPU_GET(), which doesn't return an L-value.
- Also adds some slight cleanups to the ASN handling by adding some macros
  instead of magic numbers in relation to the ASN and ASN generations.

Reviewed by:	dfr
2002-02-06 04:30:26 +00:00
bde
10b0acc834 Improve the change in the previous commit: use a stub for osigreturn()
when it is not really used instead of unconditionalizing all of it.
2002-02-03 04:09:02 +00:00
bde
199578d7e8 Compile osigreturn() unconditionally since it will always be needed on
some arches and the syscall table is machine-independent.  It was
(bogusly) conditional on COMPAT_43, so this usually makes no difference.

ia64: in addition:
- replace the bogus cloned comment before osigreturn() by a correct one.
  osigreturn() is just a stub fo ia64's.
- fix the formatting of cloned comment before sigreturn().
- fix the return code.  use nosys() instead of returning ENOSYS to get
  the same semantics as if the syscall is not in the syscall table.
  Generating SIGSYS is actually correct here.
- fix style bugs.

powerpc: copy the cleaned up ia64 stub.  This mainly fixes a bogus comment.

sparc64: copy the cleaned up the ia64 stub, since there was no stub before.
2002-02-01 15:44:03 +00:00
gallatin
bc49a98043 Regenerated file from previous commit to syscalls.master 2002-01-23 22:47:47 +00:00
gallatin
a91be5985c Linux/alpha uses the same BSDish return mechanism we do for
getpid, getuid, getgid and pipe, since they bootstrapped from
OSF/1 and never cleaned up.  Switch to the native syscalls
on alpha so that the above functions work

MFC after: 7 days
2002-01-23 22:46:14 +00:00
gallatin
b36a1aca96 Don't read the sigcontext pointer directly from userspace. If the process
is swapped out, this can cause a system panic.  Copy it in, instead

tested by: Bernd Walter <ticso@cicely8.cicely.de>
2002-01-22 02:40:39 +00:00
peter
b2f9c8c62d Avoid __func__ string concatenation 2002-01-18 04:41:23 +00:00
mjacob
30e4a25f30 Allow alpha kernels to compile again- make sure opt_ddb.h is included
and the reference to db_regs is *extern* from alpha/include/db_machdep.h
(put it in alpha/alpha/machdep.c)- this avoids the problems we've had
about different 'common' sizes prohibiting the kernel from linking.
2002-01-17 02:16:35 +00:00
jhb
873822cd83 - Catch up printtrap() to KSE by using curthread and testing it against
NULL rather than curproc.  Without this, if we trap early before
  curthread is set, we recursively panic.
- In an SMP kernel, if we trap before curthread is set, then trap is going
  to recursively panic trying to bump td->td_md.md_kernnest.  The trap is
  fatal anyways, so to make debugging easier just call printtrap() to
  dump the trap info to the console and then halt.
2002-01-15 14:17:07 +00:00
alfred
1f82bc18d1 Replace ffind_* with fget calls.
Make fget MPsafe.

Make fgetvp and fgetsock use the fget subsystem to reduce code bloat.

Push giant down in fpathconf().
2002-01-14 00:13:45 +00:00
alfred
844237b396 SMP Lock struct file, filedesc and the global file list.
Seigo Tanimura (tanimura) posted the initial delta.

I've polished it quite a bit reducing the need for locking and
adapting it for KSE.

Locks:

1 mutex in each filedesc
   protects all the fields.
   protects "struct file" initialization, while a struct file
     is being changed from &badfileops -> &pipeops or something
     the filedesc should be locked.

1 mutex in each struct file
   protects the refcount fields.
   doesn't protect anything else.
   the flags used for garbage collection have been moved to
     f_gcflag which was the FILLER short, this doesn't need
     locking because the garbage collection is a single threaded
     container.
  could likely be made to use a pool mutex.

1 sx lock for the global filelist.

struct file *	fhold(struct file *fp);
        /* increments reference count on a file */

struct file *	fhold_locked(struct file *fp);
        /* like fhold but expects file to locked */

struct file *	ffind_hold(struct thread *, int fd);
        /* finds the struct file in thread, adds one reference and
                returns it unlocked */

struct file *	ffind_lock(struct thread *, int fd);
        /* ffind_hold, but returns file locked */

I still have to smp-safe the fget cruft, I'll get to that asap.
2002-01-13 11:58:06 +00:00
jhb
5d28dcbe74 Add missing prototype for pmap_unmapdev(). 2002-01-11 09:41:03 +00:00
deischen
b11ad14744 Use a spare slot in the machine context to identify the context format
and to inherently verify its validity.  Alpha signal frames and trap
frames are different; this field identifies which format the context
is

Set the machine context format (signal frame) before copying it out
when sending a signal.

Approved by:	-arch
2002-01-10 02:36:30 +00:00
peter
b19d3ea0e2 Convert a bunch of 1 << PCPU_GET(cpuid) to PCPU_GET(cpumask). 2002-01-05 09:41:37 +00:00
jhb
1ce407b675 Change the preemption code for software interrupt thread schedules and
mutex releases to not require flags for the cases when preemption is
not allowed:

The purpose of the MTX_NOSWITCH and SWI_NOSWITCH flags is to prevent
switching to a higher priority thread on mutex releease and swi schedule,
respectively when that switch is not safe.  Now that the critical section
API maintains a per-thread nesting count, the kernel can easily check
whether or not it should switch without relying on flags from the
programmer.  This fixes a few bugs in that all current callers of
swi_sched() used SWI_NOSWITCH, when in fact, only the ones called from
fast interrupt handlers and the swi_sched of softclock needed this flag.
Note that to ensure that swi_sched()'s in clock and fast interrupt
handlers do not switch, these handlers have to be explicitly wrapped
in critical_enter/exit pairs.  Presently, just wrapping the handlers is
sufficient, but in the future with the fully preemptive kernel, the
interrupt must be EOI'd before critical_exit() is called.  (critical_exit()
can switch due to a deferred preemption in a fully preemptive kernel.)

I've tested the changes to the interrupt code on i386 and alpha.  I have
not tested ia64, but the interrupt code is almost identical to the alpha
code, so I expect it will work fine.  PowerPC and ARM do not yet have
interrupt code in the tree so they shouldn't be broken.  Sparc64 is
broken, but that's been ok'd by jake and tmm who will be fixing the
interrupt code for sparc64 shortly.

Reviewed by:	peter
Tested on:	i386, alpha
2002-01-05 08:47:13 +00:00
des
471e9b7d7c This file does not need to include procfs.h. This fixes a bunch of warnings. 2002-01-01 14:46:57 +00:00
tmm
9c8c691fbf Use the new resource_list_print_type() function.
Pass the bus device to isa_init() (this is needed for the sparc64
version).
2001-12-21 21:54:56 +00:00
jhb
2463f40fc3 Introduce a standard name for the lock protecting an interrupt controller
and it's associated state variables: icu_lock with the name "icu".  This
renames the imen_mtx for x86 SMP, but also uses the lock to protect
access to the 8259 PIC on x86 UP.  This also adds an appropriate lock to
the various Alpha chipsets which fixes problems with Alpha SMP machines
dropping interrupts with an SMP kernel.
2001-12-20 23:48:31 +00:00
peter
ce76580121 Fix typo. s/pa/va/. *blush* 2001-12-20 22:47:20 +00:00
peter
0dd2cbdb85 Replace a bunch of:
for (pv = TAILQ_FIRST(&m->md.pv_list);
               pv;
               pv = TAILQ_NEXT(pv, pv_list)) {
with:
      TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) {
2001-12-20 05:29:59 +00:00
peter
92025f70ee Fix some whitespace nits, converge with other pmap.c's 2001-12-20 03:44:43 +00:00
jhb
0e1740ba17 Merge part of revision 1.18 of sys/i386/linux/linux_machdep.c: don't use
RFTHREAD in linux_clone().
2001-12-18 18:50:02 +00:00
jhb
c623c4930d Whitespace fix. 2001-12-18 18:03:48 +00:00
jhb
a3b98398cb Modify the critical section API as follows:
- The MD functions critical_enter/exit are renamed to start with a cpu_
  prefix.
- MI wrapper functions critical_enter/exit maintain a per-thread nesting
  count and a per-thread critical section saved state set when entering
  a critical section while at nesting level 0 and restored when exiting
  to nesting level 0.  This moves the saved state out of spin mutexes so
  that interlocking spin mutexes works properly.
- Most low-level MD code that used critical_enter/exit now use
  cpu_critical_enter/exit.  MI code such as device drivers and spin
  mutexes use the MI wrappers.  Note that since the MI wrappers store
  the state in the current thread, they do not have any return values or
  arguments.
- mtx_intr_enable() is replaced with a constant CRITICAL_FORK which is
  assigned to curthread->td_savecrit during fork_exit().

Tested on:	i386, alpha
2001-12-18 00:27:18 +00:00
jhb
05dfe86282 Small cleanups to the SMP code:
- Axe inlvtlb_ok as it was completely redundant with smp_active.
- Remove references to non-existent variable and non-existent file
  in i386/include/smp.h.
- Don't perform initializations local to each CPU while holding the
  ap boot lock on i386 while an AP bootstraps itself.
- Reorganize the AP startup code some to unify the latter half of the
  functions to bring an AP up.  Eventually this might be broken out into
  a MI function in subr_smp.c.
2001-12-17 23:14:35 +00:00
iedowse
6829d5b143 Enable UFS_DIRHASH in the GENERIC kernel.
Suggested by:	silby
Reviewed by:	dillon
MFC after:	5 days
2001-12-14 16:27:11 +00:00
jhb
21b6b26912 Overhaul the per-CPU support a bit:
- The MI portions of struct globaldata have been consolidated into a MI
  struct pcpu.  The MD per-CPU data are specified via a macro defined in
  machine/pcpu.h.  A macro was chosen over a struct mdpcpu so that the
  interface would be cleaner (PCPU_GET(my_md_field) vs.
  PCPU_GET(md.md_my_md_field)).
- All references to globaldata are changed to pcpu instead.  In a UP kernel,
  this data was stored as global variables which is where the original name
  came from.  In an SMP world this data is per-CPU and ideally private to each
  CPU outside of the context of debuggers.  This also included combining
  machine/globaldata.h and machine/globals.h into machine/pcpu.h.
- The pointer to the thread using the FPU on i386 was renamed from
  npxthread to fpcurthread to be identical with other architectures.
- Make the show pcpu ddb command MI with a MD callout to display MD
  fields.
- The globaldata_register() function was renamed to pcpu_init() and now
  init's MI fields of a struct pcpu in addition to registering it with
  the internal array and list.
- A pcpu_destroy() function was added to remove a struct pcpu from the
  internal array and list.

Tested on:	alpha, i386
Reviewed by:	peter, jake
2001-12-11 23:33:44 +00:00
obrien
e81425551e style(9) 2001-12-09 19:12:07 +00:00
dillon
6fe4980d43 Allow maxusers to be specified as 0 in the kernel config, which will
cause the system to auto-size to between 32 and 512 depending on the
amount of memory.

MFC after:	1 week
2001-12-09 01:57:09 +00:00
des
de8206def1 s/^options\t\t/options \t/ 2001-12-04 11:17:31 +00:00
des
7810400c8f PROCFS requires PSEUDOFS. 2001-12-04 11:17:30 +00:00
mike
20cacce16c o Stop abusing MD headers with non-MD types.
o Hide nonstandard functions and types in <netinet/in.h> when
  _POSIX_SOURCE is defined.
o Add some missing types (required by POSIX.1-200x) to <netinet/in.h>.
o Restore vendor ID from Rev 1.1 in <netinet/in.h> and make use of new
  __FBSDID() macro.
o Fix some miscellaneous issues in <arpa/inet.h>.
o Correct final argument for the inet_ntop() function (POSIX.1-200x).
o Get rid of the namespace pollution from <sys/types.h> in
  <arpa/inet.h>.

Reviewed by:		fenner
Partially submitted by:	bde
2001-12-01 03:43:01 +00:00
gallatin
cfbc70ccd2 fix DIAGNOSTIC panic caused by proc/thread typo
tested by: Martijn Pronk <martijn@smartie.xs4all.nl>
2001-11-29 15:33:46 +00:00
jlemon
7de5635a4c The DEC kn300 has special code for console handling hardcoded here, so add
a call to promcndetach() to explicitly turn off the prom console.

Tested by: Jeff Roberson
2001-11-22 02:41:34 +00:00
peter
28f30fdaa0 Cosmetic tweak to eliminate some diffs 2001-11-16 02:44:55 +00:00
peter
769b1167a1 Merge another missing part of i386/pmap.c rev 1.220. Dont blindly clear
the PG_BUSY flag without using the code that wakes up something else that
may be sleeping on it.
2001-11-16 02:41:31 +00:00
peter
bac701331e Oops, I accidently merged a whitespace error from the original commit.
(whitespace at end of line in rev 1.264 pmap.c).  Fix them all.
2001-11-16 02:31:20 +00:00
peter
95eb5d80c2 Merge rev 1.264 from i386/pmap.c (tegge via alfred):
Protect against an infinite loop when prefaulting pages.  This can
happen when the vm system maps past the end of an object or tries
to map a zero length object, the pmap layer misses the fact that
offsets wrap into negative numbers and we get stuck.
2001-11-16 02:28:33 +00:00
peter
56c06d9e26 Merge rev 1.202 from i386/pmap.c (back in 1998 by John Dyson):
Make flushing dirty pages work correctly on filesystems that
unexpectedly do not complete writes even with sync I/O requests.
This should help the behavior of mmaped files when using
softupdates (and perhaps in other circumstances also.)
2001-11-16 02:25:29 +00:00
peter
5373ee2f4e Merge rev 1.293 of i386/pmap.c - skip PG_UNMANAGED in pmap_collect() 2001-11-16 02:20:40 +00:00
peter
3725c402c4 Converge/fix some debug code (#if 0'ed on alpha, but whatever)
- use NPTEPG/NPDEPG instead of magic 1024 (important for PAE)
- use pt_entry_t instead of unsigned (important for PAE)
- use vm_offset_t instead of unsigned for va's (important for x86-64)
2001-11-16 02:17:18 +00:00
peter
043cec204e Converge with i386/pmap.c - dont refer to curproc, use curthread. 2001-11-16 02:06:06 +00:00
peter
3a7b98c085 Merge part of i386/pmap.c rev 1.220 that got missed in alpha/pmap.c
rev 1.10
2001-11-16 02:02:21 +00:00
peter
4aaee16141 As part of a general cleanup and reconvergence of related pmap code,
start tidying up some loose ends.  The DEBUG_VA stuff has long since
passed its use-by date.  It wasn't used on ia64 but got cut/pasted there.
2001-11-16 01:56:34 +00:00
phk
0097e8b5ad Don't call cdevsw_add(). 2001-11-04 11:50:08 +00:00
gallatin
f8c48b0904 Introduce a boot environment variable (clock_compat_osf1) which can
be set to 1 to make FreeBSD and Tru64 coexist peacefully on a dual
boot system and not clobber each other's year in the TOY clock.
(Tru64 uses an offset 52 years higher than one would expect)

Obtained from: NetBSD
MFC After: 1 week
2001-11-03 17:22:50 +00:00
phk
ea642e6058 Remove unneeded and #if 0'ed code to register in cdevsw[] 2001-11-03 17:05:12 +00:00
dillon
206c5d779e Implement i386/i386/pmap.c 1.292 for alpha, ia64 (avoid free
page exhaustion / kernel panic for certain madvise() scenarios)
2001-11-03 01:08:55 +00:00
mike
3df91ed4db o Add new header <sys/stdint.h>.
o Make <stdint.h> a symbolic link to <sys/stdint.h>.
o Move most of <sys/inttypes.h> into <sys/stdint.h>, as per C99.
o Remove <sys/inttypes.h>.
o Adjust includes in sys/types.h and boot/efi/include/ia64/efibind.h
  to reflect new location of integer types in <sys/stdint.h>.
o Remove previously symbolicly linked <inttypes.h>, instead create a
  new file.
o Add MD headers <machine/_inttypes.h> from NetBSD.
o Include <sys/stdint.h> in <inttypes.h>, as required by C99; and
  include <machine/_inttypes.h> in <inttypes.h>, to fill in the
  remaining requirements for <inttypes.h>.
o Add additional integer types in <machine/ansi.h> and
  <machine/limits.h> which are included via <sys/stdint.h>.

Partially obtain from:	NetBSD
Tested on:		alpha, i386
Discussed on:		freebsd-standards@bostonradio.org
Reviewed by:		bde, fenner, obrien, wollman
2001-11-02 18:05:43 +00:00
mike
3143414cff Rather than just change the arguments to suser() change the function to
suser_xxx() as well.

Pointy hat to:	rwatson
2001-11-02 17:42:03 +00:00
peter
81577a9eef "Fix" a problem that got copied from alpha to ia64 and broke there.
When we truncate the msgbuf size because the last chunk is too small,
correctly terminate the phys_avail[] array - the VM system tests
the *end* for zero, not the start.  This leads the VM startup to
attempt to recreate a duplicate set of pages for all physical memory.

XXX the msgbuf handling is suspiciously different on i386 vs
alpha/ia64...
2001-11-02 00:41:00 +00:00
rwatson
49a9804387 o Permit osf1-emulated programs to modify uid/gid under jail by
switching suser() to suser_xxx() and adding PRISON_ROOT flag.
2001-11-01 20:16:03 +00:00
mjacob
c33fe92cba Fix misspelling in comment. 2001-10-31 18:07:38 +00:00
des
f5a4c275f5 Eliminate the prefix parameter to linux_emul_find(), which was always
linux_emul_path anyway.  Linux_emul_find() has interesting bugs in its
prefix handling (which luckily are not currently exploitable); this
commit is preliminary to an attempt at cleaning it up.

Approved by:	marcel
2001-10-27 11:15:19 +00:00
dillon
f810fc9704 minor commenting based on syscall environment 2001-10-26 20:35:52 +00:00
mjacob
c55c6300c8 Detach the prom console when platform.cons_init is called. This seems
to avoid most of the double character kernel goop we've been having by having
both a prom console && a normal console.

Was not able to test with graphics head. Hope this doesn't break anything.

Reviewed by:	silence on alpha
2001-10-26 16:13:47 +00:00
jhb
46e3f92a5d Add a per-thread ucred reference for syscalls and synchronous traps from
userland.  The per thread ucred reference is immutable and thus needs no
locks to be read.  However, until all the proc locking associated with
writes to p_ucred are completed, it is still not safe to use the per-thread
reference.

Tested on:	x86 (SMP), alpha, sparc64
2001-10-26 08:12:54 +00:00
jlemon
86a48bed45 cn_tab no longer exists, use cnadd() to add a console device. Note that
this may result in duplicate console output in some cases.
2001-10-24 18:30:05 +00:00
jlemon
545cae8749 Remove call to cninit_finish(). 2001-10-24 17:42:01 +00:00
mike
47a3c1f5da Remove funky right justification.
Pointed out by:	bde
2001-10-23 00:42:15 +00:00
des
f4cecd8fd8 Move procfs_* from procfs_machdep.c into sys_process.c, and rename them to
proc_* in the process; procfs_machdep.c is no longer needed.

Run-tested on i386, build-tested on Alpha, untested on other platforms.
2001-10-21 23:57:24 +00:00
des
68ea04e864 [partially forced commit due to pilot error in earlier commit attempt]
{set,fill}_{,fp,db}regs() fixup:

 - Add dummy {set,fill}_dbregs() on architectures that don't have them.

 - KSEfy the powerpc versions (struct proc -> struct thread).

 - Some architectures had the prototypes in md_var.h, some in reg.h, and
   some in both; for consistency, move them to reg.h on all platforms.

These functions aren't really MD (the implementation is MD, but the interface
is MI), so they should move to an MI header, but I haven't figured out which
one yet.

Run-tested on i386, build-tested on Alpha, untested on other platforms.
2001-10-21 22:16:48 +00:00
des
8cf224f4f0 {set,fill}_{,fp,db}regs() fixup:
- Add dummy {set,fill}_dbregs() on architectures that don't have them.

 - KSEfy the powerpc versions (struct proc -> struct thread).

 - Some architectures had the prototypes in md_var.h, some in reg.h, and
   some in both; for consistency, move them to reg.h on all platforms.

These functions aren't really MD (the implementation is MD, but the interface
is MI), so they should move to an MI header, but I haven't figured out which
{set,fill}_{,fp,db}regs() fixup:

 - Add dummy {set,fill}_dbregs() on architectures that don't have them.

 - KSEfy the powerpc versions (struct proc -> struct thread).

 - Some architectures had the prototypes in md_var.h, some in reg.h, and
   some in both; for consistency, move them to reg.h on all platforms.

These functions aren't really MD (the implementation is MD, but the interface
is MI), so they should move to an MI header, but I haven't figured out which
one yet.

Run-tested on i386, build-tested on Alpha, untested on other platforms.
2001-10-21 22:14:00 +00:00
gallatin
d9b89a94d8 - splhigh()/splx() -> critical_enter()/critical_exit()
- fix KV macro in t2_pci.c to include the sable_lynx_base variable
so that the T2 CSRs can be found on lynxes.   Current should be
bootable on lynxes now.
2001-10-20 21:05:14 +00:00
mjacob
bdff8645a6 Remove wx. 2001-10-20 18:50:31 +00:00
gallatin
60a8e7b108 apparently EV5 2x00s have their t2 CSRs where I'd expect to find
them on a  2100A

Thanks to Tyler Willingham <ze_willow@yahoo.com> for letting me
test this on his AS2000
2001-10-20 01:27:23 +00:00
obrien
e4ab2c9a0f Try two on the preprocessing logic.
Reviewed by:	ru
2001-10-19 20:01:01 +00:00
jhb
d0bdf2ae5d Remove unneeded sys/mutex.h includes. 2001-10-19 19:23:32 +00:00
jhb
7c87908b48 Move sys/mutex.h include after sys/lock.h to ensure we use the proper
versions of the mutex operations.
2001-10-19 19:22:04 +00:00
obrien
975b6d2e75 Blah, fix braino where ru had to remind me of proper preprocessor syntax.
Bad fingers, no cookie.
2001-10-19 19:17:11 +00:00
marcel
34dc4c548d After removing the bogus differences, any real incompatibilities
have been merged into /sys/compat/linux/linux_ioctl.h. This file
is now unused.
2001-10-19 08:20:15 +00:00
obrien
2b9b303646 My attempts at minimizing the number of #def's got me in trouble. 2001-10-18 16:07:21 +00:00
obrien
1d7ce16d9a Add support for "__gnuc_va_list". Some overly "smart" libraries assume
the existence of the __gnuc_va_list type[*] because our compiler is GCC.

[*] __gnuc_va_list is defined in the GCC ginclude/stdarg.h replacement
headerwhich we don't use.
2001-10-18 00:27:39 +00:00
obrien
1ee32f686a Sync comments with i386. 2001-10-18 00:00:31 +00:00
jhb
946a8b3717 Small cleanups to the handling of Giant in trap(). 2001-10-17 21:55:56 +00:00
mjacob
e666e03e1a Make SCSI changer and SES devices standard in generic kernels.
Reviewed by:	ken@kdm.org
2001-10-16 22:22:58 +00:00
marcel
ff7999f46e Implement linux_chown and linux_lchown. The fchown syscall maps
directly to the native syscall, because no filename handling
needs to be done.

Tested by: Martin Blapp <mb@imp.ch>
2001-10-16 06:15:36 +00:00
des
415c64e785 In FreeBSD's ifreq, ifr_ifru.ifru_flags is an array of two chars, while Linux
defines it as a short.  Change that to an array of one short so that FreeBSD's
ifr_flags macro will work (it evaluates to ifr_ifru.ifru_flags[0]).
2001-10-15 20:06:34 +00:00
bde
60cac98968 Backed out the quick fixes for the transient breakage of <sys/mount.h>
in rev.1.106 of the latter (don't include <sys/socket.h> and/or
<net/radix.h> just to work around bugs in <sys/mount.h>).
2001-10-13 06:05:37 +00:00
mjacob
fa0b537235 roll out last change 2001-10-12 02:30:53 +00:00
mjacob
a6fcfa2afc Remove the hiding of some prototype declarations. 2001-10-11 21:48:02 +00:00
mjacob
61923fecdf remove unused variable declaration 2001-10-11 21:47:27 +00:00
obrien
8abab35780 We use proc_rwmem (with the correct number of args) rather than procfs_domem
in the new world order or procfs.

Submitted by:	des
2001-10-11 21:17:31 +00:00
mjacob
f53afa40b9 Note that PROCFS is mandatory at this time- until we fix the
ptrace code to not call things directly from procfs we can't
very well have procfs be a module.
2001-10-11 18:36:41 +00:00
ps
db0d5cd641 Make MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ loader
tunable.

Reviewed by:	peter
MFC after:	2 weeks
2001-10-10 23:06:54 +00:00
des
29c5c858fc Dissociate ptrace from procfs.
Until now, the ptrace syscall was implemented as a wrapper that called
various functions in procfs depending on which ptrace operation was
requested.  Most of these functions were themselves wrappers around
procfs_{read,write}_{,db,fp}regs(), with only some extra error checks,
which weren't necessary in the ptrace case anyway.

This commit moves procfs_rwmem() from procfs_mem.c into sys_process.c
(renaming it to proc_rwmem() in the process), and implements ptrace()
directly in terms of procfs_{read,write}_{,db,fp}regs() instead of
having it fake up a struct uio and then call procfs_do{,db,fp}regs().

It also moves the prototypes for procfs_{read,write}_{,db,fp}regs()
and proc_rwmem() from proc.h to ptrace.h, and marks all procfs files
except procfs_machdep.c as "optional procfs" instead of "standard".
2001-10-07 20:08:42 +00:00
marcel
d76212b1b4 Regen. 2001-10-07 00:21:18 +00:00
marcel
95e78e313c Fix the NODEF entry for setpgid() so that it matches the NODEF
entries in sys/kern/syscalls.master.
2001-10-07 00:20:08 +00:00
mjacob
37494cc800 Fix problem where a user buffer outside of the area being tested
will be corrupted.

PR:		29194
Obtained from:	Tor.Egge@fast.no
MFC after:	2 weeks
2001-10-02 18:34:20 +00:00
jhb
fb7fca45bb Sigh, statclock_process() takes a KSE instead of a thread for its first
argument.
2001-10-01 22:26:47 +00:00
wilko
86938caa26 Add AlphaPC64 to comments. Correct names (ds10 -> DS10 etc) 2001-09-30 12:09:50 +00:00
marcel
0e0d997b9e o Remove the linux_setpgid() stub.
o  Stop using linux_getpgid(); use getpgid() instead.

PR: kern/21402
2001-09-28 01:39:19 +00:00
marcel
aee394ff68 Stop using linux_getpgid(). The implementation at this time is
broken and fixing it only creates a duplicate of what is already
in the FreeBSD kernel. Therefore, map the syscall directly to
getpgid().

PR: kern/21402
Submitted by: Christian Weisgerber <naddy@mips.inka.de>

While here, redefine the second entry for setpgid() so that we
don't need a stub. This is achieved by giving the second instance
the type NODEF.
2001-09-28 01:36:45 +00:00
rwatson
3ac68ecf7b o securelevel_gt() patches came from pre-KSE alpha -- this revision
fixes the compile and uses td->td_proc instead of p.

Obtained from:	TrustedBSD Project
2001-09-26 20:27:23 +00:00
brooks
34d1edd712 The faith(4) device is no longer a count device so don't specify a count. 2001-09-25 18:56:40 +00:00
obrien
94003d0787 + Fix misplacement of `txp'
+ Document our -CURRENT debugging bits
2001-09-24 03:23:48 +00:00
peter
aac6765913 Overzealous search/replace: PROC_LOCK_ASSERT(p, not PROC_LOCK_ASSERT(td,
Pointy-hat to:  peter
2001-09-23 06:16:01 +00:00
jhb
8fad87731a Fix statclock() on non-boot processors: curproc -> curthread. 2001-09-21 23:10:11 +00:00
peter
d9bfebcabd Export kernbase like on the i386. I dont think the alpha kernel is
movable like on the x86, but this gets things in sync and reduces
the need for special cases in things like ps and libkvm etc.
2001-09-20 09:09:03 +00:00
peter
7d24eb386c Finish KSE-ification updates. 2001-09-20 05:15:04 +00:00
peter
e0febadcf9 Regenerate. This seems to have been missed in the last commit. 2001-09-20 05:01:08 +00:00
peter
15d80be8db Pass 1: update for KSE and NFS changes. Somehow this got missed.
osf1_mount.c isn't complete yet.
2001-09-20 04:56:42 +00:00
peter
956cee07ea Make this compile again. I would have sworn that I did this already in
the KSE tree and thought it had been merged.
2001-09-20 04:55:06 +00:00
peter
ccb317277e Make alpha/genassym.c compile again. *oops* 2001-09-20 02:48:03 +00:00
peter
85182a8d78 Cleanup and split of nfs client and server code.
This builds on the top of several repo-copies.
2001-09-18 23:32:09 +00:00
jhb
0fc343f1d8 - If we ever do the per-cpu KTR stuff, the index won't be volatile as it
will be private to each CPU.
- Re-style(9) the globaldata structures.  There really needs to be a MI
  struct pcpu that has a MD struct mdpcpu member at some point.
2001-09-18 21:46:26 +00:00
mr
fc0a6c1596 Add a wrapper for linux_getsid -> getsid Syscall. 2001-09-15 09:57:30 +00:00
mr
99ae75a097 Implement LINUX_[SEM|IPC]_[STAT|INFO]
to make /compat/linux/usr/bin/ipcs -s happy.

PR:		kern/29698 (part)
Reviewed by:	audit
2001-09-15 09:50:38 +00:00
marcel
c727378338 Fix off by one error introduced by the use of the ifnet_byindex()
macro. The commit log clearly states that the index given to the
macro is one higher than previously used to index the array. This
wasn't represented in the code and resulted in kernel page faults.

Reported by: Andrew Atrens <atrens@nortelnetworks.com>
2001-09-14 08:04:25 +00:00
jhb
c033f80c47 Whitespace fixes. 2001-09-12 22:00:06 +00:00
jhb
2a7190bd15 Style(9) fixes. 2001-09-12 21:57:30 +00:00
jhb
b7943aa8cf Restore style(9) fixes from commit prior to previous commit. 2001-09-12 21:56:28 +00:00
julian
5596676e6c KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after:    ha ha ha ha
2001-09-12 08:38:13 +00:00
peter
335f7eeb63 Fix a warning. Dont convert away from const to just re-add it in the
wrapped function.
2001-09-10 10:48:19 +00:00
dfr
e755df50cd Implement support for MAXMEM option and hw.physmem environment variable
which can be used to artificially reduce the memory size of a machine
for debugging (or other) purposes.
2001-09-10 07:03:59 +00:00
peter
96b9a12bd2 Rip some well duplicated code out of cpu_wait() and cpu_exit() and move
it to the MI area.  KSE touched cpu_wait() which had the same change
replicated five ways for each platform.  Now it can just do it once.
The only MD parts seemed to be dealing with fpu state cleanup and things
like vm86 cleanup on x86.  The rest was identical.

XXX: ia64 and powerpc did not have cpu_throw(), so I've put a functional
stub in place.

Reviewed by:	jake, tmm, dillon
2001-09-10 04:28:58 +00:00
dfr
774ebbef7e Fix some problems with the reference/modified tracking which I introduced
with the last change to the way the pmap_emulate_reference() works. This
should fix a number of memory corruption problems and also should stop the
mtimes of executables changing all the time.
2001-09-09 16:36:59 +00:00
peter
b3b3a6b1c9 Missing part of dillon's coredump commit. cpu_coredump() was still
passing IO_NODELOCKED to vn_rdwr(), this would cause operations on the
unlocked core vnode and softupdates nastiness if an a.out binary cored.
2001-09-08 22:18:58 +00:00
marcel
df61d9eb64 Round of cleanups and enhancements. These include (in random order):
o  Introduce private types for use in linux syscalls for two reasons:
   1. establish type independence for ease in porting and,
   2. provide a visual queue as to which syscalls have proper
      prototypes to further cleanup the i386/alpha split.
   Linuxulator types are prefixed by 'l_'. void and char have not
   been "virtualized".

o  Provide dummy functions for all syscalls and remove dummy functions
   or implementations of truely obsolete syscalls.

o  Sanitize the shm*, sem* and msg* syscalls.

o  Make a first attempt to implement the linux_sysctl syscall. At this
   time it only returns one MIB (KERN_VERSION), but most importantly,
   it tells us when we need to add additional sysctls :-)

o  Bump the kenel version up to 2.4.2 (this is not the same as the
   KERN_VERSION MIB, BTW).

o  Implement new syscalls, of which most are specific to i386. Our
   syscall table is now up to date with Linux 2.4.2. Some highlights:
   -  Implement the 32-bit uid_t and gid_t bases syscalls.
   -  Implement a couple of 64-bit file size/offset bases syscalls.

o  Fix or improve numerous syscalls and prototypes.

o  Reduce style(9) violations while I'm here. Especially indentation
   inconsistencies within the same file are addressed. Re-indenting
   did not obfuscate actual changes to the extend that it could not
   be combined.

NOTE: I spend some time testing these changes and found that if there
      were regressions, they were not caused by these changes AFAICT.
      It was observed that installing a RH 7.1 runtime environment
      did make matters worse. Hangs and/or reboots have been observed
      with and without these changes, so when it failed to make life
      better in cases it doesn't look like it made it worse.
2001-09-08 19:07:04 +00:00
marcel
bc484946ce o Introduce private types for use in linux syscalls for two reasons:
1. establish type independence for ease in porting and,
   2. provide a visual queue as to which syscalls have proper
      prototypes to further cleanup the i386/alpha split.
   Linuxulator types are prefixed by 'l_'. void and char have not
   been "virtualized".

o  Provide dummy functions for all unimplemented syscalls, except for
   the osf1 syscalls. This can only be done if the osfulator
   implements at least all syscalls used by the linuxulator. Remove
   dummy functions for syscalls that are now truely unimplemented.

o  Set the syscall namespace as follows: Mark a syscall as OSF1 if
   the Linux kernel has prefixed the syscall with 'osf_' and has
   provided special implementations for it. Otherwise mark the
   syscall as LINUX by default. Some of the LINUX syscalls remain
   marked as BSD or POSIX.

o  Rename syscalls so they match the names used in the Linux kernel.
   Also, provide more accurate prototypes. This generally improves
   cross-referencing and reduces head-scratching.

o  Fix the (g|s)etresuid syscalls. They mapped to (g|s)etresgid.

o  Sanitize the the shm*, sem* and msg* syscalls. Their prototypes
   were dictated by the way these syscalls were used in the i386
   code. That has been fixed. NOTE: linux_semctl now passes it's
   'arg' parameter by value and not by reference.

o  Fix prototype of linux_utime. It takes a struct timeval, not a
   struct utimbuf.

o  Fix the linux_sysfs syscall. It's index is not 255, but 254.

o  Implement the following syscalls:
     linux_sysctl

o  Add the following new syscalls:
     (g|s)etresgid
     linux_pivot_root (dummy)
     linux_mincore (dummy)
     linux_pciconfig_iobase (dummy)
     linux_getdents64
2001-09-08 18:49:31 +00:00
marcel
ce430d113c Wrap array accesses in macros, which also happen to be lvalues:
ifnet_addrs[i - 1]  -> ifaddr_byindex(i)
        ifindex2ifnet[i]    -> ifnet_byindex(i)

This is intended to ease the conversion to SMPng.

Forgotten by: jlemon
2001-09-08 04:20:45 +00:00
jhb
054237d0be Call sendsig() with the proc lock held and return with it held. 2001-09-06 22:20:41 +00:00
obrien
34ad4938d7 style(9) the structure definitions. 2001-09-05 01:36:46 +00:00
peter
16c92cf0c3 Zap #if 0'ed map init code that got moved to the MI area.
Convert the powerpc tree to use the common code.
2001-09-04 08:42:35 +00:00
peter
119d201aab Nuke #if 0'ed "setredzone()" stub. We never used it, and probably
never will.  I've implemented an optional redzone as part of the KSE
upage breakup.
2001-09-04 08:36:46 +00:00
dillon
0bdd59d16a Synchronize syscalls.master(s) with recent Giant pushdown work 2001-09-01 19:36:48 +00:00
peter
0813add3ec Same treatment as i386/isa/pmap.c - clean up some style to sync towards
KSE diff.
2001-08-31 06:19:08 +00:00
peter
af89b81901 Tidy up cpu_fork() a little. This is mainly for changes I've been
working on in the KSE area.
2001-08-31 02:11:24 +00:00
dillon
08e732a88b Remove the MPSAFE keyword from the parser for syscalls.master.
Instead introduce the [M] prefix to existing keywords.  e.g.
MSTD is the MP SAFE version of STD.  This is prepatory for a
massive Giant lock pushdown.  The old MPSAFE keyword made
syscalls.master too messy.

Begin comments MP-Safe procedures with the comment:
/*
 * MPSAFE
 */
This comments means that the procedure may be called without
Giant held (The procedure itself may still need to obtain
Giant temporarily to do its thing).

sv_prepsyscall() is now MP SAFE and assumed to be MP SAFE
sv_transtrap() is now MP SAFE and assumed to be MP SAFE

ktrsyscall() and ktrsysret() are now MP SAFE (Giant Pushdown)
trapsignal() is now MP SAFE (Giant Pushdown)

Places which used to do the if (mtx_owned(&Giant)) mtx_unlock(&Giant)
test in syscall[2]() in */*/trap.c now do not.  Instead they
explicitly unlock Giant if they previously obtained it, and then
assert that it is no longer held to catch broken system calls.

Rebuild syscall tables.
2001-08-30 18:50:57 +00:00
mike
a45063618a o Remove some GCCisms in src/powerpc/include/endian.h.
o Unify <machine/endian.h>'s across all architectures.
o Make bswapXX() functions use a different spelling of u_int16_t and
  friends to reduce namespace pollution.  The bswapXX() functions
  don't actually exist, but we'll probably import these at some
  point.  Atleast one driver (if_de) depends on bswapXX() for big
  endian cases.
o Deprecate byteorder(3) prototypes from <sys/types.h>, these are
  now prototyped indirectly in <arpa/inet.h>.
o Deprecate in_addr_t and in_port_t typedefs in <sys/types.h>, these
  are now typedef'd in <arpa/inet.h>.
o Change byteorder(3) prototypes to use standards compliant uint32_t
  (spelled __uint32_t to reduce namespace pollution).
o Document new preferred headers and standards compliance.

Discussed with:	bde
PR:		29946
Reviewed by:	bmilekic
2001-08-30 00:04:19 +00:00
peter
79bfbf84c5 Correctly #ifdef COMPAT_43 around osendsig() prototype. 2001-08-27 06:19:18 +00:00
peter
e031b90e2a Enable hardwiring of things like tunables from embedded enironments
that do not start from loader(8).
2001-08-27 05:11:53 +00:00
peter
5fa2d1a53c vm_page_zero_idle() is no longer MD. 2001-08-25 04:54:25 +00:00
peter
5f5f9e4c4e Remove a reference to MAP_INHERIT. 2001-08-25 04:27:40 +00:00
dillon
abe30f58d8 Move most of the kernel submap initialization code, including the
timeout callwheel and buffer cache, out of the platform specific areas
and into the machine independant area.  i386 and alpha adjusted here.
Other cpus can be fixed piecemeal.

Reviewed by:    freebsd-smp, jake
2001-08-22 04:07:27 +00:00
peter
8580722a57 Strip out some #if's for old implementations of global data pointers. 2001-08-21 22:14:13 +00:00
jhb
bfb2a1d964 Protect prototype of ptrace_clear_single_step() with #ifdef _KERNEL/#endif.
Requested by:	bde
2001-08-21 13:42:39 +00:00