Home | History | Annotate | Download | only in cardbus
History log of /src/sys/dev/cardbus/cardslot.c
RevisionDateAuthorComments
 1.60  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.59  24-Apr-2021  thorpej branches: 1.59.8;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.58  17-Apr-2021  mrg convert cardslot event thread from wakeup/tsleep to mutex/condvar.
this avoids a strange hang at reboot i am seeing on an old pentium4-m
laptop, that was introduced with kern_mutex.c 1.91/92, though i can
not really explain why that matters (in the waiting thread, a pointer
that should be NULL remains non NULL.) thanks to jmcneill@ for some
helpful review commentary here.

don't panic() if either "cardbus" or "pcmcia" didn't attach and a
card is inserted. this can happen for various reasons, including
some regression in netbsd (-current, and -9, at least) that suggests
using PCI_BUS_FIXUP (though it still fails to attach the card i have.)

both found with GCC 10 testing, though both also occur with GCC 7 in
the netbsd-9 tree as well.
 1.57  04-Oct-2020  nat branches: 1.57.4;
Ensure event_thread stays in event loop upon creation.
 1.56  24-Sep-2016  mrg weak alias some pcmcia functions (to an returns error function) so this
links when pcmcia isn't in the kernel. PR#7253.
 1.55  12-Oct-2013  christos branches: 1.55.6; 1.55.10;
Pass the device name in, so we can debug what deferred drivers did not work.
 1.54  27-Oct-2012  chs branches: 1.54.2;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.53  24-May-2011  joerg branches: 1.53.4; 1.53.14;
Kill redundant ()
 1.52  19-Mar-2010  dyoung branches: 1.52.2;
Remove superfluous cast (device_t to device_t).
 1.51  15-Dec-2009  snj branches: 1.51.2; 1.51.4;
Move to 2-clause license. Approved by HAYAKAWA Koichi (copyright holder).
 1.50  21-May-2009  dyoung Let us detach pcmcia0 and cardbus0 at cardslot0, and cardslot0 at
cardbus0.
 1.49  12-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.48  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.47  02-Apr-2009  dyoung During shutdown, detach devices in an orderly fashion.

Call the detach routine for every device in the device tree, starting
with the leaves and moving toward the root, expecting that each
(pseudo-)device driver will use the opportunity to gracefully commit
outstandings transactions to the underlying (pseudo-)device and to
relinquish control of the hardware to the system BIOS.

Detaching devices is not suitable for every shutdown: in an emergency,
or if the system state is inconsistent, we should resort to a fast,
simple shutdown that uses only the pmf(9) shutdown hooks and the
(deprecated) shutdownhooks. For now, if the flag RB_NOSYNC is set in
boothowto, opt for the fast, simple shutdown.

Add a device flag, DVF_DETACH_SHUTDOWN, that indicates by its presence
that it is safe to detach a device during shutdown. Introduce macros
CFATTACH_DECL3() and CFATTACH_DECL3_NEW() for creating autoconf
attachments with default device flags. Add DVF_DETACH_SHUTDOWN
to configuration attachments for atabus(4), atw(4) at cardbus(4),
cardbus(4), cardslot(4), com(4) at isa(4), elanpar(4), elanpex(4),
elansc(4), gpio(4), npx(4) at isa(4), nsphyter(4), pci(4), pcib(4),
pcmcia(4), ppb(4), sip(4), wd(4), and wdc(4) at isa(4).

Add a device-detachment "reason" flag, DETACH_SHUTDOWN, that tells the
autoconf code and a device driver that the reason for detachment is
system shutdown.

Add a sysctl, kern.detachall, that tells the system to try to detach
every device at shutdown, regardless of any device's DVF_DETACH_SHUTDOWN
flag. The default for kern.detachall is 0. SET IT TO 1, PLEASE, TO
HELP TEST AND DEBUG DEVICE DETACHMENT AT SHUTDOWN.

This is a work in progress. In future work, I aim to treat
pseudo-devices more thoroughly, and to gracefully tear down a stack of
(pseudo-)disk drivers and filesystems, including cgd(4), vnd(4), and
raid(4) instances at shutdown.

Also commit some changes that are not easily untangled from the rest:

(1) begin to simplify device_t locking: rename struct pmf_private to
device_lock, and incorporate device_lock into struct device.

(2) #include <sys/device.h> in sys/pmf.h in order to get some
definitions that it needs. Stop unnecessarily #including <sys/device.h>
in sys/arch/x86/include/pic.h to keep the amd64, xen, and i386 releases
building.
 1.46  14-Mar-2009  dsl Change about 4500 of the K&R function definitions to ANSI ones.
