tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[PATCHES] config(1) / cons(9) / userconf(4) : Extensions
Code is at:
https://github.com/tlaronde/netbsd-src/tree/tsjl
in 3 commits:
- config(1): it accepts now also context neutral "userconf"
directives. These add the double quoted string given as
argument to the userconf_kconf[] array. This array is
interpreted by userconf(4) during startup (see below).
Typically, MI userconf instructions should go in sys/conf/std
like these ones:
#
# Userconf MI aliases.
#
userconf "alias azerty qaQAwzWZaqAQ;m:MzwZWm,M?,;<..:>/"
# start to define an executable macro "fr"
# - printing a message
userconf "alias -c fr print changing to pseudo-fr kbd mapping"
# - mapping from def of azerty (-a azerty) and mapping * and -
userconf "alias -c fr kmap -a azerty `*~-"
# - printing a hint: * and - are mapped at the upper left key
userconf "alias -c fr p * and - are mapped to upper left ^2"
# Here, another macro: the drmkms alias is defined in MD code
userconf "alias -c nodrmkms disable -a drmkms"
and then in the kernel config, MD directives can be added for
example to define drmkms (an alias; each instruction creates
or adds to the definition):
# DRMKMS drivers
i915drmkms* at pci? dev ? function ?
intelfb* at intelfbbus?
userconf "alias drmkms i915drmkms*"
radeon* at pci? dev ? function ?
radeondrmkmsfb* at radeonfbbus?
userconf "alias drmkms radeon*"
#amdgpu* at pci? dev ? function ?
#amdgpufb* at amdgpufbbus?
nouveau* at pci? dev ? function ?
nouveaufb* at nouveaufbbus?
userconf "alias drmkms nouveau*"
- cons(9): two new routines: cnmapreset() and cnmap() allow
a "late" mapping of chars in startup console (works only with
cnget*()), allowing a kind of keyboard mapping for use during
this step;
- userconf(4): in order for interaction and for the config(1)
generated userconf_kconf[] array of instructions to be more
useful, a lot of things have been added to userconf(4):
o At init time, userconf interprets instructions
(cmdlines) in userconf_kconf[] (generated by
config(1)) before processing bootinfo directives and,
perhaps, entering interactive session if the "-c" flag
was passed to the kernel;
o aliases: one can create aliases, including
executable ones (macros). Userconf does its own
alloc/free stuff for this;
=> userconf_parse() thus handle taking definition of
aliases and recursing for macros;
o patterns: one can select devices using patterns.
This works for change, disable, enable, find and list;
o new built-ins:
* aliases: create or add definition to an
alias (that can be executable); allocated;
* kmap: maps characters on the console
(calling cons(9) added routines) allowing a
kind of keyboard mapping for not US ASCII
keyboards;
* print: echos tokens including dereferencing
of aliases;
* unalias: delete an alias; freed;
* vis: visualize (show) the definition of an
alias (uninterpreted)---show and 'S' were not
chosen to keep 'S' for "set" in the future; see
FUTURE DIRECTIONS;
* debug0: display config(1) added instructions
parsed at startup time;
* debug1: display debugging information about
userconf memory and structures allocations;
* debug2: display debugging information about
userconf defined aliases;
o Ergonomy: in order to limit the number of characters
to be able to give:
* input is case insensitive;
* built-ins can be given with a single letter
key (in all cases less one, this is the
initial); a macro is at least two chars,
starting by a letter. Single letters are
reserved for built-ins;
* no special character is needed for pattern
or alias: a flag has to be given with a hyphen
and a letter to change the interpretation of
the next token (this was proposed by RVP).
o FUTURE DIRECTIONS: I have reserved 'S' for set: a
lot of things presently in MD boot could be put in
MI userconf.
o RATIONALE: in order to be able to enable/disable
sets of devices or to give an easy command to type
for keyboard (console at startup) without having to
write MD code, the simplest is to be able to script
it with aliases and let userconf interpret.
--
Thierry Laronde <tlaronde +AT+ kergis +dot+ com>
http://www.kergis.com/
http://kertex.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89 250D 52B1 AE95 6006 F40C
Home |
Main Index |
Thread Index |
Old Index