| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not allow the SNPSTTY ioctl for the snoop device that has a tty
attached. Otherwise, the snp->snp_tty would be overwritten, while the
tty line discipline still set to the snpdisc. Then snplwrite() causes
panic because ttytosnp() cannot find the snp. (And do it at the proper
place, from rev. 1.107).
MFC rev. 1.107:
The snp_target == NULL implies the snp_tty == NULL. Remove the code
that is put under snp_target == NULL and snp_tty != NULL clause.
In snpclose(), do the snp_detach() before scheduling the snp device
destruction. Otherwise, after the return from snpclose(), the snp
device is already removed from the snp_list, but tty is still in
snooped state. Any attempt to do i/o on such tty cause panic because
ttytosnp() returns NULL.
Approved by: re (kensmith)
Notes:
svn path=/stable/7/; revision=175069
|
| |
|
|
|
|
|
|
|
|
| |
to not call destroy_dev_sched().
Tested by: Peter Holm
Approved by: re (kensmith)
Notes:
svn path=/head/; revision=171252
|
| |
|
|
|
|
|
|
|
|
| |
Drain clone events and cdev destruction from the module unload handler.
Debugging help and testing by: Peter Holm
Approved by: re (kensmith)
Notes:
svn path=/head/; revision=171183
|
| |
|
|
| |
Notes:
svn path=/head/; revision=167851
|
| |
|
|
|
|
|
|
|
| |
recent changes in a manpage.
Reviewed by: cognet
Notes:
svn path=/head/; revision=150322
|
| |
|
|
|
|
|
|
|
|
| |
provides a file descriptor instead of a dev_t.
Discussed with: phk
MFC after: 3 days
Notes:
svn path=/head/; revision=150298
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
event handler, dev_clone, which accepts a credential argument.
Implementors of the event can ignore it if they're not interested,
and most do. This avoids having multiple event handler types and
fall-back/precedence logic in devfs.
This changes the kernel API for /dev cloning, and may affect third
party packages containg cloning kernel modules.
Requested by: phk
MFC after: 3 days
Notes:
svn path=/head/; revision=148868
|
| |
|
|
|
|
|
|
| |
closes the race where the cdev was reclaimed before it ever made it
back to devfs lookup.
Notes:
svn path=/head/; revision=144389
|
| |
|
|
|
|
|
|
| |
need to be fixed. In both cases the API should be reengineered to do
something (more) sensible.
Notes:
svn path=/head/; revision=143637
|
| |
|
|
| |
Notes:
svn path=/head/; revision=139749
|
| |
|
|
|
|
|
|
| |
Include uio.h instead of relying on vnode.h to do so.
Check O_NONBLOCK not IO_NDELAY.
Notes:
svn path=/head/; revision=139195
|
| |
|
|
|
|
|
|
| |
snp attached to a tty.
This fixes the panic that happens when using snp.
Notes:
svn path=/head/; revision=137265
|
| |
|
|
| |
Notes:
svn path=/head/; revision=135724
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
Notes:
svn path=/head/; revision=132226
|
| |
|
|
|
|
|
|
|
|
|
| |
for unknown events.
A number of modules return EINVAL in this instance, and I have left
those alone for now and instead taught MOD_QUIESCE to accept this
as "didn't do anything".
Notes:
svn path=/head/; revision=132199
|
| |
|
|
| |
Notes:
svn path=/head/; revision=132133
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The big lines are:
NODEV -> NULL
NOUDEV -> NODEV
udev_t -> dev_t
udev2dev() -> findcdev()
Various minor adjustments including handling of userland access to kernel
space struct cdev etc.
Notes:
svn path=/head/; revision=130640
|
| |
|
|
|
|
|
| |
Bump __FreeBSD_version accordingly.
Notes:
svn path=/head/; revision=130585
|
| |
|
|
| |
Notes:
svn path=/head/; revision=129879
|
| |
|
|
|
|
|
| |
Requested by: rwatson
Notes:
svn path=/head/; revision=126845
|
| |
|
|
| |
Notes:
svn path=/head/; revision=126188
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the unused second argument from udev2dev().
Convert all remaining users of makedev() to use udev2dev(). The
semantic difference is that udev2dev() will only locate a pre-existing
dev_t, it will not line makedev() create a new one.
Apart from the tiny well controlled windown in D_PSEUDO drivers,
there should no longer be any "anonymous" dev_t's in the system
now, only dev_t's created with make_dev() and make_dev_alias()
Notes:
svn path=/head/; revision=126081
|
| |
|
|
|
|
|
|
|
|
|
| |
Introduce d_version field in struct cdevsw, this must always be
initialized to D_VERSION.
Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing
four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
Notes:
svn path=/head/; revision=126080
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit adds a couple of functions for pseudodrivers to use for
implementing cloning in a manner we will be able to lock down (shortly).
Basically what happens is that pseudo drivers get a way to ask for
"give me the dev_t with this unit number" or alternatively "give
me a dev_t with the lowest guaranteed free unit number" (there is
unfortunately a lot of non-POLA in the exact numeric value of this
number, just live with it for now)
Managing the unit number space this way removes the need to use
rman(9) to do so in the drivers this greatly simplifies the code in
the drivers because even using rman(9) they still needed to manage
their dev_t's anyway.
I have taken the if_tun, if_tap, snp and nmdm drivers through the
mill, partly because they (ab)used makedev(), but mostly because
together they represent three different problems for device-cloning:
if_tun and snp is the plain case: just give me a device.
if_tap has two kinds of devices, with a flag for device type.
nmdm has paired devices (ala pty) can you can clone either of them.
Notes:
svn path=/head/; revision=126077
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
thread being waken up. The thread waken up can run at a priority as
high as after tsleep().
- Replace selwakeup()s with selwakeuppri()s and pass appropriate
priorities.
- Add cv_broadcastpri() which raises the priority of the broadcast
threads. Used by selwakeuppri() if collision occurs.
Not objected in: -arch, -current
Notes:
svn path=/head/; revision=122352
|
| |
|
|
|
|
|
| |
Also some minor style cleanups.
Notes:
svn path=/head/; revision=119419
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
branches:
Initialize struct cdevsw using C99 sparse initializtion and remove
all initializations to default values.
This patch is automatically generated and has been tested by compiling
LINT with all the fields in struct cdevsw in reverse order on alpha,
sparc64 and i386.
Approved by: re(scottl)
Notes:
svn path=/head/; revision=111815
|
| |
|
|
| |
Notes:
svn path=/head/; revision=111748
|
| |
|
|
| |
Notes:
svn path=/head/; revision=111571
|
| |
|
|
|
|
|
| |
Approved by: trb
Notes:
svn path=/head/; revision=111119
|
| |
|
|
|
|
|
| |
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
Notes:
svn path=/head/; revision=109623
|
| |
|
|
|
|
|
|
|
|
| |
really do and dev_t is defined differently in kernel and userland.
Return a correctly formed udev from SNPGTTY.
Reviewed by: dd
Notes:
svn path=/head/; revision=106767
|
| |
|
|
|
|
|
|
|
|
|
| |
submitter, this permits Russian (and probably other locales') characters
to be entered via watch(8).
PR: 35636
Submitted by: Gleb Smirnoff <glebius@rinet.ru>
Notes:
svn path=/head/; revision=94341
|
| |
|
|
| |
Notes:
svn path=/head/; revision=92739
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Problem:
selwakeup required calling pfind which would cause lock order
reversals with the allproc_lock and the per-process filedesc lock.
Solution:
Instead of recording the pid of the select()'ing process into the
selinfo structure, actually record a pointer to the thread. To
avoid dereferencing a bad address all the selinfo structures that
are in use by a thread are kept in a list hung off the thread
(protected by sellock). When a selwakeup occurs the selinfo is
removed from that threads list, it is also removed on the way out
of select or poll where the thread will traverse its list removing
all the selinfos from its own list.
Problem:
Previously the PROC_LOCK was used to provide the mutual exclusion
needed to ensure proper locking, this couldn't work because there
was a single condvar used for select and poll and condvars can
only be used with a single mutex.
Solution:
Introduce a global mutex 'sellock' which is used to provide mutual
exclusion when recording events to wait on as well as performing
notification when an event occurs.
Interesting note:
schedlock is required to manipulate the per-thread TDF_SELECT
flag, however if given its own field it would not need schedlock,
also because TDF_SELECT is only manipulated under sellock one
doesn't actually use schedlock for syncronization, only to protect
against corruption.
Proc locks are no longer used in select/poll.
Portions contributed by: davidc
Notes:
svn path=/head/; revision=92252
|
| |
|
|
| |
Notes:
svn path=/head/; revision=92056
|
| |
|
|
|
|
|
|
|
|
|
| |
important, since our sleep is interruptable (PCATCH flag).
PR: 30985
Discovered by: Vladimir Jakovenko <vovik@lucky.net>
Submitted by: Valentin Nechayev <netch@segfault.kiev.ua>
Notes:
svn path=/head/; revision=86861
|
| |
|
|
|
|
|
|
|
|
|
| |
snooped on. This causes all kinds of Bad Things(tm) to happen since
closing one session will clobber state that's needed for the other
one. This could theoretically be supported if the code was careful,
but until somebody implements that, preventing this will stop people
from unknowingly shooting themselves in the foot.
Notes:
svn path=/head/; revision=86855
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
device cloned, and assign all further devices to depend on it. This
allows us to call dev_depends() on it at module unload time to get rid
of /dev/snp* (in the devfs case, anyway). For this to work, we must
not destroy the device at close time. [Idea stolen from if_tun.]
The above has the following sideaffects: (a) The snp device used by
watch(8) will remain after watch(8) exits. This is probably how it
should have been all along, and how it was before devfs came along.
(b) Module unload doesn't panic if there are any /dev/snp* devices
which haven't been used (and thus previously destroyed). Thus, we can
reenable the unload functionality disabled in rev. 1.65.
PR: 32012
Notes:
svn path=/head/; revision=86853
|
| |
|
|
|
|
|
| |
results of suser_td().
Notes:
svn path=/head/; revision=86419
|
| |
|
|
|
|
|
| |
panics)
Notes:
svn path=/head/; revision=86417
|
| |
|
|
|
|
|
|
|
| |
to prevent inappropriate use of the snoop device. This means that,
with appropriate chmod'ing, arbitrary users may make use of the snoop
device.
Notes:
svn path=/head/; revision=86413
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
Notes:
svn path=/head/; revision=83366
|
| |
|
|
|
|
|
|
|
|
|
| |
probably harmless in this case, since the latter is called on tty
input, which is usually a result of some system call, so we've got
plenty of stack left. It's still nice to fix these things, though, in
case somebody ever decides this driver is a good example of something
(perhaps "what you probably shouldn't do").
Notes:
svn path=/head/; revision=81747
|
| |
|
|
|
|
|
|
| |
of the snp* functions needed to be called from tty.c, which is no
longer the case.
Notes:
svn path=/head/; revision=80326
|
| |
|
|
|
|
|
| |
EBUSY if there's a device still open.
Notes:
svn path=/head/; revision=79864
|
| |
|
|
|
|
|
|
| |
I accidently nuked in rev. 1.54. Also rework the error handling in
snplwrite a little.
Notes:
svn path=/head/; revision=77749
|
| |
|
|
|
|
|
|
|
|
|
|
| |
compliant. All the variable definitions and function names are
reasonably consistent, and the functions which should be static (i.e.,
all of them) are. Other assorted fixes were made. The majority of
the delta is indentation fixes.
Partially reviewed by: bde
Notes:
svn path=/head/; revision=77748
|
| |
|
|
| |
Notes:
svn path=/head/; revision=77736
|
| |
|
|
|
|
|
|
|
|
| |
home-grown macro, rewrite a confusing conditional in snpdevtotty(),
and change ibuf to 512 bytes instead of 1024 bytes in dsnwrite().
Reviewed by: bde
Notes:
svn path=/head/; revision=77648
|