Changeset c613270 in rtems


Ignore:
Timestamp:
Sep 10, 2007, 2:30:16 PM (12 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
39ee40db
Parents:
1235164
Message:

2007-09-10 Joel Sherrill <joel.sherrill@…>

  • console/vt.c: Changed tabs to spaces.
Location:
c/src/lib/libbsp/i386/pc386
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/i386/pc386/ChangeLog

    r1235164 rc613270  
     12007-09-10      Joel Sherrill <joel.sherrill@OARcorp.com>
     2
     3        * console/vt.c: Changed tabs to spaces.
     4
    152007-09-10      Joel Sherrill <joel.sherrill@OARcorp.com>
    26
  • c/src/lib/libbsp/i386/pc386/console/vt.c

    r1235164 rc613270  
    1515 */
    1616
    17 #include <string.h>     /* memcpy */
     17#include <string.h>  /* memcpy */
    1818#include <sys/types.h>
    1919#include <errno.h>
     
    6161kd_nosound(unsigned long ignored)
    6262{
    63         /* disable counter 2 */
    64         outb(inb_p(0x61)&0xFC, 0x61);
    65         return;
     63  /* disable counter 2 */
     64  outb(inb_p(0x61)&0xFC, 0x61);
     65  return;
    6666}
    6767
     
    7272  int level;
    7373
    74         if (hz > 20 && hz < 32767)
    75                 count = 1193180 / hz;
    76 
    77         _CPU_ISR_Disable(level);
    78 /*      del_timer(&sound_timer);  */
    79         if (count) {
    80                 /* enable counter 2 */
    81                 outb_p(inb_p(0x61)|3, 0x61);
    82                 /* set command for counter 2, 2 byte write */
    83                 outb_p(0xB6, 0x43);
    84                 /* select desired HZ */
    85                 outb_p(count & 0xff, 0x42);
    86                 outb((count >> 8) & 0xff, 0x42);
    87 
    88 /*
    89                 if (ticks) {
    90                         sound_timer.expires = jiffies+ticks;
    91                         add_timer(&sound_timer);
    92                 }
     74  if (hz > 20 && hz < 32767)
     75    count = 1193180 / hz;
     76
     77  _CPU_ISR_Disable(level);
     78/*  del_timer(&sound_timer);  */
     79  if (count) {
     80    /* enable counter 2 */
     81    outb_p(inb_p(0x61)|3, 0x61);
     82    /* set command for counter 2, 2 byte write */
     83    outb_p(0xB6, 0x43);
     84    /* select desired HZ */
     85    outb_p(count & 0xff, 0x42);
     86    outb((count >> 8) & 0xff, 0x42);
     87
     88/*
     89    if (ticks) {
     90      sound_timer.expires = jiffies+ticks;
     91      add_timer(&sound_timer);
     92    }
    9393*/
    94         } else
    95                 kd_nosound(0);
    96 
    97         _CPU_ISR_Enable (level);
    98         return;
     94  } else
     95    kd_nosound(0);
     96
     97  _CPU_ISR_Enable (level);
     98  return;
    9999}
    100100
     
    116116do_kdsk_ioctl(int cmd, struct kbentry *user_kbe, int perm, struct kbd_struct *kbd)
    117117{
    118         struct kbentry tmp;
    119         ushort *key_map, val;
    120 
    121         tmp = *user_kbe;
    122         if (i >= NR_KEYS)  /*  s cannot be >= MAX_NR_KEYMAPS */
    123                 return -EINVAL;
    124 
    125         switch (cmd) {
    126         case KDGKBENT:
    127                 key_map = key_maps[s];
    128                 if (key_map) {
    129                     val = U(key_map[i]);
    130                     if (kbd->kbdmode != VC_UNICODE && KTYP(val) >= NR_TYPES)
    131                         val = K_HOLE;
    132                 } else
    133                     val = (i ? K_HOLE : K_NOSUCHMAP);
    134                 user_kbe->kb_value = val;
    135                 return 0;
    136 
    137         case KDSKBENT:
    138                 return -EINVAL;
    139         }
    140         return 0;
     118  struct kbentry tmp;
     119  ushort *key_map, val;
     120
     121  tmp = *user_kbe;
     122  if (i >= NR_KEYS)  /*  s cannot be >= MAX_NR_KEYMAPS */
     123    return -EINVAL;
     124
     125  switch (cmd) {
     126  case KDGKBENT:
     127    key_map = key_maps[s];
     128    if (key_map) {
     129        val = U(key_map[i]);
     130        if (kbd->kbdmode != VC_UNICODE && KTYP(val) >= NR_TYPES)
     131      val = K_HOLE;
     132    } else
     133        val = (i ? K_HOLE : K_NOSUCHMAP);
     134    user_kbe->kb_value = val;
     135    return 0;
     136
     137  case KDSKBENT:
     138    return -EINVAL;
     139  }
     140  return 0;
    141141}
    142142#undef i
     
    149149do_kbkeycode_ioctl(int cmd, struct kbkeycode *user_kbkc, int perm)
    150150{
    151         struct kbkeycode tmp;
    152         int kc = 0;
    153 
    154         tmp = *user_kbkc;
    155         switch (cmd) {
    156         case KDGETKEYCODE:
    157                 kc = getkeycode(tmp.scancode);
    158                 if (kc >= 0)
    159                         user_kbkc->keycode = kc;
    160                 break;
    161         case KDSETKEYCODE:
    162                 if (!perm)
    163                         return -EPERM;
    164                 kc = setkeycode(tmp.scancode, tmp.keycode);
    165                 break;
    166         }
    167         return kc;
     151  struct kbkeycode tmp;
     152  int kc = 0;
     153
     154  tmp = *user_kbkc;
     155  switch (cmd) {
     156  case KDGETKEYCODE:
     157    kc = getkeycode(tmp.scancode);
     158    if (kc >= 0)
     159      user_kbkc->keycode = kc;
     160    break;
     161  case KDSETKEYCODE:
     162    if (!perm)
     163      return -EPERM;
     164    kc = setkeycode(tmp.scancode, tmp.keycode);
     165    break;
     166  }
     167  return kc;
    168168}
    169169
     
    171171do_kdgkb_ioctl(int cmd, struct kbsentry *user_kdgkb, int perm)
    172172{
    173         return -EINVAL;
     173  return -EINVAL;
    174174}
    175175
     
    180180int vt_ioctl( unsigned int cmd, unsigned long arg)
    181181{
    182         int perm;
    183         unsigned int console;
    184         unsigned char ucval;
    185         struct kbd_struct * kbd;
     182  int perm;
     183  unsigned int console;
     184  unsigned char ucval;
     185  struct kbd_struct * kbd;
    186186
    187187   console = 0;
    188         /*
    189         * To have permissions to do most of the vt ioctls, we either have
    190         * to be the owner of the tty, or super-user.
    191         */
    192         perm = 1;
    193         kbd = kbd_table + console;
    194         switch (cmd) {
    195         case KIOCSOUND:
    196                 if (!perm)
    197                         return -EPERM;
    198                 if (arg)
    199                         arg = 1193180 / arg;
    200                 kd_mksound(arg, 0);
    201                 return 0;
    202 
    203         case KDMKTONE:
    204                 if (!perm)
    205                         return -EPERM;
    206         {
    207                 unsigned int ticks, count;
    208 
    209                 /*
    210                 * Generate the tone for the appropriate number of ticks.
    211                 * If the time is zero, turn off sound ourselves.
    212                 */
    213                 ticks = HZ * ((arg >> 16) & 0xffff) / 1000;
    214                 count = ticks ? (arg & 0xffff) : 0;
    215                 if (count)
    216                         count = 1193180 / count;
    217                 kd_mksound(count, ticks);
    218                 return 0;
    219         }
    220 
    221         case KDGKBTYPE:
    222                 /*
    223                 * this is naive.
    224                 */
    225                 ucval = keyboard_type;
    226                 goto setchar;
    227 
    228         case KDSETMODE:
    229         case KDGETMODE:
    230                 return -EINVAL;
    231 
    232         case KDSKBMODE:
    233                 if (!perm)
    234                         return -EPERM;
    235                 switch(arg) {
    236                   case K_RAW:
    237                         kbd->kbdmode = VC_RAW;
    238                         break;
    239                   case K_MEDIUMRAW:
    240                         kbd->kbdmode = VC_MEDIUMRAW;
    241                         break;
    242                   case K_XLATE:
    243                         kbd->kbdmode = VC_XLATE;
    244                         compute_shiftstate();
    245                         break;
    246                   case K_UNICODE:
    247                         kbd->kbdmode = VC_UNICODE;
    248                         compute_shiftstate();
    249                         break;
    250                   default:
    251                         return -EINVAL;
    252                 }
    253                 return 0;
    254 
    255         case KDGKBMODE:
    256                 ucval = ((kbd->kbdmode == VC_RAW) ? K_RAW :
    257                                 (kbd->kbdmode == VC_MEDIUMRAW) ? K_MEDIUMRAW :
    258                                 (kbd->kbdmode == VC_UNICODE) ? K_UNICODE :
    259                                 K_XLATE);
    260                 goto setint;
    261 
    262         /* this could be folded into KDSKBMODE, but for compatibility
    263            reasons it is not so easy to fold KDGKBMETA into KDGKBMODE */
    264         case KDSKBMETA:
    265                 switch(arg) {
    266                   case K_METABIT:
    267                         clr_vc_kbd_mode(kbd, VC_META);
    268                         break;
    269                   case K_ESCPREFIX:
    270                         set_vc_kbd_mode(kbd, VC_META);
    271                         break;
    272                   default:
    273                         return -EINVAL;
    274                 }
    275                 return 0;
    276 
    277         case KDGKBMETA:
    278                 ucval = (vc_kbd_mode(kbd, VC_META) ? K_ESCPREFIX : K_METABIT);
    279         setint:
    280                 *(int *)arg = ucval;
    281                 return 0;
    282 
    283         case KDGETKEYCODE:
    284         case KDSETKEYCODE:
    285                 return do_kbkeycode_ioctl(cmd, (struct kbkeycode *)arg, perm);
    286 
    287         case KDGKBENT:
    288         case KDSKBENT:
    289                 return do_kdsk_ioctl(cmd, (struct kbentry *)arg, perm, kbd);
    290 
    291         case KDGKBDIACR:
    292         {
    293                 struct kbdiacrs *a = (struct kbdiacrs *)arg;
    294                 a->kb_cnt = accent_table_size;
    295                 memcpy( a->kbdiacr, accent_table, accent_table_size*sizeof(struct kbdiacr) );
    296                 return 0;
    297         }
    298 
    299         case KDSKBDIACR:
    300         {
    301                 struct kbdiacrs *a = (struct kbdiacrs *)arg;
    302                 unsigned int ct;
    303 
    304                 if (!perm)
    305                         return -EPERM;
    306                 ct = a->kb_cnt;
    307                 if (ct >= MAX_DIACR)
    308                         return -EINVAL;
    309                 accent_table_size = ct;
    310                 memcpy(accent_table, a->kbdiacr, ct*sizeof(struct kbdiacr));
    311                 return 0;
    312         }
    313 
    314         /* the ioctls below read/set the flags usually shown in the leds */
    315         /* don't use them - they will go away without warning */
    316         case KDGKBLED:
    317                 ucval = kbd->ledflagstate | (kbd->default_ledflagstate << 4);
    318                 goto setchar;
    319 
    320         case KDSKBLED:
    321                 if (!perm)
    322                         return -EPERM;
    323                 if (arg & ~0x77)
    324                         return -EINVAL;
    325                 kbd->ledflagstate = (arg & 7);
    326                 kbd->default_ledflagstate = ((arg >> 4) & 7);
    327                 set_leds();
    328                 return 0;
    329 
    330         /* the ioctls below only set the lights, not the functions */
    331         /* for those, see KDGKBLED and KDSKBLED above */
    332         case KDGETLED:
    333                 ucval = getledstate();
    334         setchar:
    335                 *(char*)arg = ucval;
     188  /*
     189  * To have permissions to do most of the vt ioctls, we either have
     190  * to be the owner of the tty, or super-user.
     191  */
     192  perm = 1;
     193  kbd = kbd_table + console;
     194  switch (cmd) {
     195  case KIOCSOUND:
     196    if (!perm)
     197      return -EPERM;
     198    if (arg)
     199      arg = 1193180 / arg;
     200    kd_mksound(arg, 0);
     201    return 0;
     202
     203  case KDMKTONE:
     204    if (!perm)
     205      return -EPERM;
     206  {
     207    unsigned int ticks, count;
     208
     209    /*
     210    * Generate the tone for the appropriate number of ticks.
     211    * If the time is zero, turn off sound ourselves.
     212    */
     213    ticks = HZ * ((arg >> 16) & 0xffff) / 1000;
     214    count = ticks ? (arg & 0xffff) : 0;
     215    if (count)
     216      count = 1193180 / count;
     217    kd_mksound(count, ticks);
     218    return 0;
     219  }
     220
     221  case KDGKBTYPE:
     222    /*
     223    * this is naive.
     224    */
     225    ucval = keyboard_type;
     226    goto setchar;
     227
     228  case KDSETMODE:
     229  case KDGETMODE:
     230    return -EINVAL;
     231
     232  case KDSKBMODE:
     233    if (!perm)
     234      return -EPERM;
     235    switch(arg) {
     236      case K_RAW:
     237      kbd->kbdmode = VC_RAW;
     238      break;
     239      case K_MEDIUMRAW:
     240      kbd->kbdmode = VC_MEDIUMRAW;
     241      break;
     242      case K_XLATE:
     243      kbd->kbdmode = VC_XLATE;
     244      compute_shiftstate();
     245      break;
     246      case K_UNICODE:
     247      kbd->kbdmode = VC_UNICODE;
     248      compute_shiftstate();
     249      break;
     250      default:
     251      return -EINVAL;
     252    }
     253    return 0;
     254
     255  case KDGKBMODE:
     256    ucval = ((kbd->kbdmode == VC_RAW) ? K_RAW :
     257        (kbd->kbdmode == VC_MEDIUMRAW) ? K_MEDIUMRAW :
     258        (kbd->kbdmode == VC_UNICODE) ? K_UNICODE :
     259        K_XLATE);
     260    goto setint;
     261
     262  /* this could be folded into KDSKBMODE, but for compatibility
     263     reasons it is not so easy to fold KDGKBMETA into KDGKBMODE */
     264  case KDSKBMETA:
     265    switch(arg) {
     266      case K_METABIT:
     267      clr_vc_kbd_mode(kbd, VC_META);
     268      break;
     269      case K_ESCPREFIX:
     270      set_vc_kbd_mode(kbd, VC_META);
     271      break;
     272      default:
     273      return -EINVAL;
     274    }
     275    return 0;
     276
     277  case KDGKBMETA:
     278    ucval = (vc_kbd_mode(kbd, VC_META) ? K_ESCPREFIX : K_METABIT);
     279  setint:
     280    *(int *)arg = ucval;
     281    return 0;
     282
     283  case KDGETKEYCODE:
     284  case KDSETKEYCODE:
     285    return do_kbkeycode_ioctl(cmd, (struct kbkeycode *)arg, perm);
     286
     287  case KDGKBENT:
     288  case KDSKBENT:
     289    return do_kdsk_ioctl(cmd, (struct kbentry *)arg, perm, kbd);
     290
     291  case KDGKBDIACR:
     292  {
     293    struct kbdiacrs *a = (struct kbdiacrs *)arg;
     294    a->kb_cnt = accent_table_size;
     295    memcpy( a->kbdiacr, accent_table, accent_table_size*sizeof(struct kbdiacr) );
     296    return 0;
     297  }
     298
     299  case KDSKBDIACR:
     300  {
     301    struct kbdiacrs *a = (struct kbdiacrs *)arg;
     302    unsigned int ct;
     303
     304    if (!perm)
     305      return -EPERM;
     306    ct = a->kb_cnt;
     307    if (ct >= MAX_DIACR)
     308      return -EINVAL;
     309    accent_table_size = ct;
     310    memcpy(accent_table, a->kbdiacr, ct*sizeof(struct kbdiacr));
     311    return 0;
     312  }
     313
     314  /* the ioctls below read/set the flags usually shown in the leds */
     315  /* don't use them - they will go away without warning */
     316  case KDGKBLED:
     317    ucval = kbd->ledflagstate | (kbd->default_ledflagstate << 4);
     318    goto setchar;
     319
     320  case KDSKBLED:
     321    if (!perm)
     322      return -EPERM;
     323    if (arg & ~0x77)
     324      return -EINVAL;
     325    kbd->ledflagstate = (arg & 7);
     326    kbd->default_ledflagstate = ((arg >> 4) & 7);
     327    set_leds();
     328    return 0;
     329
     330  /* the ioctls below only set the lights, not the functions */
     331  /* for those, see KDGKBLED and KDSKBLED above */
     332  case KDGETLED:
     333    ucval = getledstate();
     334  setchar:
     335    *(char*)arg = ucval;
    336336      return 0;
    337337
    338         case KDSETLED:
    339                 if (!perm)
    340                   return -EPERM;
    341                 setledstate(kbd, arg);
    342                 return 0;
    343 
    344         default:
    345                 return -EINVAL;
    346         }
    347 }
     338  case KDSETLED:
     339    if (!perm)
     340      return -EPERM;
     341    setledstate(kbd, arg);
     342    return 0;
     343
     344  default:
     345    return -EINVAL;
     346  }
     347}
Note: See TracChangeset for help on using the changeset viewer.