int s, i;
int result = EINVAL;
- switch (m_ptr->FKEY_REQUEST) { /* see what we must do */
+ switch (m_ptr->m_lsys_tty_fkey_ctl.request) { /* see what we must do */
case FKEY_MAP: /* request for new mapping */
result = OK; /* assume everything will be ok*/
for (i=0; i < 12; i++) { /* check F1-F12 keys */
- if (bit_isset(m_ptr->FKEY_FKEYS, i+1) ) {
+ if (bit_isset(m_ptr->m_lsys_tty_fkey_ctl.fkeys, i+1) ) {
#if DEAD_CODE
/* Currently, we don't check if the slot is in use, so that IS
* can recover after a crash by overtaking its existing mappings.
#endif
fkey_obs[i].proc_nr = m_ptr->m_source;
fkey_obs[i].events = 0;
- bit_unset(m_ptr->FKEY_FKEYS, i+1);
+ bit_unset(m_ptr->m_lsys_tty_fkey_ctl.fkeys, i+1);
#if DEAD_CODE
} else {
printf("WARNING, fkey_map failed F%d\n", i+1);
}
}
for (i=0; i < 12; i++) { /* check Shift+F1-F12 keys */
- if (bit_isset(m_ptr->FKEY_SFKEYS, i+1) ) {
+ if (bit_isset(m_ptr->m_lsys_tty_fkey_ctl.sfkeys, i+1) ) {
#if DEAD_CODE
if (sfkey_obs[i].proc_nr == NONE) {
#endif
sfkey_obs[i].proc_nr = m_ptr->m_source;
sfkey_obs[i].events = 0;
- bit_unset(m_ptr->FKEY_SFKEYS, i+1);
+ bit_unset(m_ptr->m_lsys_tty_fkey_ctl.sfkeys, i+1);
#if DEAD_CODE
} else {
printf("WARNING, fkey_map failed Shift F%d\n", i+1);
case FKEY_UNMAP:
result = OK; /* assume everything will be ok*/
for (i=0; i < 12; i++) { /* check F1-F12 keys */
- if (bit_isset(m_ptr->FKEY_FKEYS, i+1) ) {
+ if (bit_isset(m_ptr->m_lsys_tty_fkey_ctl.fkeys, i+1) ) {
if (fkey_obs[i].proc_nr == m_ptr->m_source) {
fkey_obs[i].proc_nr = NONE;
fkey_obs[i].events = 0;
- bit_unset(m_ptr->FKEY_FKEYS, i+1);
+ bit_unset(m_ptr->m_lsys_tty_fkey_ctl.fkeys, i+1);
} else {
result = EPERM; /* report failure, but try rest */
}
}
}
for (i=0; i < 12; i++) { /* check Shift+F1-F12 keys */
- if (bit_isset(m_ptr->FKEY_SFKEYS, i+1) ) {
+ if (bit_isset(m_ptr->m_lsys_tty_fkey_ctl.sfkeys, i+1) ) {
if (sfkey_obs[i].proc_nr == m_ptr->m_source) {
sfkey_obs[i].proc_nr = NONE;
sfkey_obs[i].events = 0;
- bit_unset(m_ptr->FKEY_SFKEYS, i+1);
+ bit_unset(m_ptr->m_lsys_tty_fkey_ctl.sfkeys, i+1);
} else {
result = EPERM; /* report failure, but try rest */
}
break;
case FKEY_EVENTS:
result = OK; /* everything will be ok*/
- m_ptr->FKEY_FKEYS = m_ptr->FKEY_SFKEYS = 0;
+ m_ptr->m_tty_lsys_fkey_ctl.fkeys = m_ptr->m_tty_lsys_fkey_ctl.sfkeys = 0;
for (i=0; i < 12; i++) { /* check (Shift+) F1-F12 keys */
if (fkey_obs[i].proc_nr == m_ptr->m_source) {
if (fkey_obs[i].events) {
- bit_set(m_ptr->FKEY_FKEYS, i+1);
+ bit_set(m_ptr->m_tty_lsys_fkey_ctl.fkeys, i+1);
fkey_obs[i].events = 0;
}
}
if (sfkey_obs[i].proc_nr == m_ptr->m_source) {
if (sfkey_obs[i].events) {
- bit_set(m_ptr->FKEY_SFKEYS, i+1);
+ bit_set(m_ptr->m_tty_lsys_fkey_ctl.sfkeys, i+1);
sfkey_obs[i].events = 0;
}
}
#define TTY_RQ_BASE 0x1300
#define TTY_FKEY_CONTROL (TTY_RQ_BASE + 1) /* control an F-key at TTY */
-# define FKEY_REQUEST m2_i1 /* request to perform at TTY */
# define FKEY_MAP 10 /* observe function key */
# define FKEY_UNMAP 11 /* stop observing function key */
# define FKEY_EVENTS 12 /* request open key presses */
-# define FKEY_FKEYS m2_l1 /* F1-F12 keys pressed */
-# define FKEY_SFKEYS m2_l2 /* Shift-F1-F12 keys pressed */
#define TTY_INPUT_UP (TTY_RQ_BASE + 2) /* input server is up */
-/* This message uses no message fields. */
-
#define TTY_INPUT_EVENT (TTY_RQ_BASE + 3) /* relayed input event */
/*===========================================================================*
} mess_lsys_svrctl;
_ASSERT_MSG_SIZE(mess_lsys_svrctl);
+typedef struct {
+ int request;
+ int fkeys;
+ int sfkeys;
+
+ uint8_t padding[44];
+} mess_lsys_tty_fkey_ctl;
+_ASSERT_MSG_SIZE(mess_lsys_tty_fkey_ctl);
+
+typedef struct {
+ int fkeys;
+ int sfkeys;
+
+ uint8_t padding[48];
+} mess_tty_lsys_fkey_ctl;
+_ASSERT_MSG_SIZE(mess_tty_lsys_fkey_ctl);
+
typedef struct {
endpoint_t endpt;
cp_grant_id_t grant;
mess_lsys_svrctl m_lsys_svrctl;
+ mess_lsys_tty_fkey_ctl m_lsys_tty_fkey_ctl;
+
mess_lsys_vfs_checkperms m_lsys_vfs_checkperms;
mess_lsys_vfs_copyfd m_lsys_vfs_copyfd;
mess_lsys_vfs_mapdriver m_lsys_vfs_mapdriver;
mess_sched_lsys_scheduling_start m_sched_lsys_scheduling_start;
+ mess_tty_lsys_fkey_ctl m_tty_lsys_fkey_ctl;
+
mess_vfs_fs_breadwrite m_vfs_fs_breadwrite;
mess_vfs_fs_chmod m_vfs_fs_chmod;
mess_vfs_fs_chown m_vfs_fs_chown;
message m;
int s;
memset(&m, 0, sizeof(m));
- m.FKEY_REQUEST = request;
- m.FKEY_FKEYS = (fkeys) ? *fkeys : 0;
- m.FKEY_SFKEYS = (sfkeys) ? *sfkeys : 0;
+ m.m_lsys_tty_fkey_ctl.request = request;
+ m.m_lsys_tty_fkey_ctl.fkeys = (fkeys) ? *fkeys : 0;
+ m.m_lsys_tty_fkey_ctl.sfkeys = (sfkeys) ? *sfkeys : 0;
s = _taskcall(TTY_PROC_NR, TTY_FKEY_CONTROL, &m);
- if (fkeys) *fkeys = m.FKEY_FKEYS;
- if (sfkeys) *sfkeys = m.FKEY_SFKEYS;
+ if (fkeys) *fkeys = m.m_tty_lsys_fkey_ctl.fkeys;
+ if (sfkeys) *sfkeys = m.m_tty_lsys_fkey_ctl.sfkeys;
return(s);
}