| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
Both callout and taskqueue now have drain() routines not requiring
external locking. It allows to remove TASK flag and manual drain,
so the only thing remaining for lock to protect inside the callout
handler is ks_inq_length zero comparison, that can be lockless.
MFC after: 2 weeks
(cherry picked from commit e5018628e76a27e0f61ca03e2aa2247b3c62a158)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the event of a MOD_LOAD failure, MOD_UNLOAD will be invoked to unwind
module load. Most of the reversion in MOD_LOAD can just be deferred to
normal MOD_UNLOAD cleanup, rather than duplicating the effort.
A NULL return of kbd_get_switch in the MOD_UNLOAD handler has been
downgraded from a panic to a successful return, as that certainly just means
that kbd_add_driver failed (not possible at the moment) and we have no work
to do.
Notes:
svn path=/head/; revision=356092
|
| |
|
|
|
|
|
|
|
|
|
| |
r356087 made it rather innocuous to double-register built-in keyboard
drivers; we now set a flag to indicate that it's been registered and only
act once on a registration anyways. There is no misleading here, as the
follow-up kbd_delete_driver will actually remove the driver as needed now
that the linker set isn't also consulted after kbdinit.
Notes:
svn path=/head/; revision=356091
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Keyboard drivers are generally registered via linker set. In these cases,
they're also available as kmods which use KPI for registering/unregistering
keyboard drivers outside of the linker set.
For built-in modules, we still fire off MOD_LOAD and maybe even MOD_UNLOAD
if an error occurs, leading to registration via linker set and at MOD_LOAD
time.
This is a minor optimization at best, but it keeps the internal kbd driver
tidy as a future change will merge the linker set driver list into its
internal keyboard_drivers list via SYSINIT and simplify driver lookup by
removing the need to consult the linker set.
Notes:
svn path=/head/; revision=355806
|
| |
|
|
|
|
|
|
|
| |
Most keyboard drivers are using the genkbd implementations as it is;
formally use them for any that aren't set and make
genkbd_get_fkeystr/genkbd_diag private.
Notes:
svn path=/head/; revision=355796
|
| |
|
|
|
|
|
|
| |
Reviewed by: kib, imp
Differential Revision: https://reviews.freebsd.org/D22752
Notes:
svn path=/head/; revision=355601
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Now evdev part of keyboard drivers does not take any locks if corresponding
input/eventN device node is not opened by userland consumers.
Do not assert console lock inside evdev to handle the cases when keyboard
driver is called from some special single-threaded context like shutdown
thread.
Notes:
svn path=/head/; revision=339823
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move evdev_ev_kbd_event() helper from evdev to kbd.c as otherwise evdev
unconditionally requires all keyboard and console stuff to be compiled
into the kernel. This dependency happens as evdev_ev_kbd_event() helper
references kbdsw global variable defined in kbd.c through use of
kbdd_ioctl() macro.
While here make all keyboard drivers respect evdev_rcpt_mask while setting
typematic rate and LEDs with evdev interface.
Requested by: Milan Obuch <bsd@dino.sk>
Reviewed by: hselasky, gonzo
Differential Revision: https://reviews.freebsd.org/D16614
Notes:
svn path=/head/; revision=337721
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
opt_compat.h is mentioned in nearly 180 files. In-progress network
driver compabibility improvements may add over 100 more so this is
closer to "just about everywhere" than "only some files" per the
guidance in sys/conf/options.
Keep COMPAT_LINUX32 in opt_compat.h as it is confined to a subset of
sys/compat/linux/*.c. A fake _COMPAT_LINUX option ensure opt_compat.h
is created on all architectures.
Move COMPAT_LINUXKPI to opt_dontuse.h as it is only used to control the
set of compiled files.
Reviewed by: kib, cem, jhb, jtl
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D14941
Notes:
svn path=/head/; revision=332122
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.
The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.
Notes:
svn path=/head/; revision=326255
|
| |
|
|
|
|
|
|
|
|
|
|
| |
To enable event sourcing from kbdmux(4) kern.evdev.rcpt_mask value
should have bit 1 set (this is default)
Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D8437
Notes:
svn path=/head/; revision=308668
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this, and sc will soon depend on it again.
The on/off request is passed without modification to lower layers,
so the bug was smaller in this layer than in in lower layers (the
sequence on;on;off left polling off when it should be on, but the
sequence on;on;off;on;off... doesn't allow the interrupt handler
to eat the input after an "off" that should't turn off polled mode,
provided lower layers don't have the bug, since this layer is virtual.
The bug was small in lower layers too. Normally everything is Giant
locked for keyboards, and this locks out the interrupt handler in
on;on;off;on;off... sequences. However, PR 211884 says that fixing
this bug in ukbd in r303765 apparently causes the eating-by-interrupt
behaviour that the fix is to prevent.
Discussed with: emax
Notes:
svn path=/head/; revision=305060
|
| |
|
|
|
|
|
|
| |
PR: 153459
Submitted by: swell.k@gmail.com
Notes:
svn path=/head/; revision=297685
|
| |
|
|
|
|
|
|
|
|
|
| |
The change would appease the static analyzers but it is pretty much a
no-op. I need to trust static analyzers much less, especially for the
kernel.
Requested by: jkim
Notes:
svn path=/head/; revision=282246
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a fix to the previous attempt in r281889, which some (most?)
keyboards.
Discussed with: emaste, jkim
Found by: clang static analyzer
CID: 1007072
CID: 1007073
CID: 1007074
Notes:
svn path=/head/; revision=282226
|
| |
|
|
| |
Notes:
svn path=/head/; revision=281901
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Al kudos here for the Clang static analyzer which, unlike Coverity,
failed to flag a false positive.
Found by: clang static analyzer
CID: 1007072
CID: 1007073
CID: 1007074
MFC after: 1 week
Notes:
svn path=/head/; revision=281889
|
| |
|
|
|
|
|
|
|
|
|
| |
unit 0 would in fact disable all units.
This reverts r241856
Approved by: cperciva (implicit)
Notes:
svn path=/head/; revision=241885
|
| |
|
|
|
|
|
|
|
|
|
| |
device drivers that used to provide this feature.
Reviewed by: des
Approved by: cperciva
MFC after: 1 week
Notes:
svn path=/head/; revision=241856
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Back in 2009 I changed the ABI of the GIO_KEYMAP and PIO_KEYMAP ioctls
to support wide characters. I created a patch to add ABI compatibility
for the old calls, but I didn't get any feedback to that.
It seems now people are upgrading from 8 to 9 they experience this
issue, so add it anyway.
Notes:
svn path=/head/; revision=224126
|
| |
|
|
|
|
|
| |
of kbdd_ioctl().
Notes:
svn path=/head/; revision=213770
|
| |
|
|
|
|
|
|
|
|
|
| |
- The return value should be a signed integer, because -1 means failure.
- The c variable should be unsigned, to force it to be zero-extended
when returned.
Reported by: Andreas Tobler <andreast-list fgznet ch>
Notes:
svn path=/head/; revision=193752
|
| |
|
|
|
|
|
|
|
|
|
| |
These two drivers seem to be the last consumers of clists. clists are
quite overengineered for simple circular buffers, so I'm adding similar
buffer management routines to the kbd and kbdmux drivers. The input
buffer is now part of the softc structures, instead of having
dynamically allocated cblocks.
Notes:
svn path=/head/; revision=193512
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not use Giant for kbdmux(4) locking. This is wrong and apparently
causing more problems than it solves. This will re-open the issue
where interrupt handlers may race with kbdmux(4) in polling mode.
Typical symptoms include (but not limited to) duplicated and/or
missing characters when low level console functions (such as gets)
are used while interrupts are enabled (for example geli password
prompt, mountroot prompt etc.)
MFC after: 3 days
Notes:
svn path=/head/; revision=190857
|
| |
|
|
|
|
|
|
|
| |
fails to attach (possibly due to disable hints) then we get called back for
unload. Correctly handle the case where the keyboard isnt found rather than
calling panic.
Notes:
svn path=/head/; revision=188603
|
| |
|
|
|
|
|
|
| |
Reported by: Christoph Mallon < christoph -dot- mallon -at- gmx -dot- de >
MFC after: 1 week
Notes:
svn path=/head/; revision=188030
|
| |
|
|
|
|
|
|
|
|
|
|
| |
where interrupt handlers may race with kbdmux(4) in polling mode.
PR: kern/127446
Reported by: Eygene Ryabinkin rea-fbsd at codelabs dot ru
Tested by: Eygene Ryabinkin rea-fbsd at codelabs dot ru
MFC after: 1 week
Notes:
svn path=/head/; revision=183283
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The kbd, kbdmux, ugen and uhid drivers included <sys/tty.h>, because
they needed clists, which have been moved to <sys/clist.h> some time
ago. In the MPSAFE TTY branch, <sys/tty.h> does not include
<sys/clist.h>, which means we have to teach these drivers to include
this header file directly.
Approved by: philip (mentor, implicit)
Notes:
svn path=/head/; revision=180777
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
implemented with macros. This patch improves code readability. Reasoning
behind kbdd_* is a "keyboard discipline".
List of macros is supposed to be complete--all methods of keyboard_switch
should have their respective macros from now on.
Functionally, this code should be no-op. My intention is to leave current
behaviour of code as is.
Glanced at by: rwatson
Reviewed by: emax, marcel
Approved by: cognet
Notes:
svn path=/head/; revision=174984
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Japanese 106/109 keyboard.
PR: kern/112214, kern/99090
Submitted by: TOMITA Yoshinori, TAKAHASHI Yoshihiro
Approved by: re (hrs)
MFC after: 3 days
Notes:
svn path=/head/; revision=171373
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ioctls passing integer arguments should use the _IOWINT() macro.
This fixes a lot of ioctl's not working on sparc64, most notable
being keyboard/syscons ioctls.
Full ABI compatibility is provided, with the bonus of fixing the
handling of old ioctls on sparc64.
Reviewed by: bde (with contributions)
Tested by: emax, marius
MFC after: 1 week
Notes:
svn path=/head/; revision=162711
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
is incorrect, and causes endianness bugs on 64-bit big-endian
machines (sparc64), it's the best choice for now, as many of
these IOCTLs are used inside the kernel, and bogusly pass an
argument as "int *" which results in unaligned access panics
on sparc64 when attempting to dereference them via *(intptr_t *).
(Several of us are working on a real fix, which is uneasy.)
Notes:
svn path=/head/; revision=162461
|
| |
|
|
| |
Notes:
svn path=/head/; revision=162441
|
| |
|
|
|
|
|
|
|
|
| |
are passed by value. These are KDSKBMODE, KDSETLED, KDSKBSTATE,
and KDSETRAD.
Tested on: amd64, sparc64 (demo code)
Notes:
svn path=/head/; revision=162440
|
| |
|
|
|
|
|
|
|
|
|
|
| |
some other less noticeable things) on little-endian 64-bit platforms
such as amd64.
PR: kern/101931
Discussed with: emax, marius
MFC after: 1 day
Notes:
svn path=/head/; revision=162428
|
| |
|
|
|
|
|
|
|
|
|
|
| |
poll (i.e. call read_char() method) slave keyboards.
This workaround should fix problem with kbdmux(4) and
atkbd(4) not working in ddb(4) and mid-boot.
MFC after: 1 week
Notes:
svn path=/head/; revision=160768
|
| |
|
|
|
|
|
|
| |
Pointed out by: marius
MFC after: 1 day
Notes:
svn path=/head/; revision=156226
|
| |
|
|
|
|
|
|
|
|
| |
Document hint in the kbdmux(4) man page.
Requested by: scottl
MFC after: 1 day
Notes:
svn path=/head/; revision=156167
|
| |
|
|
|
|
|
| |
MFC after: 1 day
Notes:
svn path=/head/; revision=156086
|
| |
|
|
|
|
|
|
|
|
| |
While I'm here fix a couple of whitespaces.
Requested by: netchild
MFC after: 1 day
Notes:
svn path=/head/; revision=156013
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(atkbd(4)) and PS/2 mouse (psm(4)) are used together.
Turns out that atkbd(4) check_char() method may return "true" while
read_char() method returns NOKEY. When this happens kbdmux(4) was
simply stuck in the dead loop. Avoid dead loop in kbdmux(4) by breaking
out of the loop if read_char() method returns NOKEY.
It almost seems like a bug in atkkbd(4), atkbd_check_char() calls
kbdc_data_ready(), and, the later will return "true" if there are
pending data in either kbd or aux queue. However, because both aux
and kbd are on the same controller, I'm not sure if this is a bug
or feature.
Tested by: markus
MFC after: 1 day
Notes:
svn path=/head/; revision=156010
|
| |
|
|
|
|
|
|
|
|
| |
in "#ifdef KBD_INSTALL_CDEV".
Noticed by: glebius
Uncovered by: recent change to modules' Makefiles
Notes:
svn path=/head/; revision=151440
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
o Slightly change KBADDKBD and KBRELKBD ioctl() interface. Instead of passing
keyboard index pass keyboard_info_t structure with populated 'kb_unit' and
'kb_name' fields. Keyboard index is not very user-friendly and is not very
easy to obtain. Keyboard driver name and unit, on the other hand, is much
more user friendly and known almost all the time;
o Move definition of keyboard_info_t structure up;
o Teach kbdcontrol(1) how to attach/detach keyboards to/from the keyboard
multiplexor;
o Update kbdcontrol(1) man page and document new functionality.
To attach/detach keyboard to/from keyboard multiplexor one needs to use
keyboard device name (i.e. ukbd0).
MFC after: 1 week
Notes:
svn path=/head/; revision=148017
|
|
|
o Add sys/dev/kbdmux/kbdmux.c to the source tree
o Add sys/modules/kbdmux/Makefile to the source tree
These are not yet connected to the build. Man page and other changes to follow.
MFC after: 1 week
Notes:
svn path=/head/; revision=147999
|