Commit Graph

213 Commits

Author SHA1 Message Date
Julian Elischer
4f0db5e08c Allocate KSEs and KSEGRPs separatly and remove them from the proc structure.
next step is to allow > 1 to be allocated per process. This would give
multi-processor threads. (when the rest of the infrastructure is
in place)

While doing this I noticed libkvm and sys/kern/kern_proc.c:fill_kinfo_proc
are diverging more than they should.. corrective action needed soon.
2002-09-15 23:52:25 +00:00
Jacques Vidrine
f76b74d6d7 In kvm_openfiles/kvm_open, mark the file descriptors as close-on-exec.
Applications can not do this themselves, as the descriptors are hidden
behind the opaque `kvm_t' type.
2002-09-11 16:41:39 +00:00
Julian Elischer
71fad9fdee Completely redo thread states.
Reviewed by:	davidxu@freebsd.org
2002-09-11 08:13:56 +00:00
Peter Wemm
0d8293f4ab Hopefully unbreak world. ke_slptime is gone. It should really have been
looking at p_ksegrp.kg_slptime anyway.
2002-08-30 02:18:38 +00:00
Alfred Perlstein
b20ea17938 Allow one to grab the definition of struct ucred by defining _WANT_UCRED
instead of forcing _KERNEL.

Move the include of sys/_label.h in ucred.h under the
_KERNEL || _WANT_UCRED case.
2002-08-28 20:39:48 +00:00
Kris Kennaway
d3cf4981d9 &x is not a format string 2002-08-24 07:15:55 +00:00
Mike Barcroft
abbd890233 o Merge <machine/ansi.h> and <machine/types.h> into a new header
called <machine/_types.h>.
o <machine/ansi.h> will continue to live so it can define MD clock
  macros, which are only MD because of gratuitous differences between
  architectures.
o Change all headers to make use of this.  This mainly involves
  changing:
    #ifdef _BSD_FOO_T_
    typedef	_BSD_FOO_T_	foo_t;
    #undef _BSD_FOO_T_
    #endif
  to:
    #ifndef _FOO_T_DECLARED
    typedef	__foo_t	foo_t;
    #define	_FOO_T_DECLARED
    #endif

Concept by:	bde
Reviewed by:	jake, obrien
2002-08-21 16:20:02 +00:00
Alfred Perlstein
aa22cbfea7 Hide 'struct ucred' behind '#ifdef _KERNEL', this should stop userland
from attempting to use it for good.  There is a catch, kvm_proc.c needs
to '#define _KERNEL' to get at the ucred.

Requested by: rwatson
2002-08-16 07:01:43 +00:00
Jake Burkholder
5aebb40291 Auto size available kernel virtual address space based on phsyical memory
size.  This avoids blowing out kva in kmeminit() on large memory machines
(4 gigs or more).

Reviewed by:	tmm
2002-08-10 22:14:16 +00:00
Julian Elischer
58551c0393 Don't even read in the thread if it is a zombie process. 2002-06-30 20:13:53 +00:00
Julian Elischer
bff4151c28 grow a brain and do this right. 2002-06-30 17:06:46 +00:00
Julian Elischer
6143c38376 Don't follow non existant thread pointers (e.g. for zombies) 2002-06-30 08:11:30 +00:00
Julian Elischer
e602ba25fd Part 1 of KSE-III
The ability to schedule multiple threads per process
(one one cpu) by making ALL system calls optionally asynchronous.
to come: ia64 and power-pc patches, patches for gdb, test program (in tools)

Reviewed by:	Almost everyone who counts
	(at various times, peter, jhb, matt, alfred, mini, bernd,
	and a cast of thousands)

	NOTE: this is still Beta code, and contains lots of debugging stuff.
	expect slight instability in signals..
2002-06-29 17:26:22 +00:00
Alfred Perlstein
a82bbc730e Assume __STDC__, remove non-__STDC__ code.
Submitted by: keramida
2002-05-28 17:03:12 +00:00
Jake Burkholder
8a9bbbc50a Catch up to tte.h changes. 2002-05-21 02:22:49 +00:00
David E. O'Brien
2242258dc7 Stub out _kvm_mdopen, we don't the same constants as NetBSD 2002-05-15 09:56:40 +00:00
David E. O'Brien
3a52718aad Add a PowerPC machdep for kvm.
Obtained from:	NetBSD (rev 1.4, pre-UVM)
2002-05-15 09:55:41 +00:00
Dima Dorfman
21687047cf Fix (for the second time) kvm_getprocs() for the case where no
processes match the given criteria.  Since revision 1.60 of malloc.c,
malloc() and friends return an invalid pointer when given a size of 0.
kvm_getprocs() uses sysctl() with a NULL oldp argument to get an
initial size, but does not check whether it's 0 before passing it to
realloc() (via _kvm_realloc()).  Before the aforementioned malloc()
change, this resulted in a minimal allocation made and a valid poitner
returned, but now results in an invalid, but non-NULL, pointer being
returned.  When this is passed to sysctl(), the latter returns EFAULT
(as it should).
2002-04-07 04:47:58 +00:00
David E. O'Brien
1372519b15 Remove multi-line __P() usage. 2002-03-22 09:22:15 +00:00
David E. O'Brien
69160b1eb7 Remove __P() usage. 2002-03-21 23:54:04 +00:00
David E. O'Brien
be04b6d190 Remove 'register' keyword. 2002-03-21 23:39:28 +00:00
Brian Feldman
49b33de841 Also blindly attempt to fix broken world with respect to proc.p_runtime
changes.
2002-02-22 19:10:09 +00:00
Julian Elischer
65e4542fca I THINK this fixes 'make world'
I'll know as soon as I re-import it and compile it.. :-)
 There is no longer a 'pri' strict in the proc struct.
 the fields are scattered between the ksegrp and thread in question.
2002-02-13 00:10:04 +00:00
Julian Elischer
3daf63fc50 pre-emptively fix a KSE/M3 problem.
Make a slight change so that libkvm reaches the main thread via the
linked list, rather than assuming it is in the proc structure. Both
conditions are true in -current but only the first will be true in
the KSE M3 world.
2002-02-07 20:28:25 +00:00
Ruslan Ermilov
fe42e96eff Finish cleanup in kvm.c revisions 1.10 and 1.11 -- mark sf (swapfile)
argument to kvm_open() and kvm_openfiles() as unused.

BSD didn't read swap since kvm.c CSRG revision 5.21 (u-area is pageable
under new VM.  no need to read from swap.)

The old !NEWVM code was removed in CSRG revision 5.23 (~ten years ago).
2002-01-22 10:07:03 +00:00
Jake Burkholder
e5a86020b0 Adapt to new kernel tsb structure. 2001-12-29 06:43:36 +00:00
Ruslan Ermilov
e6cb3c3608 s/processes/files/ inherited from kvm_getprocs(3).
PR:		docs/32252
Submitted by:	tobez
2001-11-24 15:38:28 +00:00
John Baldwin
9c9c290361 Include sys/param.h instead of sys/types.h to get the definition of the
MIN() macro.

Pointy hat to:	rwatson
2001-11-20 08:26:37 +00:00
Robert Watson
b5dfbbe3f3 o Cleanup of includes: user.h may be a catch-all, but that's not
entirely desirable.  Back out previous commit, and clean up includes
  to be more minimal.

Submitted by:	bde
2001-11-19 21:14:50 +00:00
Robert Watson
123f65b0e9 #include <sys/user.h> rather than individually including a plethora
of kernel include files, reducing the replication of kernel include
dependency information in userland.

Obtained from:	TrustedBSD Project
2001-11-19 15:26:36 +00:00
Jake Burkholder
a967158a85 libkvm for sparc64. Only works for kernel memory so far. 2001-11-18 21:01:09 +00:00
Peter Wemm
15d2f5f04f kern.ps_arg_max_cache is a long, not an int. I believe this is half of
what broke ps on ia64.  It probably also broke on alpha, but the fallback
method of using lseek/read on /proc/*/mem to read ps_strings seems to
work there.  It doesn't on ia64 yet.
2001-11-08 00:23:06 +00:00
Doug Rabson
ba94a466fa Implement va->pa translation for kernel virtual addresses. This is
untested - it only seems to be used for crashdumps.
2001-10-25 09:08:21 +00:00
Doug Rabson
983c1b5875 Partially port kvm to ia64 - virtual to physical translation is incomplete. 2001-10-23 11:05:35 +00:00
Bruce Evans
43ea907a42 Backed out "Compensate for header dethreading [mistakes]" mistakes in
alpha files too.
2001-10-13 04:38:46 +00:00
Bruce Evans
6eabd84580 Compensate for "Compensate for header dethreading" by backing it out. 2001-10-10 17:48:44 +00:00
Ruslan Ermilov
32eef9aeb1 mdoc(7) police: Use the new .In macro for #include statements. 2001-10-01 16:09:29 +00:00
Matthew Dillon
e67f5b9fca Implement __FBSDID() 2001-09-16 21:35:07 +00:00
Julian Elischer
b40ce4165d 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 Wemm
6f8c6a6977 Make ps -M corefile work again. This has been broken for quite some time.
kvm_proclist() was aborting when it saw the ithreads with no pgrp.
2001-08-24 09:43:44 +00:00
Peter Wemm
f85f304006 Dynamically adjust to the value of KERNBASE in a crashdump, with
a fallback for old kernels without the "kernbase" symbol.
2001-08-24 08:53:30 +00:00
Kris Kennaway
6dac8ac9e5 Mark some functions as __printflike() and/or taking const char * arguments
instead of char *.

MFC after:	2 weeks
2001-08-20 12:53:36 +00:00
Ruslan Ermilov
753d686d34 mdoc(7) police: s/BSD/.Bx/ where appropriate. 2001-08-14 10:01:54 +00:00
Ruslan Ermilov
c75526d5a0 mdoc(7) police: fixed the "new sentence" bogons. 2001-08-10 15:03:10 +00:00
Dima Dorfman
7ebcc426ef Remove whitespace at EOL. 2001-07-15 07:53:42 +00:00
Dima Dorfman
70d51341bf mdoc(7) police: remove extraneous .Pp before and/or after .Sh. 2001-07-09 09:54:33 +00:00
Thomas Moestl
e04a7c4ae5 Change this to support the new way swap device information is exported
via sysctl, and clean up some style and (size_t != int) issues.
2001-06-01 22:57:07 +00:00
Robert Watson
b1fc0ec1a7 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
Ruslan Ermilov
3ab9a9d0e0 Removed -I${.CURDIR}/.../sys from CFLAGS. 2001-05-18 13:41:42 +00:00
David Malone
d339edcf66 Avoid dividing by zero if kd->procbase->ki_structsize is uninitalised.
(I'm testing the numerator rather than the denominator, which looks
weird, but is the right thing to do here).
2001-05-03 11:26:46 +00:00
Matt Jacob
f045f3077f Do the alpha dance for the change MarkM hath made on the i386 side. 2001-05-02 07:10:52 +00:00
David Malone
0627f53b57 Don't give a warning about "proc size mismatch" if no struct were
returned. (This arose on a list about a month ago when someone
found bogus warnings if they used "ps -Uuser_with_no_processes".)

Approved by:	mckusick
2001-05-01 10:34:15 +00:00
Mark Murray
82633431b3 Compensate for header dethreading. 2001-05-01 09:24:15 +00:00
Ruslan Ermilov
4a558355e5 MAN[1-9] -> MAN. 2001-03-27 17:27:19 +00:00
Peter Wemm
d77052e5fa Find <libkvm.h> in the source tree. This helps standalone builds. 2001-03-21 22:52:48 +00:00
Robert Watson
ae3a37ad44 Adapt libkvm_getswapinfo() to make use of recently committed vm and swap
sysctls exporting swap information.  When running on a live kernel,
the sysctl's will now be used instead of kvm_read, allowing consumers of
this interface to run without privilege (setgid kmem).  Retain the
ability to run on coredumps, or on a kernel using kmem if explicitly
pointed at one.

A side effect of this change is that kvm_getswapinfo() is faster now in
the general case. If the SWIF_DUMP_TREE flag is given (pstat -ss does
this), the radix tree walker, which still uses kvm_read in any case, is
invoked, and therefore does require privilege.

Submitted by:	Thomas Moestl <tmoestl@gmx.net>
Reviewed by:	freebsd-audit
2001-02-23 18:49:16 +00:00
Jake Burkholder
4c85452ba9 Catch up to new priority interface. 2001-02-12 00:21:38 +00:00
Ruslan Ermilov
d0353b836e mdoc(7) police: split punctuation characters + misc fixes. 2001-02-01 16:38:02 +00:00
John Baldwin
6d3e7b9b0b Add a new item to kinfo_proc: ki_sflag to mirror p_sflag. 2001-01-24 12:49:52 +00:00
Garrett Wollman
8b43deacb3 Revert rev. 1.27. This file only included <sys/select.h> because of
brokenness introduced in <sys/select.h> rev. 1.8 which is now OBE.
<sys/tty.h> and <sys/selinfo.h> together do the right thing.
2001-01-20 03:02:46 +00:00
Ruslan Ermilov
32f6256a49 Prepare for mdoc(7)NG. 2001-01-16 09:08:22 +00:00
Ben Smithurst
42680b3a78 Use macro API to <sys/queue.h> 2000-12-30 21:52:34 +00:00
Kirk McKusick
1f7d250182 Change the proc information returned from the kernel so that it
no longer contains kernel specific data structures, but rather
only scalar values and structures that are already part of the
kernel/user interface, specifically rusage and rtprio. It no
longer contains proc, session, pcred, ucred, procsig, vmspace,
pstats, mtx, sigiolst, klist, callout, pasleep, or mdproc. If
any of these changed in size, ps, w, fstat, gcore, systat, and
top would all stop working. The new structure has over 200 bytes
of unassigned space for future values to be added, yet is nearly
100 bytes smaller per entry than the structure that it replaced.
2000-12-12 07:25:57 +00:00
David E. O'Brien
1a37aa566b Add `_PATH_DEVZERO'.
Use _PATH_* where where possible.
2000-12-09 09:35:55 +00:00
Alfred Perlstein
b217bcfe47 remove unneded sys/ucred.h include 2000-11-30 18:34:08 +00:00
Ruslan Ermilov
726b61ab5f Avoid use of direct troff requests in mdoc(7) manual pages. 2000-11-10 17:46:15 +00:00
Brian Feldman
1da729a59e Good, fixing the header showed incorrect usage of it! #define _KERNEL
here for the include of sys/select.h.
2000-08-06 17:03:09 +00:00
Kris Kennaway
ba3c0383aa Limit the amount of data copied to the error buffer to _POSIX2_LINE_MAX.
This is the documented size which the user-provided buffer must be.
2000-08-04 09:23:07 +00:00
Kris Kennaway
03b96d11a8 Remove obsolete reference to /var/db/kvm_kernel.db
Reviewed by:	peter
2000-05-07 02:16:43 +00:00
Alexey Zelkin
7f5e8c848c Introduce .Lb macro to libkvm manpages.
Use .Pa macro for "enlighting" path
2000-04-22 16:10:12 +00:00
Jonathan Lemon
d707aa564d Remove unneeded #include 2000-04-16 17:36:48 +00:00
Jacques Vidrine
91a594d823 Change the return value of kvm_read/kvm_write to be -1 on error, to
match the documented interface.

