diff options
| author | Toomas Soome <tsoome@me.com> | 2019-04-29 14:13:54 +0300 |
|---|---|---|
| committer | Toomas Soome <tsoome@me.com> | 2019-05-16 22:36:52 +0300 |
| commit | c0423dd8ef7079a845a1aa3ceb20e565e815f97b (patch) | |
| tree | 9f8888d60286b10060d1d3944782a08819ce398a /usr/src/uts/common/io/kbtrans/kbtrans_streams.c | |
| parent | e3f3c0e614a8cd74d4212f4c7c616ed5b3cf00cb (diff) | |
| download | illumos-joyent-c0423dd8ef7079a845a1aa3ceb20e565e815f97b.tar.gz | |
10884 kbd: add option to limit autorepeat count, convert manual
Reviewed by: Peter Tribble <peter.tribble@gmail.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/uts/common/io/kbtrans/kbtrans_streams.c')
| -rw-r--r-- | usr/src/uts/common/io/kbtrans/kbtrans_streams.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/usr/src/uts/common/io/kbtrans/kbtrans_streams.c b/usr/src/uts/common/io/kbtrans/kbtrans_streams.c index d56b92954c..170eef268e 100644 --- a/usr/src/uts/common/io/kbtrans/kbtrans_streams.c +++ b/usr/src/uts/common/io/kbtrans/kbtrans_streams.c @@ -995,6 +995,43 @@ kbtrans_ioctl(struct kbtrans *upper, register mblk_t *mp) */ return (KBTRANS_MESSAGE_NOT_HANDLED); + case KIOCGRPTCOUNT: + /* + * Report the autorepeat count + */ + DPRINTF(PRINT_L0, PRINT_MASK_ALL, (upper, "KIOCGRPTCOUNT\n")); + if ((datap = allocb(sizeof (int), BPRI_HI)) == NULL) { + ioctlrespsize = sizeof (int); + goto allocfailure; + } + *(int *)datap->b_wptr = kbtrans_repeat_count; + datap->b_wptr += sizeof (int); + + /* free msg to prevent memory leak */ + if (mp->b_cont != NULL) + freemsg(mp->b_cont); + mp->b_cont = datap; + iocp->ioc_count = sizeof (int); + break; + + case KIOCSRPTCOUNT: + /* + * Set the autorepeat count + */ + DPRINTF(PRINT_L0, PRINT_MASK_ALL, (upper, "KIOCSRPTCOUNT\n")); + err = miocpullup(mp, sizeof (int)); + + if (err != 0) + break; + + /* validate the input */ + if (*(int *)mp->b_cont->b_rptr < -1) { + err = EINVAL; + break; + } + kbtrans_repeat_count = (*(int *)mp->b_cont->b_rptr); + break; + case KIOCGRPTDELAY: /* * Report the autorepeat delay, unit in millisecond |
