Changeset b74959bd in mainline for uspace/srv/fb/sysio.c


Ignore:
Timestamp:
2007-11-20T21:33:32Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8498915
Parents:
3209923
Message:

Modify ipc_answer_*() to make use of all six syscall arguments. The recommended
means of answering calls is via the ipc_answer_m() macros (where m denotes the
number of return arguments) that automatically decide between the fast register
version or the slow universal version of ipc_answer().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fb/sysio.c

    r3209923 rb74959bd  
    118118
    119119        if (client_connected) {
    120                 ipc_answer_fast(iid, ELIMIT, 0,0);
     120                ipc_answer_0(iid, ELIMIT);
    121121                return;
    122122        }
    123123       
    124124        client_connected = 1;
    125         ipc_answer_fast(iid, 0, 0, 0); /* Accept connection */
     125        ipc_answer_0(iid, EOK); /* Accept connection */
    126126        while (1) {
    127127                callid = async_get_call(&call);
    128128                switch (IPC_GET_METHOD(call)) {
    129                         case IPC_M_PHONE_HUNGUP:
    130                                 client_connected = 0;
    131                                 ipc_answer_fast(callid, 0, 0, 0);
    132                                 return; /* Exit thread */
    133                         case FB_PUTCHAR:
    134                                 c = IPC_GET_ARG1(call);
    135                                 newrow = IPC_GET_ARG2(call);
    136                                 newcol = IPC_GET_ARG3(call);
    137                                 if ((lastcol != newcol) || (lastrow != newrow))
    138                                         curs_goto(newrow, newcol);
    139                                 lastcol = newcol + 1;
    140                                 lastrow = newrow;
    141                                 sysput(c);
    142                                 retval = 0;
     129                case IPC_M_PHONE_HUNGUP:
     130                        client_connected = 0;
     131                        ipc_answer_0(callid, EOK);
     132                        return; /* Exit thread */
     133                case FB_PUTCHAR:
     134                        c = IPC_GET_ARG1(call);
     135                        newrow = IPC_GET_ARG2(call);
     136                        newcol = IPC_GET_ARG3(call);
     137                        if ((lastcol != newcol) || (lastrow != newrow))
     138                                curs_goto(newrow, newcol);
     139                        lastcol = newcol + 1;
     140                        lastrow = newrow;
     141                        sysput(c);
     142                        retval = 0;
     143                        break;
     144                case FB_CURSOR_GOTO:
     145                        newrow = IPC_GET_ARG1(call);
     146                        newcol = IPC_GET_ARG2(call);
     147                        curs_goto(newrow, newcol);
     148                        lastrow = newrow;
     149                        lastcol = newcol;
     150                        retval = 0;
     151                        break;
     152                case FB_GET_CSIZE:
     153                        ipc_answer_2(callid, EOK, HEIGHT, WIDTH);
     154                        continue;
     155                case FB_CLEAR:
     156                        clrscr();
     157                        retval = 0;
     158                        break;
     159                case FB_SET_STYLE:
     160                        fgcolor = IPC_GET_ARG1(call);
     161                        bgcolor = IPC_GET_ARG2(call);
     162                        if (fgcolor < bgcolor)
     163                                set_style(0);
     164                        else
     165                                set_style(7);
     166                        retval = 0;
     167                        break;
     168                case FB_SCROLL:
     169                        i = IPC_GET_ARG1(call);
     170                        if ((i > HEIGHT) || (i < -HEIGHT)) {
     171                                retval = EINVAL;
    143172                                break;
    144                         case FB_CURSOR_GOTO:
    145                                 newrow = IPC_GET_ARG1(call);
    146                                 newcol = IPC_GET_ARG2(call);
    147                                 curs_goto(newrow, newcol);
    148                                 lastrow = newrow;
    149                                 lastcol = newcol;
    150                                 retval = 0;
    151                                 break;
    152                         case FB_GET_CSIZE:
    153                                 ipc_answer_fast(callid, 0, HEIGHT, WIDTH);
    154                                 continue;
    155                         case FB_CLEAR:
    156                                 clrscr();
    157                                 retval = 0;
    158                                 break;
    159                         case FB_SET_STYLE:
    160                                 fgcolor = IPC_GET_ARG1(call);
    161                                 bgcolor = IPC_GET_ARG2(call);
    162                                 if (fgcolor < bgcolor)
    163                                         set_style(0);
    164                                 else
    165                                         set_style(7);
    166                                 retval = 0;
    167                                 break;
    168                         case FB_SCROLL:
    169                                 i = IPC_GET_ARG1(call);
    170                                 if ((i > HEIGHT) || (i < -HEIGHT)) {
    171                                         retval = EINVAL;
    172                                         break;
    173                                 }
    174                                 scroll(i);
    175                                 curs_goto(lastrow, lastcol);
    176                                 retval = 0;
    177                                 break;
    178                         default:
    179                                 retval = ENOENT;
     173                        }
     174                        scroll(i);
     175                        curs_goto(lastrow, lastcol);
     176                        retval = 0;
     177                        break;
     178                default:
     179                        retval = ENOENT;
    180180                }
    181181               
    182                 ipc_answer_fast(callid, retval, 0, 0);
     182                ipc_answer_0(callid, retval);
    183183        }
    184184}
Note: See TracChangeset for help on using the changeset viewer.