Commit Graph

55 Commits

Author SHA1 Message Date
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
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
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
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
dillon
0bdd59d16a Synchronize syscalls.master(s) with recent Giant pushdown work 2001-09-01 19:36:48 +00:00
peter
5f5f9e4c4e Remove a reference to MAP_INHERIT. 2001-08-25 04:27:40 +00:00
dillon
e028603b7e With Alfred's permission, remove vm_mtx in favor of a fine-grained approach
(this commit is just the first stage).  Also add various GIANT_ macros to
formalize the removal of Giant, making it easy to test in a more piecemeal
fashion. These macros will allow us to test fine-grained locks to a degree
before removing Giant, and also after, and to remove Giant in a piecemeal
fashion via sysctl's on those subsystems which the authors believe can
operate without Giant.
2001-07-04 16:20:28 +00:00
jhb
d82893e676 Add a new MI pointer to the process' trapframe p_frame instead of using
various differently named pointers buried under p_md.

Reviewed by:	jake (in principle)
2001-06-29 11:10:41 +00:00
gallatin
ff286ab2bd hold the vm_mtx around vm_map_lookup_entry() and vm_map_findspace() 2001-06-06 14:07:52 +00:00
gallatin
66b81f3469 Apparently, the vm_mtx must be held around vm_map_find(). I'm assuming
that it needn't be held around vm_mmap() since vm_mmap() itself aquires
it.

Sleuthing by: obrien
2001-06-06 13:46:16 +00:00
gallatin
2791b7af58 make this compile. 2001-05-25 20:56:28 +00:00
rwatson
f504530d9f o Merge contents of struct pcred into struct ucred. Specifically, add the
real uid, saved uid, real gid, and saved gid to ucred, as well as the
  pcred->pc_uidinfo, which was associated with the real uid, only rename
  it to cr_ruidinfo so as not to conflict with cr_uidinfo, which
  corresponds to the effective uid.
o Remove p_cred from struct proc; add p_ucred to struct proc, replacing
  original macro that pointed.
  p->p_ucred to p->p_cred->pc_ucred.
o Universally update code so that it makes use of ucred instead of pcred,
  p->p_ucred instead of p->p_pcred, cr_ruidinfo instead of p_uidinfo,
  cr_{r,sv}{u,g}id instead of p_*, etc.
o Remove pcred0 and its initialization from init_main.c; initialize
  cr_ruidinfo there.
o Restruction many credential modification chunks to always crdup while
  we figure out locking and optimizations; generally speaking, this
  means moving to a structure like this:
        newcred = crdup(oldcred);
        ...
        p->p_ucred = newcred;
        crfree(oldcred);
  It's not race-free, but better than nothing.  There are also races
  in sys_process.c, all inter-process authorization, fork, exec, and
  exit.
o Remove sigio->sio_ruid since sigio->sio_ucred now contains the ruid;
  remove comments indicating that the old arrangement was a problem.
o Restructure exec1() a little to use newcred/oldcred arrangement, and
  use improved uid management primitives.
o Clean up exit1() so as to do less work in credential cleanup due to
  pcred removal.
o Clean up fork1() so as to do less work in credential cleanup and
  allocation.
o Clean up ktrcanset() to take into account changes, and move to using
  suser_xxx() instead of performing a direct uid==0 comparision.
o Improve commenting in various kern_prot.c credential modification
  calls to better document current behavior.  In a couple of places,
  current behavior is a little questionable and we need to check
  POSIX.1 to make sure it's "right".  More commenting work still
  remains to be done.
o Update credential management calls, such as crfree(), to take into
  account new ruidinfo reference.
o Modify or add the following uid and gid helper routines:
      change_euid()
      change_egid()
      change_ruid()
      change_rgid()
      change_svuid()
      change_svgid()
  In each case, the call now acts on a credential not a process, and as
  such no longer requires more complicated process locking/etc.  They
  now assume the caller will do any necessary allocation of an
  exclusive credential reference.  Each is commented to document its
  reference requirements.
o CANSIGIO() is simplified to require only credentials, not processes
  and pcreds.
