History log of /freebsd-10.0-release/sbin/devd/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
259065 07-Dec-2013 gjb

- Copy stable/10 (r259064) to releng/10.0 as part of the
10.0-RELEASE cycle.
- Update __FreeBSD_version [1]
- Set branch name to -RC1

[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so
start releng/10.0 at '100' so the branch is started with
a value ending in zero.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


253046 08-Jul-2013 asomers

Correct the printf format specifier for total_events.
Add __printflike argument checking for devdlog().

Reported by: pjd
Approved by: gibbs (co-mentor)


252508 02-Jul-2013 asomers

Explicitly include <cstdarg> to fix compilation with libc++. It is implicitly
included by libstdc++.

Reported By: Oliver Hartmann
Approved by: gibbs (co-mentor, implicit)


252485 01-Jul-2013 asomers

style(9) fixes, including the removal of page break characters. No functional
changes.

Approved by: gibbs (co-mentor)


252482 01-Jul-2013 asomers

Add a SIGINFO handler to devd. It will send useful statistics to syslog or
stderr as appropriate. Currently, the only statistic printed is the number of
events received.

Reviewed by: eadler
Approved by: gibbs (co-mentor)


252481 01-Jul-2013 asomers

Add syslog(3) support to devd(8).

sbin/devd/devd.cc
All output will now go to syslog(3) if devd is daemonized, or stderr
if it's running in the foreground.

sbin/devd/devd.8
Remove the "-D" flag. Filtering messages by priority now
happens in the usual syslog way. For performance reasons, a few
extra-verbose debugging statements are now conditional on the "-d" (do
not daemonize) flag.

etc/syslog.conf
etc/newsyslog.conf
Direct messages from devd(8) to /var/log/devd.log, but leave it
disabled by default

Reviewed by: eadler
Approved by: gibbs (co-mentor)
MFC after: never (removed a command-line option from devd)


250227 04-May-2013 jkim

Improve compatibility with recent flex from flex.sourceforge.net.


250186 02-May-2013 eadler

Prefer using the C++ version of the standard headers. These place the
names within the std namespace (and possibly within the global
namespace).

The main advantage is that the C++ versions can provide optimized
versions or simplified interfaces.


249951 26-Apr-2013 asomers

According to devctl(4), clients must read events whole; they may not
piece them together from multiple reads(). It's as if /dev/devctl is
a datagram device instead of a stream device. However, devd's
internal buffer was too small (1025 bytes) to read an entire
ereport.fs.zfs.checksum event (variable, up to ~1300 bytes). This
commit enlarges the buffer to 8k.

Reviewed by: imp
Approved by: ken (mentor)
MFC after: 2 weeks


247763 04-Mar-2013 eadler

devd: Correct typo in comment.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247762 04-Mar-2013 eadler

devd: Use simpler dst += *x instead of str.append(x, 1).

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247761 04-Mar-2013 eadler

devd: Use string::empty() instea of string::length() == 0.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247760 04-Mar-2013 eadler

devd: Remove unnecessary empty default constructors.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247759 04-Mar-2013 eadler

devd: Remove empty virtual destructor from class, which has noch subclasses.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247758 04-Mar-2013 eadler

devd: Avoid unnecessary temporary objects (and simplify the code) when handling std::string.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247757 04-Mar-2013 eadler

devd: Use the standard constructor of std::string instead of string("").

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247756 04-Mar-2013 eadler

devd: Simplify while (1) { if (x) break; } to while (!x) {}.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247755 04-Mar-2013 eadler

devd: Remove call to _exit() from signal handler, which also sets a stop flag.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247754 04-Mar-2013 eadler

devd: Use volatile sig_atomic_t for the flag set by a signal handler.

Submitted by: Christoph Mallon <christoph.mallon@gmx.de>
Approved by: cperciva (mentor)


247751 04-Mar-2013 eadler

Constify where possible.

Approved by: cperciva (mentor)


247134 21-Feb-2013 pluknet

Reflect CARP media-type departure.

X-MFC after: never


247129 21-Feb-2013 pluknet

Separate items in the list of System values with .Pp to ease readability.


246361 05-Feb-2013 zeising

Bump .Dd for the change in r246121.

Approved by: joel (mentor)


246134 30-Jan-2013 ian

Improve devd startup time, by tweaking some string handling routines that are
heavily used when parsing config files. Mostly these changes avoid making
temporary copies of the strings, and avoid doing byte at a time append
operations, on the most-used code path.

On a 1.2 GHz ARM processor this reduces the time to parse the config files
from 13 to 6 seconds.

Reviewed by: imp
Approved by: cognet (mentor)


246121 30-Jan-2013 ian

Fix a descriptor leak in devd. Clients reading /var/run/devd.pipe can close
their socket connection any time, and devd only notices that when it gets an
error trying to write an event to the client. On a system with no device
change activity, clients could connect and disappear repeatedly without devd
noticing, leading to an ever-growing list of open socket descriptors in devd.

Now devd uses poll(2) looking for POLLHUP on all existing clients every time
a new client connection is established, and also periodically (once a minute)
to proactively find zombie clients and reap the socket descriptors. It also
now has a connection limit, configurable with a new -l <num> command line arg.
When the maximum number of connections is reached it stops accepting new
connections until some current clients drop off.

Reviewed by: imp
Approved by: cognet (mentor)


243932 06-Dec-2012 eadler

Prefer the use of initalizer lists to ctor assignment.

Approved by: cperciva
MFC after: 2 weeks


243931 06-Dec-2012 eadler

Avoid the creation of a temporary object by using the prefix operator
for non-primitive types.

Approved by: cperciva
MFC after: 2 weeks


243930 06-Dec-2012 eadler

Constify where possible

Approved by: cperciva
MFC after: 2 weeks


243907 05-Dec-2012 dim

Fix an old bug in devd, where it uses std::sort() to sort the various
lists it reads from its configuration files on the priority field.

Because some items in the lists have the same priority, and std::sort()
is not stable, the exact order in which the items are enumerated does
not have to correspond to the order they appear in the configuration
files.

Apparently this was never noticed with libstdc++, but with libc++ it
could cause the "uhid" entry from /etc/devd/usb.conf to be used instead
of the "ums" entry (which is earlier in the file). This caused the
problem described in the PR: the USB mouse module was never loaded, and
the other actions (such as starting moused) were not executed.

To fix the problem, make devd use std:stable_sort() instead.

Reported by: Jan Beich <jbeich@tormail.org>
PR: bin/172958
MFC after: 2 weeks


241772 20-Oct-2012 avg

document acpi_cpu devd notification about _CST change

Based on prodding and a submission by Lars Engels <lars.engels@0x20.net>.

MFC after: 5 days


240823 22-Sep-2012 pjd

Use O_CLOEXEC for open instead of separate fcntl(2) call.


236388 01-Jun-2012 dim

Make devd build with libc++.

MFC after: 3 days


235789 22-May-2012 bapt

Fix world after byacc import:
- old yacc(1) use to magicially append stdlib.h, while new one don't
- new yacc(1) do declare yyparse by itself, fix redundant declaration of
'yyparse'

Approved by: des (mentor)


229702 06-Jan-2012 glebius

Fix build.


228699 19-Dec-2011 maxim

o Sort .Xrs.


228618 17-Dec-2011 dim

In sbin/devd/devd.h, 'event_proc' and 'eps' are declared as structs. In
devd.hh, there are redeclared as classes. Fix the inconsistency.

MFC after: 1 week


228566 16-Dec-2011 glebius

Xref re_format(7) in devd.conf(5), not in devd(8).

Pointy hat to: glebius


228565 16-Dec-2011 glebius

Xref re_format(7).


226775 26-Oct-2011 hrs

- Add support for a "!" character in regex matching in devd(8). It inverts
the logic (true/false) of the matching.

- Add "!usbus[0-9]+" to IFNET ATTACH notification handler in the default
devd.conf to prevent rc.d/netif from running when usbus[0-9]+ is attached.

Reviewed by: imp


221719 10-May-2011 bms

Typo. For USB devices, 'serial' should be 'sernum'.
See sys/dev/usb/usb_device.c for what devctl_notify() gets.


215674 22-Nov-2010 brucec

Don't generate input() since it's not used.


215607 21-Nov-2010 kevlo

Fix missing closedir()

Reviewed by: imp


213646 09-Oct-2010 imp

Allow the kernel to generate more spacy things and still have devd
cope. Skip multiple spaces in a few contexts.

PR: 96854
Submitted by: Shin'ya Kumabuchi
MFC after: 1 week


213573 08-Oct-2010 uqs

mdoc: drop redundant .Pp and .LP calls

They have no effect when coming in pairs, or before .Bl/.Bd


211397 16-Aug-2010 joel

Fix typos, spelling, formatting and mdoc mistakes found by Nobuyuki while
translating these manual pages. Minor corrections by me.

Submitted by: Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>


210610 29-Jul-2010 lulf

- Avoid calling the copy constructor when it is not necessary.


210609 29-Jul-2010 lulf

- Remove unused instance of string.


209583 29-Jun-2010 imp

Expand system into my_system, and add the necessary tidyness that we
need. Close the pidfile. Then close all descriptors >= 3 to avoid
information leakage to children.

This solves the problem of not being able to restart devd when you
have, for example, a dhclient forked to configure your network...

MFC after: 3 days


207072 22-Apr-2010 thompsa

Document the new USB notification types.


203916 15-Feb-2010 uqs

Bump WARNS where possible.

Checked by: make universe
Approved by: ed (co-mentor)


189538 08-Mar-2009 maxim

o Spell. Sort .Xrs.


189534 08-Mar-2009 kib

Document several notifications, among them are DEVFS, update to ifneti,
coretemp and kern.

The asmc(4) and zfs(5) are still not documented.

Based on the patch by Roland Smith <rsmith xs4all nl>.
MFC after: 1 week


186078 14-Dec-2008 phk

Send all debug to stderr.


186077 14-Dec-2008 phk

Clarify that configuration files must be named '*.conf'


177483 21-Mar-2008 imp

No need to be gratuitously style(9) non-compliant here, even though
C++ lets me get away with it.


174824 21-Dec-2007 imp

Minor initialization change to not trigger bogus gcc warning about
passing literal strings to the constructors of string.


173739 19-Nov-2007 jb

Reduce the WARNS level across the board due to a warning that occurs
on at least arm and sparc64. i386/pc98, ia64 and amd64 are all OK.


163667 24-Oct-2006 ru

Fix the description of "media-type".


163581 21-Oct-2006 ru

Revise the markup, sort sections, fix some grammar bugs.
Not fixed: the description of media-type is completely bogus.


163106 07-Oct-2006 jmg

flesh out the devd.conf man page... Mostly from the PR, but did a couple
gramatical tweaks along w/ sorting the list, and adding that serial is
available for USB....

PR: 85097
Submitted by: Fredrik Lindberg
MFC after: 1 week


162388 17-Sep-2006 ru

Add -f option to program's usage(), fix manpage's SYNOPSIS.


157746 14-Apr-2006 maxim

o Yacc's lineno variable holds a total number of parsed lines.
Reset it to 1 for each devd config file so if the parser finds
a syntax error devd(8) will report a correct line number.

Submitted by: Niki Denev
MFC after: 2 weeks


155073 30-Jan-2006 pjd

Use pidfile(3).

OK'ed by: imp


154109 08-Jan-2006 imp

It was always intended that regular expression matching be case
insensitive. Make it so.


153522 19-Dec-2005 jkoshy

Rev 1.15 should have incremented the date on this manual page.


152770 24-Nov-2005 jkoshy

Add a -f configfile option to devd(8), based on a patch submitted by
Wojciech A. Koszek.

Submitted by: Wojciech A. Koszek <dunstan@freebsd.czest.pl>


152406 14-Nov-2005 bland

Reuse delete_and_clear() template helper.

Approved by: imp


151486 19-Oct-2005 brooks

Make devd WARNS=4 clean and bump WARNS accordingly. This will insure
that future variable shadowing bugs don't compile.

Reviewed by: imp
Compiled on: alpha i386 sparc64


151480 19-Oct-2005 imp

As pointed out on current@, we don't want to declare a variable in a scope
that just uses the variable and throws it away.

This should fix the subsystem keyword wrt media-type.

MFC After: 2 days


150949 04-Oct-2005 imp

media-type predicate is used in contexts where device-name is undefined.
In those contexted, use subsystem instead.

# This causes dhclient to run again when I plug in my ethernet cable to
# my fxp card in my laptop.


147973 13-Jul-2005 marcus

* Open permissions on /var/run/devd.pipe so that any user can read devd events
from this socket
* Enable non-blocking I/O on devd.pipe to keep clients from wedging devd.
If a write(2) on devd.pipe would block, the client in question will be
removed [1]

Requested by: rwatson [1]
Approved by: imp


147972 13-Jul-2005 marcus

Replace fch{mod,own} with straight ch{mod,own} as the former cannot be used
on socket file descriptors.

Reviewed by: secteam (cperciva)
Approved by: imp


147874 10-Jul-2005 imp

Add the ability to match the on a media type of the device in question.

Submitted by: sam
Approved by: re (scottl)


146306 16-May-2005 imp

Ignore sigpipe so we can properly detach clients to the pipe.

Submitted by: Fredrik Lindberg


145218 18-Apr-2005 imp

Fix parsing of nomatch events.
minor debug fix.


141611 10-Feb-2005 ru

Sync program's usage() with manpage's SYNOPSIS.


139987 10-Jan-2005 ru

Scheduled mdoc(7) sweep.


139112 21-Dec-2004 ru

NOSHARED -> NO_SHARED


138162 28-Nov-2004 ceri

Clarify that devd will only parse files whose names end in .conf.
Prompted by

PR: docs/73668
Submitted by: Dan Pelleg
MFC After: 3 days


131754 07-Jul-2004 ru

mdoc(7) fixes.


131397 01-Jul-2004 imp

Create a unix domain socket and write to it all the events that come
in over the socket.


121487 24-Oct-2003 imp

Parse the ! lines that will soon be coming from the kernel. These are
a generalized notification mechanism for subsystems wishing to report
events.

Revieded by: njl

# The kernel side seems like it might be causing panics for me, but should
# be forthcoming shortly.


120474 26-Sep-2003 rse

fix typo: s/Instaed/Instead/


119019 17-Aug-2003 gordon

At imp's request, force devd to be statically compiled. This avoids the
need for libstdc++ in /lib, and the generated binary is actually smaller
statically linked than dynamically + sizeof(libstdc++). Additionally,
devd doesn't use get*by*() which is one of the main motivations for
dynamically linking your root partition anyway.


117945 23-Jul-2003 imp

Simplistic C comment re is wrong, use more correct one


117944 23-Jul-2003 imp

Remove old workaround


117246 05-Jul-2003 imp

Drop the pid file after we call the final daemon call. w/o -n would
give the wrong pid.

Submitted by: ru and Lukas Ertl
PR: 54113


115114 17-May-2003 ru

mdoc(7) fixes: Expand contraction.


115011 15-May-2003 imp

Allow zero or more actions in an action list, rather than requiring
one or more actions in the list. This makes constructs like:

attach 10 {
// echo "Driver $device_name attached"
};

to be accepted by the parser. It will be treated as if the user had
entered:

// attach 10 {
// echo "Driver $device_name attached"
// };

(eg totally ignored).

Approved by: re@ (rwatson)


114541 02-May-2003 imp

sysctlbyname takes a size_t as its 5th argument, not a pointer.
However, since NULL was used, and this is C++, this error went
undetected until g++ 3.3 somehow managed to whine about it.

Reported by: obrien


114086 26-Apr-2003 imp

Create a new C++ header file called devd.hh which has all the class
definitions in it. Begin to document the classes that we use, and how
they interrelate (using comments that I can use with doxygen to
automatically generate docs with).


114084 26-Apr-2003 imp

Update to use is_id_char() in the last patch. I should have done this
before the last commit.


114081 26-Apr-2003 imp

Make better use of the string type when parsing things. This switches
expand one from using a fixed buffer to using a string which
dynamically allocates these things.

Submitted by: green@ (against an earlier version of devd)
Ignored for too long by: imp


114000 25-Apr-2003 imp

Change default to be 'process all events before calling daemon.'

Also, put a small work around into devd to prevent a hang on boot this
would cause because select used to return 2 rather than 0 for no
evetnts due to a bug I fixed a few days ago in subr_bus.c. I'll
remove this workaround May 7th. You have until then to upgrade your
kernel if you want to run a new devd with an older kernel.


113805 21-Apr-2003 imp

Kill debug printf that crept in my last commit


113790 21-Apr-2003 imp

Implement a two new flags, and change the meaning of another one.
'd': now means don't do daemon().
'D': Debug
'n': Don't wait to process all pending events before calling daemon.

In the past, devd would call daemon immediately. However, this causes
a race. If anything in the boot process depends on configuring the
devices configured by devd, maybe they would be configured in time,
maybe not. Now we don't call daemon until all pending events are
processed, unless -n is specified.

# -n is actually the default for a while due to the select(2) bug in devctl
# that I just fixed to give people a chance to upgrade.


113787 21-Apr-2003 imp

Put an anti-foot-shooting measure in place. Set hw.bus.devctl_disable
to 0 when we startup. Print a warning in this case. This allows
people that are playing with devd by hand to have something happen.
Otherwise, it appears that devd isn't working because /dev/devctl is
disabled and producing no events.

Suggested by: peter on irc a long time ago.


113785 21-Apr-2003 imp

o Skip white space between variables better. This makes
'a="b" c="d" at loc=1 on busN' properly set 'c' and process the rest of
the stirng. Before it would ignore everything after variable 'a'.
o Parse nomatch and other events differently. They are more different
than the code allowed for, so we weren't properly parsing nomatch
events. It appears this fixes some of the demand loading issues that
I was having with devd.

Noticed by: Gary Palmer


113782 21-Apr-2003 imp

devd.conf already has the examples in the todo list


112935 01-Apr-2003 ru

This can't obviously be cleaner than system headers.


111813 03-Mar-2003 ru

mdoc(7) police: Revision.


110881 14-Feb-2003 imp

The bugs section hasn't been true since before 5.0-R


110877 14-Feb-2003 imp

devd bugs section is now OBE


108985 09-Jan-2003 imp

These are OBE. devd.conf now lives in /etc.


108799 06-Jan-2003 imp

Terminate the usage message with \n.

Submitted by: joe


108783 06-Jan-2003 imp

MFp4: make it work

o Expand variables correctly.
o Set variables for each event.
o rewrite event loop to execute the commands in the config file, rather
than the hard wired generic command
o better(?) debug when running -d
o sort vectors of actions so that we just have to search for the first
one to match rather than the best one that matches.
o better attempts to clear all resources used on 'restart'
o Remove now bogus comments

MFC After: 1 centiyear


108781 06-Jan-2003 imp

devd not devdd

submitted by: joe


108317 27-Dec-2002 schweikh

english(4) police.


108014 18-Dec-2002 imp

Latest snapshot of devd. This one adds re-matching and string
expansion.


107665 07-Dec-2002 imp

MFp4 (imp_freebsd branch): snapshot of devd work:
o improve parsing and lexing
o create data structures based on the parsed file now.
o Still need to rewrite main loop and add regex (still uses hard coded
devd-generic)
o minor man page updates.

# There should be one more commit before rc2

Approved by: re (blanket)


107066 18-Nov-2002 jhb

Fixup FILES section to use proper width and to use a cross-reference to
devd(8).


107065 18-Nov-2002 jhb

Remove leading ^ from example of match line in vendor-supplied rules since
the ^ is implicit at the beginning of the expressions.


107045 18-Nov-2002 imp

Add BUGS section and note departure of actual implementation from what
is documented so the pioneers will know why it works the way it does.


106906 14-Nov-2002 tjr

Install devd.conf(5).


106875 13-Nov-2002 jhb

Try to reword things a bit more to make it clearer.

Reviewed by: imp


106869 13-Nov-2002 jhb

- Fix some minor grammar and spelling nits.
- Massage the wording in a few places.
- Put .Nm on lines by itself so it renders correctly.

Reviewed by: imp


105573 20-Oct-2002 imp

devd. A daemon that hooks into the kernel's /dev/devctl to produce
arbitrary commands when devices come and go in the device tree (which is
different than the /dev directory).

This is an initial version. Much of the planned power isn't here.
Instead of doing the full matching, we always run /etc/devd-generic.
/etc/devd.generic will go away at some point, I think.

I'm committing it in this early state so I can start getting feedback
from early adapters.

Approved by: re