| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clists were originally used by the TTY layer as a text buffer interface.
The advantage of clists were that it would allocate a small set of
additional buffers that could be shared between TTYs when needed. In
the modern days we can just allocate some more KBs of memory to keep the
TTYs satisfied. The global cfreelist also requires synchronisation,
which may not be useful when trying to improve scalability.
The MPSAFE TTY layer uses its own text buffers (ttyinq and ttyoutq). We
had a small amount of drivers in the tree that still uses clists, like
the old USB stack and some keyboard drivers. With the old USB stack gone
and the keyboard drivers changed to use a circular buffer, we can safely
remove clists from the kernel.
|
|
|
|
| |
We don't support quote bits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Right now we only have a very small amount of drivers that use clists,
but we still allocate 50 cblocks as slush space, which allows drivers to
temporarily overcommit their storage. Most of the drivers don't allow
this anyway.
I've performed the following changes:
- We don't allocate any cblocks on startup.
- I've removed the DDB command, because it has nothing useful to print
now. You can obtain the amount of allocated blocks by running `vmstat
-m | grep clist'.
- I've removed cfreecount, which is now unused.
- The old code first tries to allocate using M_NOWAIT, followed by
M_WAITOK. This doesn't make any sense, so just remove this logic. It
seems the drivers allow us to sleep anyway.
We can even remove ccmax from clist_alloc_cblocks and c_cbmax from
struct clist, but this breaks binary compatibility.
This reduces the amount of allocated cblocks on my system from 54 to 4.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the code to prevent useless waste of space.
- Remove support for quote bits. There is not a single driver that needs
these bits anymore. This means putc() now accepts a char instead of an
int.
- Remove the unneeded catq() and nextc() routines. They were only used
by the old TTY layer.
- Convert the clist code to use ANSI C prototypes.
|
|
|
|
|
|
|
|
|
|
|
| |
After the import of the new TTY layer, the TTY_QUOTE definition will not
be present anymore. To make sure clists will still work as expected,
introduce an internal definition called QUOTEMASK.
Maybe we can decide to remove the quote bits entirely, but we still have
to look into this. There may be drivers that still use the quote bits.
Obtained from: //depot/projects/mpsafetty
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For some reason, the <sys/tty.h> header file also contains routines of the
clists and console that are used inside the TTY layer. Because the clists
are not only used by the TTY layer (example: various input drivers), we'd
better move the entire clist programming interface into <sys/clist.h>. Also
remove a declaration of nonexistent variable.
The <sys/tty.h> header also contains various definitions for the console
code (tty_cons.c). Also move these to <sys/cons.h>, because they are
not implemented inside the TTY layer.
While there, create separate malloc pools for the clist and console code.
Approved by: philip (mentor)
|
|
|
|
|
|
|
|
|
| |
after each SYSINIT() macro invocation. This makes a number of
lightweight C parsers much happier with the FreeBSD kernel
source, including cflow's prcc and lxr.
MFC after: 1 month
Discussed with: imp, rink
|
| |
|
|
|
|
|
|
|
|
|
| |
future:
rename ttyopen() -> tty_open() and ttyclose() -> tty_close().
We need the ttyopen() and ttyclose() for the new generic cdevsw
functions for tty devices in order to have consistent naming.
|
| |
|
|
|
|
|
|
| |
it more than doubles the text size of this file.
GCC has wisely ignored us on this previously
|
| |
|
|
|
|
| |
Approved by: trb
|
|
|
|
| |
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
|
|
|
|
| |
especially in troff files.
|
| |
|
|
|
|
|
|
| |
correctly in its warning message.
PR: kern/7693
|
|
|
|
| |
Seperate does not exist in the english language.
|
| |
|
|
|
|
| |
ints to promote to long.
|
|
|
|
|
|
|
| |
respectively. Most of the longs should probably have been
u_longs, but this changes is just to prevent warnings about
casts between pointers and integers of different sizes, not
to fix poorly chosen types.
|
| |
|
|
|
|
|
|
|
|
| |
Distribute all but the most fundamental malloc types. This time I also
remembered the trick to making things static: Put "static" in front of
them.
A couple of finer points by: bde
|
|
|
|
|
| |
it when it is not used. In most cases, the reasons for including it
went away when the special ioctl headers became self-sufficient.
|
|
|
|
|
|
| |
complain and blunder on.
Should be in 2.2, preferably with a better fix.
|
|
|
|
| |
ready for it yet.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
and `show cbstat'. The pgrpdump code was previously controlled by
`#ifdef DEBUG'.
|
|
|
|
|
| |
it to be unnecessarily restrictive). For tty_subr.c, update to my standard
copyright.
|
| |
|
| |
|
|
|
|
|
|
| |
with later.
A number of unused vars removed.
A number of unused procs removed or #ifdefed.
|
| |
|
|
|
|
|
|
|
|
|
| |
civilised manner than panicing. This only happens as a result of another
state botch somewhere else, eg: from a tty driver calling putc or b_to_q
on a closed device. Apparently, it's also been implicated in a panic
with a status (^T) event on ptys.
This change should pretty well be in it's final form now.
|
|
|
|
|
| |
The Jury has not reached a verdict yet on this approach - a better fix
may be thought of, but for now this works.
|
|
|
|
|
|
|
|
|
|
|
| |
non-fatal. I've make it return an appropriate error to the caller instead
of panic()ing.
Handling an error condition is inherently more friendly than exploding
the kernel.. :-) The new behavior is a little closer to traditional
clists, potentially making porting a little simpler.
Suggested by: bde (many months ago, I've been using this for a while..)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TTYHOG = 1024 bytes, 10 cblocks were reserved. This was thought to
provide 10 * CBSIZE = 1080 bytes of buffering, but if the head pointer
is at the end of a cblock, then it only provides 1 + 9 * CBSIZE = 973
bytes of buffering. This caused serious data loss for ptys because the
flow control is deterministic and requires at least TTYHOG bytes of
buffering. For ttys, if input flow control is used then there is
usually enough slop in the high watermark to avoid problems, and if
input flow control isn't used then a limit of 973 is not much different
from a limit of 1024.
Add prototypes.
Continue cleaning up new init stuff.
|
|
|
|
| |
compiler warnings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Submitted by: terry (terry lambert)
This is a composite of 3 patch sets submitted by terry.
they are:
New low-level init code that supports loadbal modules better
some cleanups in the namei code to help terry in 16-bit character support
some changes to the mount-root code to make it a little more
modular..
NOTE: mounting root off cdrom or NFS MIGHT be broken as I haven't been able
to test those cases..
certainly mounting root of disk still works just fine..
mfs should work but is untested. (tomorrows task)
The low level init stuff includes a total rewrite of init_main.c
to make it possible for new modules to have an init phase by simply
adding an entry to a TEXT_SET (or is it DATA_SET) list. thus a new module can
be added to the kernel without editing any other files other than the
'files' file.
|
|
|
|
|
| |
its time zeroing quotes although quotes are not very common. E.g., there
are never any quotes in output queues.
|
| |
|
|
|
|
|
|
|
|
|
| |
operation of each clist. Limit the growth of each clist. Clists
can only grow larger than the reserved minimum if there are free
cblocks in a shared pool. The size of this pool is now fixed
(this could be improved). The reserved and maximum sizes are more
carefully allocated for slip and ppp, depending on the mtu. A maximum
MTU of 16384 is now enforced for ppp.
|
|
|
|
|
| |
normal due to cblock resource starvation or malloc() failing when
the device is opened.
|
|
|
|
|
|
|
|
| |
cycles. While waiting there I added a lot of the extra ()'s I have, (I have
never used LISP to any extent). So I compiled the kernel with -Wall and
shut up a lot of "suggest you add ()'s", removed a bunch of unused var's
and added a couple of declarations here and there. Having a lap-top is
highly recommended. My kernel still runs, yell at me if you kernel breaks.
|
| |
|
| |
|
|
|
|
| |
and be happy.
|
|
|
|
|
| |
for adding and removing cblocks from the cfreelist queue (to give them
back to malloc). I'll add those tomorrow.
|
|
|
|
|
| |
Reviewed by: Rodney W. Grimes
Submitted by: John Dyson and David Greenman
|