Previously it returned 0 on error.

PR:		bin/10511
2000-03-31 15:04:25 +00:00
David E. O'Brien
b787589098 -Wall, which caught a real bug where buflen wasn't being set properly. 2000-03-27 00:33:45 +00:00
Peter Wemm
392cc8343e Correct an error message presumably as a result of cut/paste.
kvm_getfiles() referred to itself as kvm_getprocs().
2000-02-18 16:39:00 +00:00
Chris Costello
fd3e261bae Repair misspelled `.Pp' directive:
.PP -> .Pp
2000-02-14 01:35:15 +00:00
Rodney W. Grimes
d05257b0f2 Replace beforeinstall target with new variables used by .mk system.
Reviewed by:	marcel, and make world
2000-01-14 07:57:47 +00:00
Bruce Evans
604d32ca3b Fixed missing includes in synopsis. <sys/file.h> went missing when KERNEL
was not updated to _KERNEL.  Actually including <sys/file.h> as specified
never actually worked, since a prerequisite was missing.
2000-01-05 16:38:58 +00:00
Peter Wemm
c447342094 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 05:07:58 +00:00
Peter Wemm
c4a7cdb3b6 Use kldsym(2) to lookup symbol values. This avoids the kvm_mkdb juggling
and is module aware.  Yes, this means that kvm_nlist(3) will find symbols
in loaded modules.  The emulation of the nlist struct is pretty crude but
seems to work well enough for all the users in the tree that I found.
1999-12-27 07:14:58 +00:00
Poul-Henning Kamp
c464420c89 Report swapdevices as cdevs rather than bdevs.
Remove unused dev2budev() function.
1999-11-29 21:37:18 +00:00
Poul-Henning Kamp
b9df5231ca Introduce commandline caching in the kernel.
This fixes some nasty procfs problems for SMP, makes ps(1) run much faster,
and makes ps(1) even less dependent on /proc which will aid chroot and
jails alike.

To disable this facility and revert to previous behaviour:
        sysctl -w kern.ps_arg_cache_limit=0

For full details see the current@FreeBSD.org mail-archives.
1999-11-16 20:31:58 +00:00
Peter Wemm
8771870c76 Delete the sf (swapfile) arg to an internal function that used to point to
/dev/drum but has not been used for a LONG time.
Add $FreeBSD$
1999-10-11 05:01:17 +00:00
Peter Wemm
59c9cd2bce Install <kvm.h> from here (after repo copy) so it's all in one package. 1999-10-04 14:56:04 +00:00
Peter Wemm
7f3dea244c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
Peter Wemm
a4add9a9b1 $Id$ -> $FreeBSD$ 1999-08-27 23:45:13 +00:00
Bruce Evans
480bc7e108 Don't open the swap file. The open descriptor for it hasn't been used
for over 5 years since we switched to using procfs for kvm_uread().
This cleanup was motivated by recent breakage of the default swap file
(/dev/drum) when swapon() has not been called.
1999-08-25 03:01:54 +00:00
Nik Clayton
fbc400a67a Add $Id$, to make it simpler for members of the translation teams to
track.

The $Id$ line is normally at the bottom of the main comment block in the
man page, separated from the rest of the manpage by an empty comment,
like so;

     .\"    $Id$
     .\"

If the immediately preceding comment is a @(#) format ID marker than the
the $Id$ will line up underneath it with no intervening blank lines.
Otherwise, an additional blank line is inserted.

Approved by:            bde
1999-07-12 20:50:10 +00:00
Peter Wemm
bf0e1ee370 Tidy up references to <sys/rlist.h> and support for the old swap management
that went away in January.
1999-05-11 14:32:18 +00:00
Bruce Evans
34597fa67f Oops, the previous log message should have been:
Include <machine/ansi.h> so that this file is self-sufficient again.
Rev.1.6 doesn't do this as claimed unless <nlist.h> has nonstandard
pollution.

Cleaned up includes.
1999-04-10 03:49:43 +00:00
Bruce Evans
95a7753b24 Declare mkstemps(). 1999-04-09 15:06:56 +00:00
Andrew Gallatin
cad59f82df make libkvm capable of dealing with a crashdump on alphas
Reviewed by: Doug Rabson <dfr@nlsystems.com>
1999-03-12 14:47:33 +00:00
Bruce Evans
114d756447 Don't use u_long in the synopsis, since u_long is not part of the kvm
interface.
1999-03-05 17:32:53 +00:00
Dmitrij Tejblum
bd54ec1edf From rev. 1.12 of usr.sbin/pstat/pstat.c by phk:
Reflect the fact that we do not swap on the first <dmmax> blocks of a
swapdev, to protect disklabels and other such magic stuff.
1999-02-14 21:42:05 +00:00
Matthew Dillon
f3401d0c26 Handle case where no swap is configured 1999-02-06 06:31:57 +00:00
Bruce Evans
45908a6a19 Removed evil typedef kvm_swap_t and all uses of it (not many).
Hoped for by:	wollman
1999-01-27 11:29:15 +00:00
Matthew Dillon
876c5c1135 Fix swap radix tree dump formatting ( pstat -ss ), it was printing the
wrong radix for recursive subnodes.
1999-01-25 04:07:07 +00:00
Bruce Evans
9bcaf304c6 Fixed missing cross reference to kvm_getfiles.
This man page may be overdoing the cross references by referencing
man pages that are just links to other pages that are referenced.

kvm_uread() is still completely undocumented in kvm*.3.
1999-01-23 08:12:12 +00:00
Bruce Evans
8bb84da720 Fixed unsorting of SRCS and MAN3 in previous commit.
Sorted MLINKS.
1999-01-23 07:55:15 +00:00
Bruce Evans
9457cf9c59 Fixed unsorting of cross references in previous commit. 1999-01-23 07:34:56 +00:00
Matthew Dillon
b8808468dd Oops, forgot this. Needed by libkvm. 1999-01-23 04:58:35 +00:00