o Remove lots of (p_pcred==NULL) checks.
o Add an XXX to authorization code in nfs_lock.c, since it's
  questionable, and needs to be considered carefully.
o Simplify posix4 authorization code to require only credentials, not
  processes and pcreds.  Note that this authorization, as well as
  CANSIGIO(), needs to be updated to use the p_cansignal() and
  p_cansched() centralized authorization routines, as they currently
  do not take into account some desirable restrictions that are handled
  by the centralized routines, as well as being inconsistent with other
  similar authorization instances.
o Update libkvm to take these changes into account.

Obtained from:	TrustedBSD Project
Reviewed by:	green, bde, jhb, freebsd-arch, freebsd-audit
2001-05-25 16:59:11 +00:00
ru
35437d86aa - FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file
systems were repo-copied from sys/miscfs to sys/fs.

- Renamed the following file systems and their modules:
  fdesc -> fdescfs, portal -> portalfs, union -> unionfs.

- Renamed corresponding kernel options:
  FDESC -> FDESCFS, PORTAL -> PORTALFS, UNION -> UNIONFS.

- Install header files for the above file systems.

- Removed bogus -I${.CURDIR}/../../sys CFLAGS from userland
  Makefiles.
2001-05-23 09:42:29 +00:00
gallatin
8e0770e25c grab the vm mtx around exec_new_vmspace() 2001-05-22 18:45:12 +00:00
gallatin
f07e923e1b fix vm_mtx related compiler warning 2001-05-20 16:41:37 +00:00
markm
bcca5847d5 Undo part of the tangle of having sys/lock.h and sys/mutex.h included in
other "system" header files.

Also help the deprecation of lockmgr.h by making it a sub-include of
sys/lock.h and removing sys/lockmgr.h form kernel .c files.

