ed [Mon, 15 Jun 2009 21:52:27 +0000 (21:52 +0000)]
Add revoke(1).
While hacking on TTY code, I often miss a small utility to revoke my own
(pseudo-)terminals. This small utility is just a small wrapper around
the revoke(2) call, so you can destroy your very own login sessions.
ed [Mon, 15 Jun 2009 21:05:00 +0000 (21:05 +0000)]
Make the chpass Makefile honour NO_FSCHG.
The chpass Makefile tried to set the fschg flag on the binaries, even if
NO_FSCHG was passed to the installworld. This meant that if I installed
FreeBSD into a Jail, I couldn't installworld from within the Jail
anymore.
Now that it listens to NO_FSCHG, we can just make it bail out when it
fails, just like PRECIOUSPROG does.
ed [Mon, 15 Jun 2009 20:45:51 +0000 (20:45 +0000)]
Perform some more cleanups to in-kernel session handling.
The code that was in place in exit1() was mainly based on code from the
old TTY layer. The main reason behind this, was because at one moment I
ran a system that had two TTY layers in place at the same time. It is
now sufficient to do the following:
- Remove references from the session structure to the TTY vnode and the
session leader.
- If we have a controlling TTY and the session used by the TTY is equal
to our session, send the SIGHUP.
- If we have a vnode to the controlling TTY which has not been revoked,
revoke it.
While there, change sys/kern/tty.c to use s_ttyp in the comparison
instead of s_ttyvp. It should not make any difference, because s_ttyvp
can only become null when the session leader already left, but it's
nicer to compare against the proper value.
jhb [Mon, 15 Jun 2009 20:38:55 +0000 (20:38 +0000)]
Add a new 'void closefrom(int lowfd)' system call. When called, it closes
any open file descriptors >= 'lowfd'. It is largely identical to the same
function on other operating systems such as Solaris, DFly, NetBSD, and
OpenBSD. One difference from other *BSD is that this closefrom() does not
fail with any errors. In practice, while the manpages for NetBSD and
OpenBSD claim that they return EINTR, they ignore internal errors from
close() and never return EINTR. DFly does return EINTR, but for the common
use case (closing fd's prior to execve()), the caller really wants all
fd's closed and returning EINTR just forces callers to call closefrom() in
a loop until it stops failing.
Note that this implementation of closefrom(2) does not make any effort to
resolve userland races with open(2) in other threads. As such, it is not
multithread safe.
sam [Mon, 15 Jun 2009 19:50:03 +0000 (19:50 +0000)]
r193336 moved ifq_detach to if_free which broke if_alloc followed
by if_free (w/o doing if_attach); move ifq_attach to if_alloc and
rename ifq_attach/detach to ifq_init/ifq_delete to better identify
their purpose
ed [Mon, 15 Jun 2009 19:17:52 +0000 (19:17 +0000)]
Make tcsetsid(3) work on revoked TTYs.
Right now the only way to make tcsetsid(3)/TIOCSCTTY work, is by
ensuring the session leader is dead. This means that an application that
catches SIGHUPs and performs a sleep prevents us from assigning a new
session leader.
Change the code to make it work on revoked TTYs as well. This allows us
to change init(8) to make the shutdown script run in a more clean
environment.
jamie [Mon, 15 Jun 2009 18:59:29 +0000 (18:59 +0000)]
Manage vnets via the jail system. If a jail is given the boolean
parameter "vnet" when it is created, a new vnet instance will be created
along with the jail. Networks interfaces can be moved between prisons
with an ioctl similar to the one that moves them between vimages.
For now vnets will co-exist under both jails and vimages, but soon
struct vimage will be going away.
jkim [Mon, 15 Jun 2009 18:49:06 +0000 (18:49 +0000)]
Long long time ago, several utilities in base used to parse %c output and
we were not able to change c_fmt without breaking these utilities. Since
ache fixed all known issues 8 years ago, now we make ko_KR more usable.
Better late than never...
marius [Mon, 15 Jun 2009 18:22:41 +0000 (18:22 +0000)]
Add cas(4), a driver for Sun Cassini/Cassini+ and National Semiconductor
DP83065 Saturn Gigabit Ethernet controllers. These are the successors
of the Sun GEM controllers and still have a similar but extended transmit
logic. As such this driver is based on gem(4).
Thanks to marcel@ for providing a Sun Quad GigaSwift Ethernet UTP (QGE)
card which was vital for getting this driver to work on architectures
not using Open Firmware.
lulf [Mon, 15 Jun 2009 16:18:24 +0000 (16:18 +0000)]
- Relax sanitazion requirements in libdisk, as a previous commit enabling this
sanitization broke sysinstall on some disks. This was due to the disks
reporting a geometry that was incorrectly sanitized by sysinstall. This makes
the sanitization consistent with fdisk.
rmacklem [Mon, 15 Jun 2009 14:44:55 +0000 (14:44 +0000)]
Replace the global references to "hostid" in svc_rpcsec_gss.c to local
variables set via the getcredhostid() function. I also changed the type
of ci_hostid to "unsigned long" so that it matches what is returned by
getcredhostid(). Although "struct svc_rpc_gss_clientid" goes on the wire
during RPCSEC_GSS, it is just a variable # of opaque bytes to the client,
so it doesn't matter how much storage ci_hostid uses.
mav [Mon, 15 Jun 2009 13:47:49 +0000 (13:47 +0000)]
Forbid multi-vector MSI interrupt vectors migration to another CPU once
allocated. MSI have strict vectors allocation requirements, which are not
satisfied now during reallocation. This is not the best possible solution,
but better then just broken, as it was.
ariff [Mon, 15 Jun 2009 04:31:34 +0000 (04:31 +0000)]
- Add a way to change filter oversampling factor through
FEEDER_RATE_PRESET "OVERSAMPLING_FACTOR:X .. .." where
X = log2(oversampling factor).
- Lower down default filter oversampling factor from 128
(log2 = 7) to 32 (log2 = 5), saving worth of 80 Kb.
The use of better polynomial interpolator will raise
its conversion quality/accuracy to match (or slightly
better) with previous settings.
ariff [Mon, 15 Jun 2009 04:05:38 +0000 (04:05 +0000)]
Remap type of polynomial interpolators for better polyphase
coefficients quality:
- Linear interpolator for oversampling factor larger and equal
than 4096 (log2 = 12).
- Quadratic interpolator for oversampling factor larger and equal
than 256 (log2 = 8).
Default oversampling factor (128 ~ log2 = 7) will use OPT32X, which
provides better accuracy.
thompsa [Mon, 15 Jun 2009 00:33:18 +0000 (00:33 +0000)]
Remove usb2_cv_* and just use the kernel condvar implementation, it was needed
earlier since condition variables didnt work with Giant but this was fixed 10
months ago.
ed [Sun, 14 Jun 2009 22:35:33 +0000 (22:35 +0000)]
Remove the note about using vt220, which makes no sense at all.
vt220 will not work better. Even though it probably will remove warnings
about unknown terminal types, a cons25 emulator is not compatible with
vt220 at all.
alc [Sun, 14 Jun 2009 19:51:43 +0000 (19:51 +0000)]
Long, long ago in r27464 special case code for mapping device-backed
memory with 4MB pages was added to pmap_object_init_pt(). This code
assumes that the pages of a OBJT_DEVICE object are always physically
contiguous. Unfortunately, this is not always the case. For example,
jhb@ informs me that the recently introduced /dev/ksyms driver creates
a OBJT_DEVICE object that violates this assumption. Thus, this
revision modifies pmap_object_init_pt() to abort the mapping if the
OBJT_DEVICE object's pages are not physically contiguous. This
revision also changes some inconsistent if not buggy behavior. For
example, the i386 version aborts if the first 4MB virtual page that
would be mapped is already valid. However, it incorrectly replaces
any subsequent 4MB virtual page mappings that it encounters,
potentially leaking a page table page. The amd64 version has a bug of
my own creation. It potentially busies the wrong page and always an
insufficent number of pages if it blocks allocating a page table page.
To my knowledge, there have been no reports of these bugs, hence,
their persistance. I suspect that the existing restrictions that
pmap_object_init_pt() placed on the OBJT_DEVICE objects that it would
choose to map, for example, that the first page must be aligned on a 2
or 4MB physical boundary and that the size of the mapping must be a
multiple of the large page size, were enough to avoid triggering the
bug for drivers like ksyms. However, one side effect of testing the
OBJT_DEVICE object's pages for physical contiguity is that a dubious
difference between pmap_object_init_pt() and the standard path for
mapping devices pages, i.e., vm_fault(), has been eliminated.
Previously, pmap_object_init_pt() would only instantiate the first
PG_FICTITOUS page being mapped because it never examined the rest.
Now, however, pmap_object_init_pt() uses the new function
vm_object_populate() to instantiate them all (in order to support
testing their physical contiguity). These pages need to be
instantiated for the mechanism that I have prototyped for
automatically maintaining the consistency of the PAT settings across
multiple mappings, particularly, amd64's direct mapping, to work.
(Translation: This change is also being made to support jhb@'s work on
the Nvidia feature requests.)
ed [Sun, 14 Jun 2009 18:01:35 +0000 (18:01 +0000)]
Enable PRINTF_BUFR_SIZE on i386 and amd64 by default.
In the past there have been some reports of PRINTF_BUFR_SIZE not
functioning correctly. Instead of having garbled console messages, we
should just see whether the issues are still there and analyze them.
rmacklem [Sun, 14 Jun 2009 17:33:46 +0000 (17:33 +0000)]
When the KOBJMETHOD() macro was updated, it resulted in the
compiler doing argument type checking. Since the prototypes in
kgss_if.h used the generic gss_ctx_id_t for the context argument,
but the functions in sys/kgssapi/krb5/krb5_mech.c used the
KerberosV specific context argument, the file would no longer build.
This patch fixes it so it will build by replacing the argument with
a gss_ctx_id_t one and setting a local "struct krb5_context *" variable
to it for use by the function.
bz [Sun, 14 Jun 2009 17:15:18 +0000 (17:15 +0000)]
Add an optional callback function that will be invoked when a per-CPU
queue was drained. It will never fire for a directly dispatched packet.
You will most likely never want to use this for any ordinary netisr usage
and you will never blame netisr in case you try to use it and it does
not work as expected.
ed [Sun, 14 Jun 2009 17:00:35 +0000 (17:00 +0000)]
Fix the staircase issue properly this time.
Even though I thought this bug was somewhere in the TTY layer, it turns
out init(8) doesn't make sure /dev/console is opened initially properly.
I've added revoke() to two pieces of code:
- death(): Apart from killing the gettys on shutdown, this doesn't
guarantee the TTY to be closed immediately.
- runshutdown(): Just like setctty(), we should revoke /dev/console.
Applications like syslogd may have file descriptors to the console.
ed [Sun, 14 Jun 2009 12:04:34 +0000 (12:04 +0000)]
Add more entries to the Unicode-to-CP437 table.
Characters between 0x07 and 0x0d are now also mapped, which means we can
display almost 256 different characters. Also remap certain types of
dashes and quotes, which means we can finally read our manual pages
without red question marks in them.
edwin [Sun, 14 Jun 2009 07:02:50 +0000 (07:02 +0000)]
Add missing passthrough printing entries for VT100 and workalikes
in /etc/termcap:
VT100 spec indicates that passthrough printing can be enabled
by sending ESC[5i and disabled by sending ESC[4i These entries
should be listed as po and pf in /etc/termcap, but are absent.
See http://www.vt100.net/docs/vt102-ug/chapter5.html#S5.5.2.23
edwin [Sun, 14 Jun 2009 04:03:18 +0000 (04:03 +0000)]
Add missing terminal definition for Wyse 120 in termcap
Although the PR contains also the definitions of the Wyse 60, they
are not copied into it since there are already definition for them
in the termcap file since 1997.
Also, the PR didn't use the :tc=xxx: feature, so I've imploded them.
PR: conf/81882
Submitted by: Meister des Chaos <meister@netz00.com>
MFC after: 1 week
edwin [Sun, 14 Jun 2009 03:34:54 +0000 (03:34 +0000)]
Add missing termcap entry for rxvt-unicode.
The termcap database does not have an entry for rxvt-unicode.
This means that programs that need an entry such as vi fail
to work when connecting via ssh using this terminal emulator.
The added data is not the same as the PR submitted by Richard, it
uses the :tc=xxx: option to inherit everything from rxvt-mono.
edwin [Sun, 14 Jun 2009 03:29:14 +0000 (03:29 +0000)]
Tool to compare two (roughly similar) termcap entries (like rxvt-mono
and rxvt-unicode) so see which fields should don't need to be copied
if the :tc=xxx: option is used.
imp [Sun, 14 Jun 2009 02:58:56 +0000 (02:58 +0000)]
After Marcel's change to DEFAULTS, we were bringing in a bogus copy of
uart_8250. Remove it here since the UART on the ADM5120 isn't the
typical 16550: its completely different.
sam [Sat, 13 Jun 2009 23:43:00 +0000 (23:43 +0000)]
Rev IEEE80211_IOC_STA_INFO abi: ni_flags grew from 16 bits to 32
bits but isi_state did not follow; expand it to 32 bits and pad to
maintain alignment. Note this is an incompatible change that
requires rebuilding of user applications.
marius [Sat, 13 Jun 2009 23:27:04 +0000 (23:27 +0000)]
- Also probe DP83865, which is an is an ultra low power version
of the DP83861 and DP83891.
- Reset the PHY during attach so it's in a known state.
- Add a comment describing why we hardwire 10baseT support in
the BMSR.
- Always explicitly set IFM_HDX for half-duplex. [1]
rmacklem [Sat, 13 Jun 2009 23:16:40 +0000 (23:16 +0000)]
When a Solaris10 client does an NFS mount using krb5i or krb5p, the
server would crash because the Solaris10 client would attempt to use
Sun's NFSACL protocol, which FreeBSD doesn't support. When the server
generated the error reply via svcerr_noprog(), it would cause a crash
because it would try and wrap a NULL reply. According to RFC2203, no
wrapping is required for error cases. This one line change avoids
wrapping of NULL replies.
jilles [Sat, 13 Jun 2009 21:17:45 +0000 (21:17 +0000)]
Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND.
This change only affects strings passed to -c, when the -s
option is not used.
The approach is to check if there may be additional data
in the string after parsing each command. If there is none,
use the EV_EXIT flag so that a fork may be omitted in
specific cases.
If there are empty lines after the command, the check will
not see the end and forks will not be omitted. The same
thing seems to happen in bash.
Example:
sh -c 'ps lT'
No longer shows a shell process waiting for ps to finish.
PR: bin/113860
Reviewed by: stefanf
Approved by: ed (mentor)
alc [Sat, 13 Jun 2009 18:35:29 +0000 (18:35 +0000)]
Correct the method of waking the page daemon when the number of allocated
pv entries surpasses the high water mark. The problem was that the page
daemon would only be awakened the first time that the high water mark was
surpassed. (The variable "pagedaemon_waken" is a non-working vestige of
FreeBSD 4.x, in which it was external and reset by the page daemon whenever
it ran. This reset allowed subsequent wakeups by the pv entry allocator.)
jamie [Sat, 13 Jun 2009 15:39:12 +0000 (15:39 +0000)]
Rename the host-related prison fields to be the same as the host.*
parameters they represent, and the variables they replaced, instead of
abbreviated versions of them.
ed [Sat, 13 Jun 2009 12:23:31 +0000 (12:23 +0000)]
Make the proof-of-concept UTF-8 support in Syscons less useless.
Add a small Unicode-to-CP437 remapping table to at least demonstrate
that the terminal emulator is perfectly capable of handling UTF-8. This
will of course break if the user loads a different font map, but it at
least allows people to give it a try.
I can now see the box drawing in dialog(1) and the arrows in mutt(1)
correctly.