מעקב אחרי קריאת קלט - חלק עליון

  • תוכנית משתמש מבצעת getc(CONSOLE).
  • הפונקציה הכללית getc() משתמשת במציין CONSOLE וקוראת לפונקצית הקלט המתאימה הנמצאת באינדקס זה בטבלה devtab[] - ttygetc().
  • הפונקציה ttygetc() מקבלת כפרמטר מצביע לכניסה בטבלת ה-devtab[] ומוצאת על פי

    ה-dvminor את הכניסה המתאימה בטבלה ה-tty[]. בכניסה זו נמצאים כל הנתונים הקשורים לקלט/פלט של התווים.
  • התוכנית מחכה (על ידי wait) לתו בחוצץ הקלט. (ה-signal יגיע מתהליך הקלט - ttyiproc).
  • התוכנית מוציאה תו מחוצץ הקלט ומחזירה אותו למשתמש.

ttygetc(devptr)

struct devsw  *devptr;

{

       int    ps;

       char   ch;

       struct tty   *iptr;

       disable(ps);

       iptr = &tty[devptr->dvminor];

       wait(iptr->isem);          /* wait for a character in buff   */

       ch = iptr->ibuff[iptr->itail++];

       --iptr->icnt;

       if (iptr->itail      >= IBUFLEN)

              iptr->itail = 0;

       restore(ps);

       return(ch);

}

תגיות המסמך:

מאת: באסל

תודה

הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.
שיתוף:
| עוד