There are still about 1600 left, but they have ',' or /* ... */
in the actual variable definitions - which my awk script doesn't handle.
There are also many that need () -> (void).
(The script does handle misordered arguments.)
 1.45  03-Jul-2008  drochner branches: 1.45.4; 1.45.10;
minor cleanup so that it can cope with a futute split pcmcia device/softc
 1.44  29-Jun-2008  dogcow fix type
 1.43  25-Jun-2008  drochner Avoid the use of i82365var.h - we don't use any functions from there.
Extract some data structures for ressource management into our private
header instead. This allows to use a typed pointer instead of a
generic one which saves a lot of typecasts.
Also remove something marked as "dirty hack" which I admittedly don't
understand, but it doesn't look useful...
 1.42  25-Jun-2008  drochner split device/softc for pccbb, the cardbus half of cardslot and cardbus
(not yet pcmcia, there is a lot of md code involved)
 1.41  24-Jun-2008  drochner clean up some useless code and variables in cardbus attachment
 1.40  06-Apr-2008  cegger branches: 1.40.4; 1.40.6; 1.40.8;
use aprint_*_dev and device_xname
 1.39  16-Dec-2007  dyoung branches: 1.39.6;
Improve pci, cbb, cardslot, cardbus, and pcmcia to support detachment
of this entire device tree:

pci0 at mainbus0
elansc0 at pci0
gpio0 at elansc0
cbb0 at pci0
cardslot0 at cbb0
cardbus0 at cardslot0
pcmcia0 at cardslot0
cbb1 at pci0
cardslot1 at cbb1
cardbus1 at cardslot1
rtw0 at cardbus1
pcmcia1 at cardslot1
sip0 at pci0
nsphyter0 at sip0
sip1 at pci0
nsphyter1 at sip1

Whew!
 1.38  09-Dec-2007  jmcneill branches: 1.38.2;
Merge jmcneill-pm branch.
 1.37  01-Dec-2007  jmcneill branches: 1.37.2; 1.37.4;
aprintify
 1.36  19-Oct-2007  ad branches: 1.36.2;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.35  09-Jul-2007  ad branches: 1.35.6; 1.35.8; 1.35.12;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.34  04-Feb-2007  dyoung branches: 1.34.6; 1.34.8;
Cosmetic: KNF. In debug messages, use "%s: ...", __func__ idiom
to print subroutine names instead of hard-coding names.
 1.33  16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.32  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.31  29-Mar-2006  thorpej branches: 1.31.8; 1.31.10;
Use device_private().
 1.30  29-Mar-2006  thorpej Use device_unit().
 1.29  29-Mar-2006  thorpej Use device_cfdata().
 1.28  11-Dec-2005  christos branches: 1.28.4; 1.28.6; 1.28.8; 1.28.10; 1.28.12;
merge ktrace-lwp.
 1.27  26-Aug-2005  drochner s/locdesc_t/int/g
 1.26  04-Feb-2005  perry branches: 1.26.6;
de-__P
 1.25  13-Sep-2004  drochner branches: 1.25.4; 1.25.6;
a round of autoconf cleanup:
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"
 1.24  02-Nov-2003  wiz Fix some typos. From Tom Cosgrove via jmc@openbsd.
 1.23  25-Oct-2003  christos Fix uninitialized variable warnings
 1.22  01-Jan-2003  thorpej branches: 1.22.2;
Use aprint_normal() in cfprint routines.
 1.21  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.20  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.19  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.18  27-Sep-2002  thorpej Introduce a new routine, config_match(), which invokes the
cfattach->ca_match function in behalf of the caller. Use it
rather than invoking cfattach->ca_match directly.
 1.17  01-Jun-2002  lukem SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
 1.16  15-Nov-2001  lukem branches: 1.16.8;
don't need <sys/types.h> when including <sys/param.h>
 1.15  13-Nov-2001  lukem add RCSID
 1.14  27-Mar-2001  haya branches: 1.14.2;
Cosmetic changes.
 1.13  12-Feb-2001  nathanw branches: 1.13.2;
The card_attach_now flag hasn't been necessary or useful for some time.
Garbage collect the code and corresponding documentation.
 1.12  28-Jan-2001  nathanw Minor grammar/spelling fixes in comments.
 1.11  02-Jul-2000  cgd nuke some final __BROKEN_INDIRECT_CONFIG bits that weren't caught by
