<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>UbixOS V2: src/sys/isa/atkbd.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.7 --> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="classes.html"><span>Data Structures</span></a></li> <li id="current"><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li> <form action="search.php" method="get"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td><label> <u>S</u>earch for </label></td> <td><input type="text" name="query" value="" size="20" accesskey="s"/></td> </tr> </table> </form> </li> </ul></div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div> <div class="nav"> <a class="el" href="dir_897b6a2d7bab147dd1db58381aad3984.html">src</a> » <a class="el" href="dir_832905b1f7f5feaf61a306b40c0ac817.html">sys</a> » <a class="el" href="dir_2f8fc94d4f17c865dd63167e45dee9cf.html">isa</a></div> <h1>atkbd.c File Reference</h1> <p> <code>#include <<a class="el" href="atkbd_8h-source.html">isa/atkbd.h</a>></code><br> <code>#include <<a class="el" href="8259_8h-source.html">isa/8259.h</a>></code><br> <code>#include <<a class="el" href="video_8h-source.html">sys/video.h</a>></code><br> <code>#include <<a class="el" href="idt_8h-source.html">sys/idt.h</a>></code><br> <code>#include <<a class="el" href="gdt_8h-source.html">sys/gdt.h</a>></code><br> <code>#include <<a class="el" href="io_8h-source.html">sys/io.h</a>></code><br> <code>#include <<a class="el" href="kmalloc_8h-source.html">lib/kmalloc.h</a>></code><br> <code>#include <<a class="el" href="kprintf_8h-source.html">lib/kprintf.h</a>></code><br> <code>#include <<a class="el" href="include_2ubixos_2types_8h-source.html">ubixos/types.h</a>></code><br> <code>#include <<a class="el" href="sched_8h-source.html">ubixos/sched.h</a>></code><br> <code>#include <<a class="el" href="endtask_8h-source.html">ubixos/endtask.h</a>></code><br> <code>#include <<a class="el" href="tty_8h-source.html">ubixos/tty.h</a>></code><br> <code>#include <<a class="el" href="spinlock_8h-source.html">ubixos/spinlock.h</a>></code><br> <p> <a href="atkbd_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#fc622530815adb3689baa71a13f61d6e">asm</a> (".globl atkbd_isr \n""atkbd_isr: \n"" pusha \n"" push %ss \n"" push %ds \n"" push %es \n"" push %<a class="el" href="structfs.html">fs</a> \n"" push %gs \n"" call keyboardHandler \n"" <a class="el" href="ap-boot_8S.html#ede772866220799485f4da9fc06e759d">mov</a> $0x20,%dx \n"" mov $0x20,%ax \n"" outb %al,%dx \n"" pop %gs \n"" pop %fs \n"" pop %es \n"" pop %ds \n"" pop %ss \n"" popa \n"" iret \n")</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#d67d988f6347d52a6dc9f28992521e37">atkbd_init</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#55bc6540b1b12c4eb0dd00877a2d68c5">atkbd_scan</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#9e32494b8c0797b73c41a50c698f0c04">getch</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#0a638d89ef3b126799ec1503c743a723">keyboardHandler</a> ()</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#75680b4d84b721b03a3454677758a21e">setLED</a> ()</td></tr> <tr><td colspan="2"><br><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#50761f7ef363e84e749457be8bf78eeb">atkbdSpinLock</a> = SPIN_LOCK_INITIALIZER</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#2ddb1c4b7754cef86c195c18c02179bc">controlKeys</a> = 0x0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#eaa34e9c084c565217b4345bc956757b">keyboardMap</a> [255][8]</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#2e46ce87b96fbf716a81841212705273">keyMap</a> = 0x0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#edc2079705488fa79315aa8d6eb336f7">ledStatus</a> = 0x0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#c6bb52f207cbdd0b9d2cf79efb5863b0">stdinBuffer</a> [512]</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="include_2ubixos_2types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="atkbd_8c.html#c33139c9cf451e903c587a3cc29cca30">stdinSize</a></td></tr> </table> <hr><h2>Function Documentation</h2> <a class="anchor" name="fc622530815adb3689baa71a13f61d6e"></a><!-- doxytag: member="atkbd.c::asm" ref="fc622530815adb3689baa71a13f61d6e" args="(".globl atkbd_isr \n""atkbd_isr: \n"" pusha \n"" push %ss \n"" push %ds \n"" push %es \n"" push %fs \n"" push %gs \n"" call keyboardHandler \n"" mov $0x20,%dx \n"" mov $0x20,%ax \n"" outb %al,%dx \n"" pop %gs \n"" pop %fs \n"" pop %es \n"" pop %ds \n"" pop %ss \n"" popa \n"" iret \n")" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">asm </td> <td>(</td> <td class="paramtype">".globl atkbd_isr \n""atkbd_isr: \n"" pusha \n"" push %ss \n"" push %ds \n"" push %es \n"" push %<a class="el" href="structfs.html">fs</a> \n"" push %gs \n"" call keyboardHandler \n"" <a class="el" href="ap-boot_8S.html#ede772866220799485f4da9fc06e759d">mov</a> $ </td> <td class="paramname"> <em>0x20</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">%dx\n""<a class="el" href="ap-boot_8S.html#ede772866220799485f4da9fc06e759d">mov</a> $ </td> <td class="paramname"> <em>0x20</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">%<a class="el" href="ap-boot_8S.html#08d253679ac458c016096d60a93f93b3">ax</a>\n""outb% </td> <td class="paramname"> <em>al</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">%dx\n""pop%gs\n""pop%<a class="el" href="structfs.html">fs</a>\n""pop%es\n""pop%ds\n""pop%ss\n""popa\n""iret\n" </td> <td class="paramname"></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="d67d988f6347d52a6dc9f28992521e37"></a><!-- doxytag: member="atkbd.c::atkbd_init" ref="d67d988f6347d52a6dc9f28992521e37" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int atkbd_init </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00155">155</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> References <a class="el" href="atkbd_8h.html#583a241acfdbcbe82f25db0f95b0c92d">atkbd_isr()</a>, <a class="el" href="atkbd_8c-source.html#l00201">atkbd_scan()</a>, <a class="el" href="gdt_8h-source.html#l00047">dDpl0</a>, <a class="el" href="gdt_8h-source.html#l00037">dInt</a>, <a class="el" href="gdt_8h-source.html#l00048">dPresent</a>, <a class="el" href="8259_8c-source.html#l00075">irqEnable()</a>, <a class="el" href="kprintf_8c-source.html#l00038">kprintf()</a>, <a class="el" href="8259_8h-source.html#l00042">mVec</a>, <a class="el" href="atkbd_8c-source.html#l00319">setLED()</a>, <a class="el" href="idt_8c-source.html#l00156">setVector()</a>, <a class="el" href="atkbd_8c-source.html#l00048">stdinBuffer</a>, and <a class="el" href="ap-boot_8S-source.html#l00006">x1</a>. </div> </div><p> <a class="anchor" name="55bc6540b1b12c4eb0dd00877a2d68c5"></a><!-- doxytag: member="atkbd.c::atkbd_scan" ref="55bc6540b1b12c4eb0dd00877a2d68c5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int atkbd_scan </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00201">201</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> References <a class="el" href="io_8c-source.html#l00039">inportByte()</a>, and <a class="el" href="io_8c-source.html#l00073">outportByte()</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00155">atkbd_init()</a>, and <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="9e32494b8c0797b73c41a50c698f0c04"></a><!-- doxytag: member="atkbd.c::getch" ref="9e32494b8c0797b73c41a50c698f0c04" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned char getch </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00327">327</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> References <a class="el" href="tty_8h-source.html#l00044">tty_termNode::stdin</a>, <a class="el" href="atkbd_8c-source.html#l00048">stdinBuffer</a>, <a class="el" href="tty_8h-source.html#l00045">tty_termNode::stdinSize</a>, <a class="el" href="atkbd_8c-source.html#l00049">stdinSize</a>, <a class="el" href="tty_8c-source.html#l00039">tty_foreground</a>, and <a class="el" href="ap-boot_8S-source.html#l00006">x1</a>. <p> Referenced by <a class="el" href="file_8c-source.html#l00059">sysFgetc()</a>. </div> </div><p> <a class="anchor" name="0a638d89ef3b126799ec1503c743a723"></a><!-- doxytag: member="atkbd.c::keyboardHandler" ref="0a638d89ef3b126799ec1503c743a723" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void keyboardHandler </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00214">214</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> References <a class="el" href="atkbd_8h-source.html#l00035">altKey</a>, <a class="el" href="atkbd_8c-source.html#l00201">atkbd_scan()</a>, <a class="el" href="atkbd_8c-source.html#l00052">atkbdSpinLock</a>, <a class="el" href="video_8c-source.html#l00040">backSpace()</a>, <a class="el" href="atkbd_8h-source.html#l00034">controlKey</a>, <a class="el" href="atkbd_8c-source.html#l00050">controlKeys</a>, <a class="el" href="io_8c-source.html#l00039">inportByte()</a>, <a class="el" href="atkbd_8c-source.html#l00054">keyboardMap</a>, <a class="el" href="atkbd_8c-source.html#l00046">keyMap</a>, <a class="el" href="kprintf_8c-source.html#l00038">kprintf()</a>, <a class="el" href="atkbd_8h-source.html#l00038">ledCapslock</a>, <a class="el" href="atkbd_8h-source.html#l00036">ledNumlock</a>, <a class="el" href="atkbd_8h-source.html#l00037">ledScrolllock</a>, <a class="el" href="atkbd_8c-source.html#l00047">ledStatus</a>, <a class="el" href="io_8c-source.html#l00073">outportByte()</a>, <a class="el" href="atkbd_8c-source.html#l00319">setLED()</a>, <a class="el" href="atkbd_8h-source.html#l00033">shiftKey</a>, <a class="el" href="spinlock_8c-source.html#l00048">spinTryLock()</a>, <a class="el" href="spinlock_8c-source.html#l00037">spinUnlock()</a>, <a class="el" href="tty_8h-source.html#l00044">tty_termNode::stdin</a>, <a class="el" href="atkbd_8c-source.html#l00048">stdinBuffer</a>, <a class="el" href="tty_8h-source.html#l00045">tty_termNode::stdinSize</a>, <a class="el" href="atkbd_8c-source.html#l00049">stdinSize</a>, <a class="el" href="tty_8c-source.html#l00087">tty_change()</a>, and <a class="el" href="tty_8c-source.html#l00039">tty_foreground</a>. </div> </div><p> <a class="anchor" name="75680b4d84b721b03a3454677758a21e"></a><!-- doxytag: member="atkbd.c::setLED" ref="75680b4d84b721b03a3454677758a21e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void setLED </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00319">319</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> References <a class="el" href="io_8c-source.html#l00039">inportByte()</a>, <a class="el" href="atkbd_8c-source.html#l00047">ledStatus</a>, and <a class="el" href="io_8c-source.html#l00073">outportByte()</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00155">atkbd_init()</a>, and <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <hr><h2>Variable Documentation</h2> <a class="anchor" name="50761f7ef363e84e749457be8bf78eeb"></a><!-- doxytag: member="atkbd.c::atkbdSpinLock" ref="50761f7ef363e84e749457be8bf78eeb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="spinlock_8h.html#a240e9404b4ede1e0d714610080d1176">spinLock_t</a> <a class="el" href="atkbd_8c.html#50761f7ef363e84e749457be8bf78eeb">atkbdSpinLock</a> = SPIN_LOCK_INITIALIZER<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00052">52</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="2ddb1c4b7754cef86c195c18c02179bc"></a><!-- doxytag: member="atkbd.c::controlKeys" ref="2ddb1c4b7754cef86c195c18c02179bc" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ubixfsv2_2types_8h.html#5847ea0262a5aa61eee48cbe95544a78">uInt32</a> <a class="el" href="atkbd_8c.html#2ddb1c4b7754cef86c195c18c02179bc">controlKeys</a> = 0x0<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00050">50</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="eaa34e9c084c565217b4345bc956757b"></a><!-- doxytag: member="atkbd.c::keyboardMap" ref="eaa34e9c084c565217b4345bc956757b" args="[255][8]" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="atkbd_8c.html#eaa34e9c084c565217b4345bc956757b">keyboardMap</a>[255][8]<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00054">54</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="2e46ce87b96fbf716a81841212705273"></a><!-- doxytag: member="atkbd.c::keyMap" ref="2e46ce87b96fbf716a81841212705273" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="atkbd_8c.html#2e46ce87b96fbf716a81841212705273">keyMap</a> = 0x0<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00046">46</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="edc2079705488fa79315aa8d6eb336f7"></a><!-- doxytag: member="atkbd.c::ledStatus" ref="edc2079705488fa79315aa8d6eb336f7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">unsigned int <a class="el" href="atkbd_8c.html#edc2079705488fa79315aa8d6eb336f7">ledStatus</a> = 0x0<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00047">47</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>, and <a class="el" href="atkbd_8c-source.html#l00319">setLED()</a>. </div> </div><p> <a class="anchor" name="c6bb52f207cbdd0b9d2cf79efb5863b0"></a><!-- doxytag: member="atkbd.c::stdinBuffer" ref="c6bb52f207cbdd0b9d2cf79efb5863b0" args="[512]" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char <a class="el" href="atkbd_8c.html#c6bb52f207cbdd0b9d2cf79efb5863b0">stdinBuffer</a>[512]<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00048">48</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00155">atkbd_init()</a>, <a class="el" href="atkbd_8c-source.html#l00327">getch()</a>, and <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <a class="anchor" name="c33139c9cf451e903c587a3cc29cca30"></a><!-- doxytag: member="atkbd.c::stdinSize" ref="c33139c9cf451e903c587a3cc29cca30" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="include_2ubixos_2types_8h.html#3b65128d2644e9b80cec9a69bfa7e094">uInt16</a> <a class="el" href="atkbd_8c.html#c33139c9cf451e903c587a3cc29cca30">stdinSize</a><code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p> Definition at line <a class="el" href="atkbd_8c-source.html#l00049">49</a> of file <a class="el" href="atkbd_8c-source.html">atkbd.c</a>. <p> Referenced by <a class="el" href="atkbd_8c-source.html#l00327">getch()</a>, and <a class="el" href="atkbd_8c-source.html#l00214">keyboardHandler()</a>. </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on Tue Dec 5 09:28:06 2006 for UbixOS V2 by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address> </body> </html>