Commit Graph

54 Commits

Author SHA1 Message Date
Ed Schouten
c0086bf202 Serialize write() calls on TTYs.
Just like the old TTY layer, the current MPSAFE TTY layer does not make
any attempt to serialize calls of write(). Data is copied into the
kernel in 256 (TTY_STACKBUF) byte chunks. If a write() call occurs at
the same time, the data may interleave. This is especially likely when
the TTY starts blocking, because the output queue reaches the high
watermark.

I've implemented this by adding a new flag, TTY_BUSY_OUT, which is used
to mark a TTY as having a thread stuck in write(). Because I don't want
non-blocking processes to be possibly blocked by a sleeping thread, I'm
still allowing it to bypass the protection. According to this message,
the Linux kernel returns EAGAIN in such cases, but I think that's a
little too restrictive:

	http://kerneltrap.org/index.php?q=mailarchive/linux-kernel/2007/5/2/85418/thread

PR:		kern/118287
2009-02-11 16:28:49 +00:00
Ed Schouten
c3328b2ab8 Don't leave the console TTY constantly open.
When we leave the console TTY constantly open, we never reset the
termios attributes. This causes output processing, echoing, etc. not to
be reset to the proper values when going into single user mode after the
system has booted. It also causes nl-to-crnl-conversion not to take
place during shutdown, which causes a `staircase effect'.

This patch adds a new TTY flag, TF_OPENED_CONS, which is set when the
TTY is opened through /dev/console. Because the flags are only used by
the kernel and the pstat(8) utility, I've decided to renumber the TTY
flags. This shouldn't be an issue, because the TTY layer is not yet part
of a stable release.

Reported by:	Mark Atkinson <atkin901 yahoo com>
Tested by:	sepotvin
2009-02-05 14:21:09 +00:00
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
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
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
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
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
Poul-Henning Kamp
799aba9656 Remove options processing for dumping swapdevice radix map. 2003-07-31 21:20:08 +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
0cbfd1a525 Cull large amounts of dead code (deprecated since 1997)
Sponsored by:	DARPA, NAI Labs
2002-05-23 14:53:04 +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
Ian Dowse
72d12a7fae Oops, remove references to NLOCKED and NWANTED, now that they no
longer exist.
2002-04-28 10:24:38 +00:00
Peter Wemm
9119623471 Userland part of nfs client/server split and cleanup. 2001-09-18 23:34:44 +00:00
Ruslan Ermilov
a4c37c816b mdoc(7) police: removed HISTORY info from the .Os call. 2001-07-10 15:12:08 +00:00
Jens Schweikhardt
65834d4b31 Fix a grammar bogon and removed whitespace at EOL.
MFC after:	1 week
2001-06-03 16:08:25 +00:00
Ruslan Ermilov
0b381bf1fd Remove vestiges of MFS. 2001-06-01 10:07:28 +00:00
Alfred Perlstein
b56b39ad4d Unbreak world, IN_SHLOCK/IN_EXLOCK haven't existed in a while and
Kirk finally has ditched them.  While I'm here also ditch FSHLOCK.
2001-05-09 03:38:02 +00:00
Ruslan Ermilov
039a0992e8 mdoc(7) police: you don't need to use enclose macros for blocks of text. 2001-04-04 11:25:07 +00:00
Dima Dorfman
06bd820586 Note that the -v option is not supported. Don't remove the actual
text because the code is still in pstat.c, and may be reincarnated at
some point.

PR:		26054
Approved by:	nik
2001-03-29 01:46:20 +00:00
Ruslan Ermilov
46eea498da mdoc(7) police: Change -filled displays (which just happen
to be the same as -ragged in the current implementation) to
-ragged.  With mdocNG, -filled displays produce the correct
output, formatted and justified to both margins.
2001-02-07 13:45:30 +00:00
Ruslan Ermilov
0985ff699a mdoc(7) police: compact a few lists for better output. 2001-01-17 09:07:31 +00:00
Ben Smithurst
c3f0a89530 Ooops, the -M and -N flags were already documented, though not very clearly.
Remove the old description in favour of the new description which lists the
-M and -N flags along with all the other flags.  This is consistent with the
manual pages for ps, netstat, iostat, etc.
2001-01-16 22:09:33 +00:00
Ben Smithurst
a82684b6a2 document -M and -N flags.
PR:		24323
Submitted by:	Jesse Monroy <opentrax@email.com>
2001-01-16 22:05:28 +00:00
Assar Westerlund
26a2d90362 update to the current set of mnt_, ufs_ and nfs_ flags
also make man-page correspond to the code
2000-12-30 15:41:40 +00:00
Ruslan Ermilov
8b5c4af3ff Prepare for mdoc(7)NG. 2000-12-27 15:30:30 +00:00
Ruslan Ermilov
e97407b4f2 mdoc(7) police: use the new features of the Nm macro. 2000-11-20 20:10:44 +00:00
Philippe Charnier
7c0e6e50e1 Merge fprintf and exit into errx.
Use .Ev for environment variable.
1999-11-27 17:03:07 +00:00
Peter Wemm
97d92980a9 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
Matthew Dillon
eedc343625 Update pstat -s to handle both old and new swapper.
Add pstat -ss to dump new swapper's radix tree.
1999-01-21 08:08:55 +00:00
Bruce Evans
18e5aee8c1 VVMIO -> VOBJBUF as in pstat.c. 1998-01-17 16:58:55 +00:00
Philippe Charnier
d9961cfdb9 Use err(3). Add usage().
Default source of tables (-M) is /dev/mem, not /dev/kmem.
1997-10-09 07:22:08 +00:00
Peter Wemm
fdaad796ed Update to include some of the newer vnode flags and remove some stale ones. 1997-08-30 20:18:49 +00:00
Peter Wemm
9c5cdfe0af Merge Lite2 changes 1997-03-11 13:00:41 +00:00
Peter Wemm
476602a9d0 Revert $FreeBSD$ to $Id$ 1997-02-22 16:15:28 +00:00
Jordan K. Hubbard
1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
Alexander Langer
c2dc07c8eb Fix a typo, putput --> output.
Submitted by:	Philippe Charnier <charnier@xp11.frmug.org>
1996-10-27 23:12:48 +00:00
Mike Pritchard
c0b0bcf4d3 Use the .Bx macro where appropriate. 1996-08-23 20:36:11 +00:00
Mike Pritchard
d19eed81d4 Document the -i backward compatibility option (same as -v).
Submitted by:	Faried Nawaz
1996-07-03 02:11:39 +00:00
Joerg Wunsch
9b25840f5c Mention swapinfo as .Nm, so it will be referenced by mkwhatis. 1996-04-17 20:50:44 +00:00
Mike Pritchard
270d3d754a Fix a variety of minor typos and cross references in a bunch of
man pages.

Masanobu Saitoh <msaitoh@spa.is.uec.ac.jp>
Giles Lean <giles@nemeton.com.au>
<soda@sra.co.jp>
1996-01-20 07:29:11 +00:00
Bruce Evans
3f69295415 Document SESS, fix PGRP (now PGID), and document some more STATE flags.
Submitted by:	clemc@locus.com and edited by me.
1995-10-06 20:58:24 +00:00