unifdef last time. (bloody things just won't stay dead!)
 1.10  16-Jun-2000  cgd beat back the undead: __BROKEN_INDIRECT_CONFIG had risen, and was
terrorizing innocent hackers...
 1.9  22-Mar-2000  haya branches: 1.9.2;
1. Do not apply 5 V on a CardBus card.
2. Do not avoid ISA hole when a device requires more than
256-byte io space.
3. Remove sending CardBus bridge's function number to
cardbus stack. This number is not needed for anyone.
 1.8  31-Jan-2000  haya Force power off when a CardBus card is detached.
Use tsleep when kernel thread works.
 1.7  26-Jan-2000  haya Add cardbus detach functionality. Add a function
cardbus_detach_card() in cardbus.c and enable detach code in cardslot.c
 1.6  24-Jan-2000  thorpej Use config_pending. Addresses kern/9247.
 1.5  15-Nov-1999  haya branches: 1.5.2;
Handle insertion and removal events more strictly.
 1.4  29-Oct-1999  haya Change cardbus messages when cardbus does not configured.
 1.3  27-Oct-1999  haya Use opt_cardbus.h for cardbus.c and opt_cardslot.h for cardslot.c.
Remove unnecessary include from cardbus.c.
 1.2  15-Oct-1999  haya branches: 1.2.2; 1.2.4;
add NetBSD ID tag.
 1.1  15-Oct-1999  haya This is the first check-in of CardBus driver. CardBus driver contains
CardBus bus stub, YENTA PCI-CardBus bridge (cbb), 3Com 3C575TX driver
(ex) and Intel fxp driver.

TODO:
o Conform to the KNF more strictly.
o Be unified with pcmcia code as much as possible.
o Add more drivers for CardBus card, such as APA-1480 or USB card.

The affected files are listed below.

sys/arch/i386/conf/files.i386
sys/arch/macppc/conf/files.macppc
sys/conf/files
sys/dev/ic/elinkxl.c
sys/dev/ic/elinkxlvar.h
sys/dev/ic/i82365.c
sys/dev/ic/i82365var.h
sys/dev/isa/i82365_isasubr.c
sys/dev/pci/files.pci
sys/dev/pcmcia/pcmcia.c
sys/dev/pcmcia/pcmciachip.h

The added files are listed below.

sys/arch/i386/conf/CARDBUS
sys/arch/i386/include/rbus_machdep.h
sys/arch/i386/i386/rbus_machdep.c
sys/arch/macppc/include/rbus_machdep.h
sys/arch/macppc/macppc/rbus_machdep.c
sys/dev/cardbus/if_ex_cardbus.c
sys/dev/cardbus/Makefile.cardbusdevs
sys/dev/cardbus/cardbus.c
sys/dev/cardbus/cardbus_map.c
sys/dev/cardbus/cardbusdevs
sys/dev/cardbus/cardbusdevs.h
sys/dev/cardbus/cardbusdevs_data.h
sys/dev/cardbus/cardbusvar.h
sys/dev/cardbus/cardslot.c
sys/dev/cardbus/cardslotvar.h
sys/dev/cardbus/devlist2h.awk
sys/dev/cardbus/files.cardbus
sys/dev/cardbus/if_fxp_cardbus.c
sys/dev/cardbus/pccardcis.h
sys/dev/cardbus/rbus.c
sys/dev/cardbus/rbus.h
sys/dev/pci/pccbb.c
sys/dev/pci/pccbbreg.h
sys/dev/pci/pccbbvar.h
 1.2.4.1  15-Nov-1999  fvdl Sync with -current
 1.2.2.4  27-Mar-2001  bouyer Sync with HEAD.
 1.2.2.3  12-Mar-2001  bouyer Sync with HEAD.
 1.2.2.2  11-Feb-2001  bouyer Sync with HEAD.
 1.2.2.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.5.2.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.9.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.13.2.6  03-Jan-2003  thorpej Sync with HEAD.
 1.13.2.5  18-Oct-2002  nathanw Catch up to -current.
 1.13.2.4  20-Jun-2002  nathanw Catch up to -current.
 1.13.2.3  08-Jan-2002  nathanw Catch up to -current.
 1.13.2.2  14-Nov-2001  nathanw Catch up to -current.
 1.13.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.14.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.14.2.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.14.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.16.8.1  20-Jun-2002  gehenna catch up with -current.
 1.22.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.22.2.4  04-Feb-2005  skrll Sync with HEAD.
 1.22.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.22.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.22.2.1  03-Aug-2004  skrll Sync with HEAD
 1.25.6.1  12-Feb-2005  yamt sync with head.
 1.25.4.1  29-Apr-2005  kent sync with -current
 1.26.6.7  21-Jan-2008  yamt sync with head
 1.26.6.6  07-Dec-2007  yamt sync with head
 1.26.6.5  27-Oct-2007  yamt sync with head.
 1.26.6.4  03-Sep-2007  yamt sync with head.
 1.26.6.3  26-Feb-2007  yamt sync with head.
 1.26.6.2  30-Dec-2006  yamt sync with head.
 1.26.6.1  21-Jun-2006  yamt sync with head.
 1.28.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.28.10.1  19-Apr-2006  elad sync with head.
 1.28.8.1  01-Apr-2006  yamt sync with head.
 1.28.6.1  22-Apr-2006  simonb Sync with head.
 1.28.4.1  09-Sep-2006  rpaulo sync with head
 1.31.10.2  10-Dec-2006  yamt sync with head.
 1.31.10.1  22-Oct-2006  yamt sync with head
 1.31.8.2  09-Feb-2007  ad Sync with HEAD.
 1.31.8.1  18-Nov-2006  ad Sync with head.
 1.34.8.1  11-Jul-2007  mjf Sync with head.
 1.34.6.4  23-Oct-2007  ad Sync with head.
 1.34.6.3  13-May-2007  ad - Pass the error number and residual count to biodone(), and let it handle
setting error indicators. Prepare to eliminate B_ERROR.
- Add a flag argument to brelse() to be set into the buf's flags, instead
of doing it directly. Typically used to set B_INVAL.
- Add a "struct cpu_info *" argument to kthread_create(), to be used to
create bound threads. Change "bool mpsafe" to "int flags".
- Allow exit of LWPs in the IDL state when (l != curlwp).
- More locking fixes & conversion to the new API.
 1.34.6.2  10-Apr-2007  ad Nuke the deferred kthread creation stuff, as it's no longer needed.
Pointed out by thorpej@.
 1.34.6.1  09-Apr-2007  ad - Add two new arguments to kthread_create1: pri_t pri, bool mpsafe.
- Fork kthreads off proc0 as new LWPs, not new processes.
 1.35.12.1  25-Oct-2007  bouyer Sync with HEAD.
 1.35.8.2  09-Jan-2008  matt sync with HEAD
 1.35.8.1  06-Nov-2007  matt sync with HEAD
 1.35.6.4  08-Dec-2007  jmcneill Rename pnp(9) -> pmf(9), as requested by many.
 1.35.6.3  01-Dec-2007  jmcneill Sync with HEAD.
 1.35.6.2  06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.35.6.1  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.36.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.36.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.37.4.1  11-Dec-2007  yamt sync with head.
 1.37.2.1  26-Dec-2007  ad Sync with head.
 1.38.2.1  02-Jan-2008  bouyer Sync with HEAD
 1.39.6.4  28-Sep-2008  mjf Sync with HEAD.
 1.39.6.3  02-Jul-2008  mjf Sync with HEAD.
 1.39.6.2  29-Jun-2008  mjf Sync with HEAD.
 1.39.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.40.8.3  18-Jul-2008  simonb Sync with head.
 1.40.8.2  03-Jul-2008  simonb Sync with head.
 1.40.8.1  27-Jun-2008  simonb Sync with head.
 1.40.6.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.40.4.5  11-Aug-2010  yamt sync with head.
 1.40.4.4  11-Mar-2010  yamt sync with head
 1.40.4.3  20-Jun-2009  yamt sync with head
 1.40.4.2  16-May-2009  yamt sync with head
 1.40.4.1  04-May-2009  yamt sync with head.
 1.45.10.2  23-Jul-2009  jym Sync with HEAD.
 1.45.10.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.45.4.1  28-Apr-2009  skrll Sync with HEAD.
 1.51.4.2  31-May-2011  rmind sync with head
 1.51.4.1  30-May-2010  rmind sync with head
 1.51.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.52.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.53.14.3  03-Dec-2017  jdolecek update from HEAD
 1.53.14.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.53.14.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.53.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.53.4.1  30-Oct-2012  yamt sync with head
 1.54.2.1  18-May-2014  rmind sync with head
 1.55.10.1  04-Nov-2016  pgoyette Sync with HEAD
 1.55.6.1  05-Oct-2016  skrll Sync with HEAD
 1.57.4.3  17-Apr-2021  thorpej Sync with HEAD.
 1.57.4.2  02-Apr-2021  thorpej config_found_ia() -> config_found() w/ CFARG_IATTR.
 1.57.4.1  22-Mar-2021  thorpej Mechanical conversion of config_found_sm_loc() -> config_found().
CFARG_IATTR usage needs to be audited.
 1.59.8.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed