Commit Graph

142 Commits

Author SHA1 Message Date
Ed Schouten
a1215e37a4 Introduce a hooks layer for the MPSAFE TTY layer.
One of the features that prevented us from fixing some of the TTY
consumers to work once again, was an interface that allowed consumers to
do the following:

- `Sniff' incoming data, which is used by the snp(4) driver.

- Take direct control of the input and output paths of a TTY, which is
  used by ng_tty(4), ppp(4), sl(4), etc.

There's no practical advantage in committing a hooks layer without
having any consumers. In P4 there is a preliminary port of snp(4) and
thompsa@ is busy porting ng_tty(4) to this interface. I already want to
have it in the tree, because this may stimulate others to work on the
remaining modules.

Discussed with:	thompsa
Obtained from:	//depot/projects/mpsafetty/...
2008-09-22 19:25:14 +00:00
Ed Schouten
9d5a92ee43 Fix a small typo in the pstat(8) manual page.
The second LOW column of the pstat(8) command refers to the low
watermark of the output queue.
2008-08-20 22:09:33 +00:00
Ed Schouten
bc093719ca Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the
FreeBSD kernel. The new TTY layer was designed to improve the following:

- Improved driver model:

  The old TTY layer has a driver model that is not abstract enough to
  make it friendly to use. A good example is the output path, where the
  device drivers directly access the output buffers. This means that an
  in-kernel PPP implementation must always convert network buffers into
  TTY buffers.

  If a PPP implementation would be built on top of the new TTY layer
  (still needs a hooks layer, though), it would allow the PPP
  implementation to directly hand the data to the TTY driver.

- Improved hotplugging:

  With the old TTY layer, it isn't entirely safe to destroy TTY's from
  the system. This implementation has a two-step destructing design,
  where the driver first abandons the TTY. After all threads have left
  the TTY, the TTY layer calls a routine in the driver, which can be
  used to free resources (unit numbers, etc).

  The pts(4) driver also implements this feature, which means
  posix_openpt() will now return PTY's that are created on the fly.

- Improved performance:

  One of the major improvements is the per-TTY mutex, which is expected
  to improve scalability when compared to the old Giant locking.
  Another change is the unbuffered copying to userspace, which is both
  used on TTY device nodes and PTY masters.

Upgrading should be quite straightforward. Unlike previous versions,
existing kernel configuration files do not need to be changed, except
when they reference device drivers that are listed in UPDATING.

Obtained from:		//depot/projects/mpsafetty/...
Approved by:		philip (ex-mentor)
Discussed:		on the lists, at BSDCan, at the DevSummit
Sponsored by:		Snow B.V., the Netherlands
dcons(4) fixed by:	kan
2008-08-20 08:31:58 +00:00
Ed Schouten
94a340ae73 Remove OTTYDISC, NETLDISC and NTTYDISC definitions.
When I ported most applications away from <sgtty.h>, I noticed none of
them were actually using these definitions. I kept them in place,
because I didn't want to touch tools like pstat(8) and stty(1).

In preparation for the MPSAFE TTY layer, remove these definitions. This
doesn't have any impact with respect to binary compatibility (see
tty_conf.c).

We couldn now add an #error to <sys/ioctl_compat.h> when included
outside the kernel. Unfortunately, kdump's mkioctls includes this file
unconditionally.

Approved by:	philip (mentor)
2008-07-16 11:20:04 +00:00
Remko Lodder
bc42e6c43f Fix pstat behaviour when using coredumps. The reference to tp was
incorrect and should have been poining to &tty, tp is a virtual
address from the coredump, while we should obtain the address through
the tty struct.

Approved by:	imp (mentor, implicit trivial changes)
MFC after:	1 week
Submitted by:	Ed Schouten (ed at 80836 dot nl)
2008-05-14 00:22:57 +00:00
Sean Farley
2966d28c32 Significantly reduce the memory leak as noted in BUGS section for
setenv(3) by tracking the size of the memory allocated instead of using
strlen() on the current value.

Convert all calls to POSIX from historic BSD API:
 - unsetenv returns an int.
 - putenv takes a char * instead of const char *.
 - putenv no longer makes a copy of the input string.
 - errno is set appropriately for POSIX.  Exceptions involve bad environ
   variable and internal initialization code.  These both set errno to
   EFAULT.

Several patches to base utilities to handle the POSIX changes from
Andrey Chernov's previous commit.  A few I re-wrote to use setenv()
instead of putenv().

New regression module for tools/regression/environ to test these
functions.  It also can be used to test the performance.

Bump __FreeBSD_version to 700050 due to API change.

PR:		kern/99826
Approved by:	wes
Approved by:	re (kensmith)
2007-07-04 00:00:41 +00:00
Andrey A. Chernov
ba174a5e38 Back out all POSIXified *env() changes.
Not because I admit they are technically wrong and not because of bug
reports (I receive nothing). But because I surprisingly meets so
strong opposition and resistance so lost any desire to continue that.

Anyone who interested in POSIX can dig out what changes and how
through cvs diffs.
2007-05-01 16:02:44 +00:00
Andrey A. Chernov
903fd42535 Preparing for upcoming POSIXed putenv() rewrite:
don't allow const as putenv() arg, dup it
2007-04-30 15:16:19 +00:00
Ruslan Ermilov
ae35e8ad88 - Recognize -g and -m in pstat(8) too.
- Document -g and -m support in swapinfo(8).

Reviewed by:	markm
2007-04-03 08:16:06 +00:00
Mark Murray
7e8409a7a9 Add -m (megabytes) and -g (gigabytes) options. I'm tired of being told
I can't do this.

MFC: 1 month
2007-04-01 20:28:37 +00:00
John Baldwin
897d31be9d Another crashdump fix: nfiles was renamed to openfiles in 5.x.
MFC after:	3 days
2007-02-14 04:20:41 +00:00
Robert Watson
a2e59d80d5 Print (total - used) as the amount of available swap for a swap device
when printing swapinfo output, rather than (total), as that is (strictly
speaking) more accurate.

Pointed out by:	Rob <spamrefuse at yahoo dot com>
MFC after:	3 days
2005-11-17 19:31:52 +00:00
Stefan Farfeleder
18b51f792f Remove unused variables. 2005-04-09 14:59:10 +00:00
Giorgos Keramidas
00191f86e0 Use a designator for initializing only one member of the nlist
structs, making pstat WARNS=3 clean on i386, sparc64 and amd64.

Bump WARNS level to 3.

Approved by:	sam, pjd
2005-03-21 18:11:31 +00:00
Giorgos Keramidas
7257230f7b - Add a -h flag to pstat to print swap sizes in "human readable"
format, with humanize_number(3).

- Move the common parts of the code that prints the sizes for a single
  swap device and the total to a single function to avoid repeating
  the humanize_number() stuff all over the place.

- Change the type of CONVERT() from intmax_t to int64_t, since this
  makes calling humanize_number() easier but cast the values to
  intmax_t before printing them, to make use of the %jd format that
  printf() supports.

- Document the new -h flag in the manpage and bump its date.

Approved by:	pjd
Useful tips:	brooks
MFC after:	2 weeks
2005-03-21 16:36:05 +00:00
Ruslan Ermilov
59a3c79da6 Sort sections. 2005-01-18 20:02:45 +00:00
David Schultz
6004362e66 Don't include sys/user.h merely for its side-effect of recursively
including other headers.
2004-11-27 06:51:39 +00:00
Diomidis Spinellis
7aaa48252b Corrected the description of the -t output columns to reflect reality.
MFC after:	2 weeks
2004-11-11 17:30:04 +00:00
Warner Losh
486c8cc4c6 Per letter dated July 22, 1999 remove 3rd clause of Berkeley derived software
(with permission of addtional copyright holders where appropriate)
2004-08-07 04:28:56 +00:00
Ruslan Ermilov
455fb174df Eliminated double whitespace. 2004-07-03 18:35:53 +00:00
Ruslan Ermilov
07bfccd71e Mechanically kill hard sentence breaks. 2004-07-02 23:13:00 +00:00
Poul-Henning Kamp
203bcaf51e Update kvm mode to match kernel changes. 2004-06-09 12:20:44 +00:00
Ruslan Ermilov
8482be06ec -N without -M is pointless. 2004-03-26 09:28:03 +00:00
Ruslan Ermilov
0b46bb97a7 Update information of how pstat(8) accesses the running system. 2004-03-26 09:04:48 +00:00
Mark Murray
16fc3635f7 Make NULL a (void*)0 whereever possible, and fix the warnings(-Werror)
that this provokes. "Wherever possible" means "In the kernel OR NOT
C++" (implying C).

There are places where (void *) pointers are not valid, such as for
function pointers, but in the special case of (void *)0, agreement
settles on it being OK.

Most of the fixes were NULL where an integer zero was needed; many
of the fixes were NULL where ascii <nul> ('\0') was needed, and a
few were just "other".

Tested on: i386 sparc64
2004-03-05 08:10:19 +00:00
Poul-Henning Kamp
799aba9656 Remove options processing for dumping swapdevice radix map. 2003-07-31 21:20:08 +00:00
Poul-Henning Kamp
46637267ec When dumping swap information, drop the "Type" field which displays
a constant string of little information these days.

This removes the need to #include <vm/swap_pager.h> which is due to
become a kernel only include file.
2003-07-31 20:46:33 +00:00
Poul-Henning Kamp
1afc333e74 Report NODEV devices as <NFSfile> 2003-06-05 21:56:47 +00:00
David E. O'Brien
b728350ee6 Use __FBSDID over rcsid[]. Protect copyright[] where needed. 2003-05-03 21:06:42 +00:00
David E. O'Brien
052238b16c style.Makefile(5) 2003-04-04 17:49:21 +00:00
Robert Drehmel
46f7e0d224 - Modernize the format of the open file showing mode output:
. Print the column headers centered (except for the left-aligned
     TYPE header) using a different header for architectures where
     sizeof(uintptr_t) is not four.
   . Consistently do not print a '0x' prefix for hexadecimal values.
   . Separate columns by a single space character.
   . Pad the columns presenting an address or offset enough to hold
     their respective largest value.
   . Do not restrict the output to unknown file types, inodes and
     sockets; allow displaying of pipes, fifos, kqueues and crypto file
     descriptors too.
 - Shorten an overly long line by removing a cast of printf's return
   value to void.

PR:		alpha/45240
Tested on:	i386, sparc64, alpha
2003-01-31 15:16:52 +00:00
Matthew Dillon
48e3128b34 Bow to the whining masses and change a union back into void *. Retain
removal of unnecessary casts and throw in some minor cleanups to see if
anyone complains, just for the hell of it.
2003-01-13 00:33:17 +00:00
Matthew Dillon
cd72f2180b Change struct file f_data to un_data, a union of the correct struct
pointer types, and remove a huge number of casts from code using it.

Change struct xfile xf_data to xun_data (ABI is still compatible).

If we need to add a #define for f_data and xf_data we can, but I don't
think it will be necessary.  There are no operational changes in this
commit.
2003-01-12 01:37:13 +00:00
Poul-Henning Kamp
42c43e6031 Make struct swblock kernel only, to make vm/swap_pager.h userland includable.
Move struct swdevt from sys/conf.h to the more appropriate vm/swap_pager.h.
Adjust #include use in libkvm and pstat(8) to match.
2003-01-03 16:23:12 +00:00
Mike Barcroft
c48205f332 Back out rev 1.78; getbsize(3)'s original interface has been restored.
Approved by:	markm
2002-12-30 18:19:19 +00:00
Mark Murray
84ee4a7c72 Adjust argument passed to getbsize(). 2002-10-23 18:55:20 +00:00
Dag-Erling Smørgrav
eeebf53e24 Use struct xfile, not struct file. 2002-07-31 12:43:17 +00:00
Philippe Charnier
490d5836b5 The .Nm utility 2002-07-14 14:47:15 +00:00
Dag-Erling Smørgrav
5f9ab4b001 If unable to retrive maxfiles / openfiles, fail rather than print garbage.
Gratuitously rename a couple of variables.
Remove unused macros.
Add NAI copyright.

Sponsored by:	DARPA, NAI Labs
2002-05-28 06:52:21 +00:00
Dag-Erling Smørgrav
182a90e4ec Remove the code that was disabled in a recent commit; it is of very limited
use and has been broken in -CURRENT for a long time.
Clean up unneeded entries in the nlist array.
Implement kvm-backed ttymode (which we never had before).  Incomplete as we
do not (yet?) print the correct device, sid or pgid.

Sponsored by:	DARPA, NAI Labs
2002-05-28 06:37:27 +00:00
Dag-Erling Smørgrav
bf94613dfc Oops, don't print /dev/ twice. 2002-05-28 05:45:56 +00:00
Dag-Erling Smørgrav
333eaaeda9 struct tty -> struct xtty. Reenable some previously disable code, but
temporarily disable some rarely-used code that needs more work.

Sponsored by:	DARPA, NAI Labs
2002-05-28 05:42:32 +00:00
Dag-Erling Smørgrav
4418dbbd1a Un-kmemize. Portions of the tty mode code have been temporarily disabled;
everything else, including dead kernel support, works just like before.

Sponsored by:	DARPA, NAI Labs
2002-05-23 15:09:49 +00:00
Dag-Erling Smørgrav
d88b2458a5 Nits in previous commits.
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:58:07 +00:00
Dag-Erling Smørgrav
0cbfd1a525 Cull large amounts of dead code (deprecated since 1997)
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:53:04 +00:00
Dag-Erling Smørgrav
c9624363a8 ANSIfy.
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:48:25 +00:00
Dag-Erling Smørgrav
1dcc9c32aa Staticize.
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:44:23 +00:00
Dag-Erling Smørgrav
d4a0c7a6b5 Whitespace cleanup.
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:42:17 +00:00
Dag-Erling Smørgrav
09941f75bd Unbreak tty mode (cons was renamed to constty a while ago)
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:41:52 +00:00
Josef Karthauser
1063e12617 Replace /kernel with /boot/kernel/kernel.
PR:		docs/37757
Submitted by:	Hiten Pandya <hiten@uk.FreeBSD.org>
2002-05-09 11:47:42 +00:00