Sort sys/*.h includes where possible in affected files.

OK'ed by:	bde (with reservations)
2001-05-01 08:13:21 +00:00
jhb
9cd254601b Grab the process lock while calling psignal and before calling psignal. 2001-03-07 03:37:06 +00:00
gallatin
bb9ee8e09f Fix the osfulator in the face of Doug's optimized system call return path.
We now need to set [FRAME_FLAGS] to zero to force a full restore of state
after a signal.

reported by: naddy@mips.inka.de (Christian Weisgerber)
2001-02-21 18:48:06 +00:00
bmilekic
f364d4ac36 Change and clean the mutex lock interface.
mtx_enter(lock, type) becomes:

mtx_lock(lock) for sleep locks (MTX_DEF-initialized locks)
mtx_lock_spin(lock) for spin locks (MTX_SPIN-initialized)

similarily, for releasing a lock, we now have:

mtx_unlock(lock) for MTX_DEF and mtx_unlock_spin(lock) for MTX_SPIN.
We change the caller interface for the two different types of locks
because the semantics are entirely different for each case, and this
makes it explicitly clear and, at the same time, it rids us of the
extra `type' argument.

The enter->lock and exit->unlock change has been made with the idea
that we're "locking data" and not "entering locked code" in mind.

Further, remove all additional "flags" previously passed to the
lock acquire/release routines with the exception of two:

MTX_QUIET and MTX_NOSWITCH

The functionality of these flags is preserved and they can be passed
to the lock/unlock routines by calling the corresponding wrappers:

mtx_{lock, unlock}_flags(lock, flag(s)) and
mtx_{lock, unlock}_spin_flags(lock, flag(s)) for MTX_DEF and MTX_SPIN
locks, respectively.

Re-inline some lock acq/rel code; in the sleep lock case, we only
inline the _obtain_lock()s in order to ensure that the inlined code
fits into a cache line. In the spin lock case, we inline recursion and
actually only perform a function call if we need to spin. This change
has been made with the idea that we generally tend to avoid spin locks
and that also the spin locks that we do have and are heavily used
(i.e. sched_lock) do recurse, and therefore in an effort to reduce
function call overhead for some architectures (such as alpha), we
inline recursion for this case.

Create a new malloc type for the witness code and retire from using
the M_DEV type. The new type is called M_WITNESS and is only declared
if WITNESS is enabled.

Begin cleaning up some machdep/mutex.h code - specifically updated the
"optimized" inlined code in alpha/mutex.h and wrote MTX_LOCK_SPIN
and MTX_UNLOCK_SPIN asm macros for the i386/mutex.h as we presently
need those.

Finally, caught up to the interface changes in all sys code.

Contributors: jake, jhb, jasone (in no particular order)
2001-02-09 06:11:45 +00:00
asmodai
47a2266000 Fix typo: seperate -> separate.
Seperate does not exist in the english language.

Submitted to look at by:	kris
2001-02-06 10:39:38 +00:00
gallatin
10b4b1aae3 The osfulator needs sysvipc to work. Thanks to DES's commit to
the i386 linulator for pointing this out.

The alpha linulator doesn't need a dependancy, as it already
depends on the osfulator.
2001-01-26 17:12:30 +00:00
jhb
238ea9ee91 Back out over-aggressive locking of p->p_cred.
Requested by:	alfred
2001-01-25 01:09:44 +00:00
jhb
1df50e8aac Proc locking. 2001-01-24 10:27:11 +00:00
jhb
02a611ef0c Use queue macros. 2001-01-24 10:26:51 +00:00
msmith
c27f2d3c49 Next phase in the PCI subsystem cleanup.
- Move PCI core code to dev/pci.
 - Split bridge code out into separate modules.
 - Remove the descriptive strings from the bridge drivers.  If you
   want to know what a device is, use pciconf.  Add support for
   broadly identifying devices based on class/subclass, and for
   parsing a preloaded device identification database so that if
   you want to waste the memory, you can identify *anything* we know
   about.
 - Remove machine-dependant code from the core PCI code.  APIC interrupt
   mapping is performed by shadowing the intline register in machine-
   dependant code.
 - Bring interrupt routing support to the Alpha
   (although many platforms don't yet support routing or mapping
   interrupts entirely correctly).  This resulted in spamming
   <sys/bus.h> into more places than it really should have gone.
 - Put sys/dev on the kernel/modules include path.  This avoids
   having to change *all* the pci*.h includes.
2000-12-08 22:11:23 +00:00
gallatin
14c37370d1 exec_osf1_imgact() should return -1 for non OSF1/ECOFF binaries, it should
not return ENOEXEC.  This is because image activators should return -1 if they
don't claim an image. They should return ENOEXEC if they do claim it,
but cannot load it due to sime problem with the image.   This bug was
preventing static compilation of the osf/1 module.  I'm surprised it
did not cause more problems.
2000-12-02 04:15:17 +00:00
marcel
75c76bdc6b Don't use p->p_sigstk.ss_flags to keep state of whether the
process is on the alternate stack or not. For compatibility
with sigstack(2) state is being updated if such is needed.

We now determine whether the process is on the alternate
stack by looking at its stack pointer. This allows a process
to siglongjmp from a signal handler on the alternate stack
to the place of the sigsetjmp on the normal stack. When
maintaining state, this would have invalidated the state
information and causing a subsequent signal to be delivered
on the normal stack instead of the alternate stack.

PR: 22286
2000-11-30 05:23:49 +00:00
gallatin
c03313d48c Simplify and correct OSF/1 signal handling.
- No signal translation is needed.  Our signals match the OSF/1 signals
- an OSF/1 sigset_t is 64 bits.  Make certain to use all 64-bits of it.
  We'd previously only used the lower 32 bits.   This was mostly harmless
  as I don't know of an OSF/1 apps which use any signals > 31.  However,
  the alpha Linux ABI uses the osf/1 signal routines and threaded linux
  apps tyically use signals 32 and 33 to comminicate with the manager
  thread, so it is important we preserve the upper 32-bits.

Reviewed by: marcel (at least in principal)
2000-11-10 23:00:54 +00:00
marcel
1a7266b24d Make MINSIGSTKSZ machine dependent, and have the sigaltstack
syscall compare against a variable sv_minsigstksz in struct
sysentvec as to properly take the size of the machine- and
ABI dependent struct sigframe into account.

The SVR4 and iBCS2 modules continue to have a minsigstksz of
8192 to preserve behavior. The real values (if different) are
not known at this time. Other ABI modules use the real
values.

The native MINSIGSTKSZ is now defined as follows:

Arch		MINSIGSTKSZ
----		-----------
alpha		    4096
i386		    2048
ia64		   12288

Reviewed by: mjacob
Suggested by: bde
2000-11-09 08:25:48 +00:00
mjacob
11f3b89daf Add M_ZERO to malloc calls where the result is just bzeroed.
PR:		22188
Submitted (partially) by:	josh@zipperup.org
2000-10-27 16:36:26 +00:00
gallatin
6676c79ca1 add a version tag for the alpha linulator to depend on 2000-10-26 16:31:29 +00:00
gallatin
a06184638c Update osf1_setuid() and osf1_setgid() to use the new change_euid() and
change_ruid() in kern_prot.c.  This fixes an incorrect use
of chgproccnt().

Update both osf1_setuid() and osf1_setgid() to use setsugid() instead
of just frobbing the flag.

(mostly) submitted by: truckman
2000-10-26 15:53:00 +00:00
gallatin
7bf42ee269 fix bogus cast in osf1_getrlimit/osf1_setrlimit 2000-10-25 00:37:34 +00:00
gallatin
47e3234522 teach the osf1_getsysinfo() function about a few more fields
submitted by: Jim.Pirzyk@disney.com
PR: alpha/22263
2000-10-25 00:14:11 +00:00
peter
09f2cc343d Regen. (Fix SYS_exit) 2000-07-29 10:07:38 +00:00
peter
2acd9c62a7 Sigh. Fix SYS_exit problems. I misunderstood the significance of these
trailing options.
2000-07-29 10:05:25 +00:00
peter
564c126846 Regenerate with makesyscalls.sh 2000-07-29 00:21:50 +00:00
peter
b273253c9e Change the 'exit()' system call to 'sys_exit()'. This avoids overlapping
gcc's internal exit() prototypes and the (futile) hackery that we did to
try and avoid warnings.  main() was renamed for similar reasons.
Remove an exit related hack from makesyscalls.sh.
2000-07-29 00:16:28 +00:00
gallatin
fa3f7856a5 magnetic tape support
Submitted by: Clem Cole <clemc@mro.dec.com>
2000-07-13 20:04:21 +00:00
mjacob
4b888d0234 Fix the breakage that occurred when somebody didn't do a complete
checkin of the changes to kern_prot.c.
2000-06-23 22:44:04 +00:00
bde
9bb1617433 Regenerated (fixed the calculation of sy_nargs in sysent tables). 2000-05-09 21:52:02 +00:00
bde
27f17df741 Fixed the return type for exit() and the args struct tag several NOPROTO
syscalls including exit().  These entries were unused, so the bugs had no
effect, but the the args struct tag will be used to calculate sy_nargs
correctly.  exit() was wrong in all emulators.
2000-05-09 18:23:16 +00:00
phk
36c3965ff9 Separate the struct bio related stuff out of <sys/buf.h> into
<sys/bio.h>.

<sys/bio.h> is now a prerequisite for <sys/buf.h> but it shall
not be made a nested include according to bdes teachings on the
subject of nested includes.

Diskdrivers and similar stuff below specfs::strategy() should no
longer need to include <sys/buf.> unless they need caching of data.

Still a few bogus uses of struct buf to track down.

Repocopy by:    peter
2000-05-05 09:59:14 +00:00
phk
5ea491d29e remove unneeded #include <sys/buf.h> 2000-05-05 09:24:00 +00:00
peter
cd600f27a0 Oops, forgot this from the previous commit. Remove obsolete #ifdef ISO.
Approved by:	jkh
2000-02-13 03:55:16 +00:00
gallatin
d609003da5 changes to osf1_wait4()
- only allocate rusage struct when caller wants rusage info
- fix a stupid paren mismatch bug that was causing EPERM to get returned
  to callers rather then ECHILD
2000-01-29 06:31:27 +00:00
bde
14487c9009 Don't clobber the sources when plain "make" is run. Just print a message
as in all other Makefiles that create syscall files.

Fixed some style bugs.
2000-01-15 19:40:08 +00:00