kbdmux.c (162461) | kbdmux.c (162711) |
---|---|
1/* 2 * kbdmux.c 3 */ 4 5/*- 6 * Copyright (c) 2005 Maksim Yevmenkin <m_evmenkin@yahoo.com> 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * 30 * $Id: kbdmux.c,v 1.4 2005/07/14 17:38:35 max Exp $ | 1/* 2 * kbdmux.c 3 */ 4 5/*- 6 * Copyright (c) 2005 Maksim Yevmenkin <m_evmenkin@yahoo.com> 7 * All rights reserved. 8 * --- 14 unchanged lines hidden (view full) --- 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * 30 * $Id: kbdmux.c,v 1.4 2005/07/14 17:38:35 max Exp $ |
31 * $FreeBSD: head/sys/dev/kbdmux/kbdmux.c 162461 2006-09-20 11:43:36Z ru $ | 31 * $FreeBSD: head/sys/dev/kbdmux/kbdmux.c 162711 2006-09-27 19:57:02Z ru $ |
32 */ 33 | 32 */ 33 |
34#include "opt_compat.h" |
|
34#include "opt_kbd.h" 35 36#include <sys/param.h> 37#include <sys/bus.h> 38#include <sys/conf.h> 39#include <sys/consio.h> 40#include <sys/fcntl.h> 41#include <sys/kbio.h> --- 893 unchanged lines hidden (view full) --- 935 136, 152, 168, 184, 200, 220, 236, 252, 936 272, 304, 336, 368, 400, 440, 472, 504 937 }; 938 939 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data; 940 kbdmux_kbd_t *k; 941 keyboard_info_t *ki; 942 int error = 0, mode; | 35#include "opt_kbd.h" 36 37#include <sys/param.h> 38#include <sys/bus.h> 39#include <sys/conf.h> 40#include <sys/consio.h> 41#include <sys/fcntl.h> 42#include <sys/kbio.h> --- 893 unchanged lines hidden (view full) --- 936 136, 152, 168, 184, 200, 220, 236, 252, 937 272, 304, 336, 368, 400, 440, 472, 504 938 }; 939 940 kbdmux_state_t *state = (kbdmux_state_t *) kbd->kb_data; 941 kbdmux_kbd_t *k; 942 keyboard_info_t *ki; 943 int error = 0, mode; |
944#ifdef COMPAT_FREEBSD6 945 int ival; 946#endif |
|
943 944 if (state == NULL) 945 return (ENXIO); 946 947 switch (cmd) { 948 case KBADDKBD: /* add keyboard to the mux */ 949 ki = (keyboard_info_t *) arg; 950 --- 92 unchanged lines hidden (view full) --- 1043 break; 1044 1045 case KDGKBMODE: /* get kyboard mode */ 1046 KBDMUX_LOCK(state); 1047 *(int *)arg = state->ks_mode; 1048 KBDMUX_UNLOCK(state); 1049 break; 1050 | 947 948 if (state == NULL) 949 return (ENXIO); 950 951 switch (cmd) { 952 case KBADDKBD: /* add keyboard to the mux */ 953 ki = (keyboard_info_t *) arg; 954 --- 92 unchanged lines hidden (view full) --- 1047 break; 1048 1049 case KDGKBMODE: /* get kyboard mode */ 1050 KBDMUX_LOCK(state); 1051 *(int *)arg = state->ks_mode; 1052 KBDMUX_UNLOCK(state); 1053 break; 1054 |
1055#ifdef COMPAT_FREEBSD6 1056 case _IO('K', 7): 1057 ival = IOCPARM_IVAL(arg); 1058 arg = (caddr_t)&ival; 1059 /* FALLTHROUGH */ 1060#endif |
|
1051 case KDSKBMODE: /* set keyboard mode */ 1052 KBDMUX_LOCK(state); 1053 1054 switch (*(int *)arg) { 1055 case K_XLATE: 1056 if (state->ks_mode != K_XLATE) { 1057 /* make lock key state and LED state match */ 1058 state->ks_state &= ~LOCK_MASK; --- 18 unchanged lines hidden (view full) --- 1077 break; 1078 1079 case KDGETLED: /* get keyboard LED */ 1080 KBDMUX_LOCK(state); 1081 *(int *)arg = KBD_LED_VAL(kbd); 1082 KBDMUX_UNLOCK(state); 1083 break; 1084 | 1061 case KDSKBMODE: /* set keyboard mode */ 1062 KBDMUX_LOCK(state); 1063 1064 switch (*(int *)arg) { 1065 case K_XLATE: 1066 if (state->ks_mode != K_XLATE) { 1067 /* make lock key state and LED state match */ 1068 state->ks_state &= ~LOCK_MASK; --- 18 unchanged lines hidden (view full) --- 1087 break; 1088 1089 case KDGETLED: /* get keyboard LED */ 1090 KBDMUX_LOCK(state); 1091 *(int *)arg = KBD_LED_VAL(kbd); 1092 KBDMUX_UNLOCK(state); 1093 break; 1094 |
1095#ifdef COMPAT_FREEBSD6 1096 case _IO('K', 66): 1097 ival = IOCPARM_IVAL(arg); 1098 arg = (caddr_t)&ival; 1099 /* FALLTHROUGH */ 1100#endif |
|
1085 case KDSETLED: /* set keyboard LED */ 1086 KBDMUX_LOCK(state); 1087 1088 /* NOTE: lock key state in ks_state won't be changed */ 1089 if (*(int *)arg & ~LOCK_MASK) { 1090 KBDMUX_UNLOCK(state); 1091 1092 return (EINVAL); --- 9 unchanged lines hidden (view full) --- 1102 break; 1103 1104 case KDGKBSTATE: /* get lock key state */ 1105 KBDMUX_LOCK(state); 1106 *(int *)arg = state->ks_state & LOCK_MASK; 1107 KBDMUX_UNLOCK(state); 1108 break; 1109 | 1101 case KDSETLED: /* set keyboard LED */ 1102 KBDMUX_LOCK(state); 1103 1104 /* NOTE: lock key state in ks_state won't be changed */ 1105 if (*(int *)arg & ~LOCK_MASK) { 1106 KBDMUX_UNLOCK(state); 1107 1108 return (EINVAL); --- 9 unchanged lines hidden (view full) --- 1118 break; 1119 1120 case KDGKBSTATE: /* get lock key state */ 1121 KBDMUX_LOCK(state); 1122 *(int *)arg = state->ks_state & LOCK_MASK; 1123 KBDMUX_UNLOCK(state); 1124 break; 1125 |
1126#ifdef COMPAT_FREEBSD6 1127 case _IO('K', 20): 1128 ival = IOCPARM_IVAL(arg); 1129 arg = (caddr_t)&ival; 1130 /* FALLTHROUGH */ 1131#endif |
|
1110 case KDSKBSTATE: /* set lock key state */ 1111 KBDMUX_LOCK(state); 1112 1113 if (*(int *)arg & ~LOCK_MASK) { 1114 KBDMUX_UNLOCK(state); 1115 1116 return (EINVAL); 1117 } --- 5 unchanged lines hidden (view full) --- 1123 SLIST_FOREACH(k, &state->ks_kbds, next) 1124 KBDMUX_IOCTL(k->kbd, KDSKBSTATE, arg); 1125 1126 KBDMUX_UNLOCK(state); 1127 1128 return (kbdmux_ioctl(kbd, KDSETLED, arg)); 1129 /* NOT REACHED */ 1130 | 1132 case KDSKBSTATE: /* set lock key state */ 1133 KBDMUX_LOCK(state); 1134 1135 if (*(int *)arg & ~LOCK_MASK) { 1136 KBDMUX_UNLOCK(state); 1137 1138 return (EINVAL); 1139 } --- 5 unchanged lines hidden (view full) --- 1145 SLIST_FOREACH(k, &state->ks_kbds, next) 1146 KBDMUX_IOCTL(k->kbd, KDSKBSTATE, arg); 1147 1148 KBDMUX_UNLOCK(state); 1149 1150 return (kbdmux_ioctl(kbd, KDSETLED, arg)); 1151 /* NOT REACHED */ 1152 |
1153#ifdef COMPAT_FREEBSD6 1154 case _IO('K', 67): 1155 cmd = KDSETRAD; 1156 ival = IOCPARM_IVAL(arg); 1157 arg = (caddr_t)&ival; 1158 /* FALLTHROUGH */ 1159#endif |
|
1131 case KDSETREPEAT: /* set keyboard repeat rate (new interface) */ 1132 case KDSETRAD: /* set keyboard repeat rate (old interface) */ 1133 KBDMUX_LOCK(state); 1134 1135 if (cmd == KDSETREPEAT) { 1136 int i; 1137 1138 /* lookup delay */ --- 221 unchanged lines hidden --- | 1160 case KDSETREPEAT: /* set keyboard repeat rate (new interface) */ 1161 case KDSETRAD: /* set keyboard repeat rate (old interface) */ 1162 KBDMUX_LOCK(state); 1163 1164 if (cmd == KDSETREPEAT) { 1165 int i; 1166 1167 /* lookup delay */ --- 221 unchanged lines hidden --- |