Changeset b74959bd in mainline for uspace/srv/vfs


Ignore:
Timestamp:
2007-11-20T21:33:32Z (18 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().

Location:
uspace/srv/vfs
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs.c

    r3209923 rb74959bd  
    6060         * This call needs to be answered.
    6161         */
    62         ipc_answer_fast_0(iid, EOK);
     62        ipc_answer_0(iid, EOK);
    6363
    6464        /*
     
    104104                case VFS_RENAME:
    105105                default:
    106                         ipc_answer_fast_0(callid, ENOTSUP);
     106                        ipc_answer_0(callid, ENOTSUP);
    107107                        break;
    108108                }
  • uspace/srv/vfs/vfs_mount.c

    r3209923 rb74959bd  
    8585         */
    8686        ipc_callid_t callid;
    87         ipc_call_t call;
    8887        size_t size;
    89         if (!ipc_data_receive(&callid, &call, NULL, &size)) {
    90                 ipc_answer_fast_0(callid, EINVAL);
    91                 ipc_answer_fast_0(rid, EINVAL);
     88        if (!ipc_data_receive(&callid, NULL, &size)) {
     89                ipc_answer_0(callid, EINVAL);
     90                ipc_answer_0(rid, EINVAL);
    9291                return;
    9392        }
     
    10099        if ((size < FS_NAME_MAXLEN + 1) ||
    101100            (size > FS_NAME_MAXLEN + MAX_PATH_LEN)) {
    102                 ipc_answer_fast_0(callid, EINVAL);
    103                 ipc_answer_fast_0(rid, EINVAL);
     101                ipc_answer_0(callid, EINVAL);
     102                ipc_answer_0(rid, EINVAL);
    104103                return;
    105104        }
     
    111110        buf = malloc(size);
    112111        if (!buf) {
    113                 ipc_answer_fast_0(callid, ENOMEM);
    114                 ipc_answer_fast_0(rid, ENOMEM);
     112                ipc_answer_0(callid, ENOMEM);
     113                ipc_answer_0(rid, ENOMEM);
    115114                return;
    116115        }
     
    119118         * Deliver the data.
    120119         */
    121         (void) ipc_data_deliver(callid, &call, buf, size);
     120        (void) ipc_data_deliver(callid, buf, size);
    122121
    123122        char fs_name[FS_NAME_MAXLEN + 1];
     
    132131        if (!fs_handle) {
    133132                free(buf);
    134                 ipc_answer_fast_0(rid, ENOENT);
     133                ipc_answer_0(rid, ENOENT);
    135134                return;
    136135        }
     
    147146        if (rc != EOK) {
    148147                free(buf);
    149                 ipc_answer_fast_0(rid, rc);
     148                ipc_answer_0(rid, rc);
    150149                return;
    151150        }
     
    153152        if (!mr_node) {
    154153                free(buf);
    155                 ipc_answer_fast_0(rid, ENOMEM);
     154                ipc_answer_0(rid, ENOMEM);
    156155                return;
    157156        }
     
    177176                        vfs_node_put(mr_node);  /* failed -> drop reference */
    178177                        free(buf);
    179                         ipc_answer_fast_0(rid, rc);
     178                        ipc_answer_0(rid, rc);
    180179                        return;
    181180                }
     
    186185                        vfs_node_put(mr_node);  /* failed -> drop reference */
    187186                        free(buf);
    188                         ipc_answer_fast_0(rid, ENOMEM);
     187                        ipc_answer_0(rid, ENOMEM);
    189188                        return;
    190189                }
     
    207206                        futex_up(&rootfs_futex);
    208207                        free(buf);
    209                         ipc_answer_fast_0(rid, EOK);
     208                        ipc_answer_0(rid, EOK);
    210209                        return;
    211210                } else {
     
    217216                        free(buf);
    218217                        vfs_node_put(mr_node);  /* failed -> drop reference */
    219                         ipc_answer_fast_0(rid, ENOENT);
     218                        ipc_answer_0(rid, ENOENT);
    220219                        return;
    221220                }
     
    255254       
    256255        if (rc2 == EOK)
    257                 ipc_answer_fast_0(rid, rc1);
     256                ipc_answer_0(rid, rc1);
    258257        else if (rc1 == EOK)
    259                 ipc_answer_fast_0(rid, rc2);
     258                ipc_answer_0(rid, rc2);
    260259        else
    261                 ipc_answer_fast_0(rid, rc1);
     260                ipc_answer_0(rid, rc1);
    262261}
    263262
  • uspace/srv/vfs/vfs_open.c

    r3209923 rb74959bd  
    4747{
    4848        if (!vfs_files_init()) {
    49                 ipc_answer_fast_0(rid, ENOMEM);
     49                ipc_answer_0(rid, ENOMEM);
    5050                return;
    5151        }
     
    6161
    6262        ipc_callid_t callid;
    63         ipc_call_t call;
    6463
    65         if (!ipc_data_receive(&callid, &call, NULL, &size)) {
    66                 ipc_answer_fast_0(callid, EINVAL);
    67                 ipc_answer_fast_0(rid, EINVAL);
     64        if (!ipc_data_receive(&callid, NULL, &size)) {
     65                ipc_answer_0(callid, EINVAL);
     66                ipc_answer_0(rid, EINVAL);
    6867                return;
    6968        }
     
    7877       
    7978        if (!path) {
    80                 ipc_answer_fast_0(callid, ENOMEM);
    81                 ipc_answer_fast_0(rid, ENOMEM);
     79                ipc_answer_0(callid, ENOMEM);
     80                ipc_answer_0(rid, ENOMEM);
    8281                return;
    8382        }
    8483
    8584        int rc;
    86         if ((rc = ipc_data_deliver(callid, &call, path, size))) {
    87                 ipc_answer_fast_0(rid, rc);
     85        if ((rc = ipc_data_deliver(callid, path, size))) {
     86                ipc_answer_0(rid, rc);
    8887                free(path);
    8988                return;
     
    104103        if (rc) {
    105104                futex_up(&unlink_futex);
    106                 ipc_answer_fast_0(rid, rc);
     105                ipc_answer_0(rid, rc);
    107106                free(path);
    108107                return;
     
    124123        if (fd < 0) {
    125124                vfs_node_put(node);
    126                 ipc_answer_fast_0(rid, fd);
     125                ipc_answer_0(rid, fd);
    127126                return;
    128127        }
     
    143142         * Success! Return the new file descriptor to the client.
    144143         */
    145         ipc_answer_fast_1(rid, EOK, fd);
     144        ipc_answer_1(rid, EOK, fd);
    146145}
    147146
  • uspace/srv/vfs/vfs_register.c

    r3209923 rb74959bd  
    156156         * VFS info structure from the client FS.
    157157         */
    158         if (!ipc_data_receive(&callid, &call, NULL, &size)) {
     158        if (!ipc_data_receive(&callid, NULL, &size)) {
    159159                /*
    160160                 * The client doesn't obey the same protocol as we do.
    161161                 */
    162162                dprintf("Receiving of VFS info failed.\n");
    163                 ipc_answer_fast_0(callid, EINVAL);
    164                 ipc_answer_fast_0(rid, EINVAL);
     163                ipc_answer_0(callid, EINVAL);
     164                ipc_answer_0(rid, EINVAL);
    165165                return;
    166166        }
     
    178178                 */
    179179                dprintf("Received VFS info has bad size.\n");
    180                 ipc_answer_fast_0(callid, EINVAL);
    181                 ipc_answer_fast_0(rid, EINVAL);
     180                ipc_answer_0(callid, EINVAL);
     181                ipc_answer_0(rid, EINVAL);
    182182                return;
    183183        }
     
    190190        if (!fs_info) {
    191191                dprintf("Could not allocate memory for FS info.\n");
    192                 ipc_answer_fast_0(callid, ENOMEM);
    193                 ipc_answer_fast_0(rid, ENOMEM);
     192                ipc_answer_0(callid, ENOMEM);
     193                ipc_answer_0(rid, ENOMEM);
    194194                return;
    195195        }
    196196        link_initialize(&fs_info->fs_link);
    197197               
    198         rc = ipc_data_deliver(callid, &call, &fs_info->vfs_info, size);
     198        rc = ipc_data_deliver(callid, &fs_info->vfs_info, size);
    199199        if (rc != EOK) {
    200200                dprintf("Failed to deliver the VFS info into our AS, rc=%d.\n",
    201201                    rc);
    202202                free(fs_info);
    203                 ipc_answer_fast_0(callid, rc);
    204                 ipc_answer_fast_0(rid, rc);
     203                ipc_answer_0(callid, rc);
     204                ipc_answer_0(rid, rc);
    205205                return;
    206206        }
     
    210210        if (!vfs_info_sane(&fs_info->vfs_info)) {
    211211                free(fs_info);
    212                 ipc_answer_fast_0(callid, EINVAL);
    213                 ipc_answer_fast_0(rid, EINVAL);
     212                ipc_answer_0(callid, EINVAL);
     213                ipc_answer_0(rid, EINVAL);
    214214                return;
    215215        }
     
    227227                futex_up(&fs_head_futex);
    228228                free(fs_info);
    229                 ipc_answer_fast_0(callid, EEXISTS);
    230                 ipc_answer_fast_0(rid, EEXISTS);
     229                ipc_answer_0(callid, EEXISTS);
     230                ipc_answer_0(rid, EEXISTS);
    231231                return;
    232232        }
     
    249249                futex_up(&fs_head_futex);
    250250                free(fs_info);
    251                 ipc_answer_fast_0(callid, EINVAL);
    252                 ipc_answer_fast_0(rid, EINVAL);
     251                ipc_answer_0(callid, EINVAL);
     252                ipc_answer_0(rid, EINVAL);
    253253                return;
    254254        }
    255255        fs_info->phone = IPC_GET_ARG3(call);
    256         ipc_answer_fast_0(callid, EOK);
     256        ipc_answer_0(callid, EOK);
    257257
    258258        dprintf("Callback connection to FS created.\n");
     
    268268                ipc_hangup(fs_info->phone);
    269269                free(fs_info);
    270                 ipc_answer_fast_0(callid, EINVAL);
    271                 ipc_answer_fast_0(rid, EINVAL);
     270                ipc_answer_0(callid, EINVAL);
     271                ipc_answer_0(rid, EINVAL);
    272272                return;
    273273        }
     
    283283                ipc_hangup(fs_info->phone);
    284284                free(fs_info);
    285                 ipc_answer_fast_0(callid, EINVAL);
    286                 ipc_answer_fast_0(rid, EINVAL);
     285                ipc_answer_0(callid, EINVAL);
     286                ipc_answer_0(rid, EINVAL);
    287287                return;
    288288        }
     
    291291         * Commit to read-only sharing the PLB with the client.
    292292         */
    293         ipc_answer_fast(callid, EOK, (ipcarg_t) plb,
     293        ipc_answer_2(callid, EOK, (ipcarg_t) plb,
    294294            (ipcarg_t) (AS_AREA_READ | AS_AREA_CACHEABLE));     
    295295
     
    302302         */
    303303        fs_info->fs_handle = (int) atomic_postinc(&fs_handle_next);
    304         ipc_answer_fast_1(rid, EOK, (ipcarg_t) fs_info->fs_handle);
     304        ipc_answer_1(rid, EOK, (ipcarg_t) fs_info->fs_handle);
    305305       
    306306        futex_up(&fs_head_futex);
Note: See TracChangeset for help on using the changeset viewer.