Changeset 77f0a1d in mainline for uspace/lib/fs/libfs.c


Ignore:
Timestamp:
2018-03-22T22:54:52Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eed4139
Parents:
a46e56b
Message:

Get rid of rid in favor of req_handle

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fs/libfs.c

    ra46e56b r77f0a1d  
    5858        ((rc1) == EOK ? (rc2) : (rc1))
    5959
    60 #define answer_and_return(rid, rc) \
     60#define answer_and_return(chandle, rc) \
    6161        do { \
    62                 async_answer_0((rid), (rc)); \
     62                async_answer_0((chandle), (rc)); \
    6363                return; \
    6464        } while (0)
     
    7575static void libfs_lookup(libfs_ops_t *, fs_handle_t, cap_call_handle_t,
    7676    ipc_call_t *);
    77 static void libfs_stat(libfs_ops_t *, fs_handle_t, cap_call_handle_t, ipc_call_t *);
     77static void libfs_stat(libfs_ops_t *, fs_handle_t, cap_call_handle_t,
     78    ipc_call_t *);
    7879static void libfs_open_node(libfs_ops_t *, fs_handle_t, cap_call_handle_t,
    7980    ipc_call_t *);
     
    8182    ipc_call_t *);
    8283
    83 static void vfs_out_fsprobe(cap_call_handle_t rid, ipc_call_t *req)
     84static void vfs_out_fsprobe(cap_call_handle_t req_handle, ipc_call_t *req)
    8485{
    8586        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    9293            (size != sizeof(info))) {
    9394                async_answer_0(chandle, EIO);
    94                 async_answer_0(rid, EIO);
     95                async_answer_0(req_handle, EIO);
    9596                return;
    9697        }
     
    100101        if (rc != EOK) {
    101102                async_answer_0(chandle, EIO);
    102                 async_answer_0(rid, rc);
     103                async_answer_0(req_handle, rc);
    103104                return;
    104105        }
    105106
    106107        async_data_read_finalize(chandle, &info, sizeof(info));
    107         async_answer_0(rid, EOK);
    108 }
    109 
    110 static void vfs_out_mounted(cap_call_handle_t rid, ipc_call_t *req)
     108        async_answer_0(req_handle, EOK);
     109}
     110
     111static void vfs_out_mounted(cap_call_handle_t req_handle, ipc_call_t *req)
    111112{
    112113        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    117118        rc = async_data_write_accept((void **) &opts, true, 0, 0, 0, NULL);
    118119        if (rc != EOK) {
    119                 async_answer_0(rid, rc);
     120                async_answer_0(req_handle, rc);
    120121                return;
    121122        }
     
    125126        rc = vfs_out_ops->mounted(service_id, opts, &index, &size);
    126127
    127         if (rc == EOK)
    128                 async_answer_3(rid, EOK, index, LOWER32(size), UPPER32(size));
    129         else
    130                 async_answer_0(rid, rc);
     128        if (rc == EOK) {
     129                async_answer_3(req_handle, EOK, index, LOWER32(size),
     130                    UPPER32(size));
     131        } else
     132                async_answer_0(req_handle, rc);
    131133
    132134        free(opts);
    133135}
    134136
    135 static void vfs_out_unmounted(cap_call_handle_t rid, ipc_call_t *req)
     137static void vfs_out_unmounted(cap_call_handle_t req_handle, ipc_call_t *req)
    136138{
    137139        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    140142        rc = vfs_out_ops->unmounted(service_id);
    141143
    142         async_answer_0(rid, rc);
    143 }
    144 
    145 static void vfs_out_link(cap_call_handle_t rid, ipc_call_t *req)
    146 {
    147         libfs_link(libfs_ops, reg.fs_handle, rid, req);
    148 }
    149 
    150 static void vfs_out_lookup(cap_call_handle_t rid, ipc_call_t *req)
    151 {
    152         libfs_lookup(libfs_ops, reg.fs_handle, rid, req);
    153 }
    154 
    155 static void vfs_out_read(cap_call_handle_t rid, ipc_call_t *req)
     144        async_answer_0(req_handle, rc);
     145}
     146
     147static void vfs_out_link(cap_call_handle_t req_handle, ipc_call_t *req)
     148{
     149        libfs_link(libfs_ops, reg.fs_handle, req_handle, req);
     150}
     151
     152static void vfs_out_lookup(cap_call_handle_t req_handle, ipc_call_t *req)
     153{
     154        libfs_lookup(libfs_ops, reg.fs_handle, req_handle, req);
     155}
     156
     157static void vfs_out_read(cap_call_handle_t req_handle, ipc_call_t *req)
    156158{
    157159        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    165167
    166168        if (rc == EOK)
    167                 async_answer_1(rid, EOK, rbytes);
     169                async_answer_1(req_handle, EOK, rbytes);
    168170        else
    169                 async_answer_0(rid, rc);
    170 }
    171 
    172 static void vfs_out_write(cap_call_handle_t rid, ipc_call_t *req)
     171                async_answer_0(req_handle, rc);
     172}
     173
     174static void vfs_out_write(cap_call_handle_t req_handle, ipc_call_t *req)
    173175{
    174176        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    183185
    184186        if (rc == EOK) {
    185                 async_answer_3(rid, EOK, wbytes, LOWER32(nsize),
     187                async_answer_3(req_handle, EOK, wbytes, LOWER32(nsize),
    186188                    UPPER32(nsize));
    187189        } else
    188                 async_answer_0(rid, rc);
    189 }
    190 
    191 static void vfs_out_truncate(cap_call_handle_t rid, ipc_call_t *req)
     190                async_answer_0(req_handle, rc);
     191}
     192
     193static void vfs_out_truncate(cap_call_handle_t req_handle, ipc_call_t *req)
    192194{
    193195        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    199201        rc = vfs_out_ops->truncate(service_id, index, size);
    200202
    201         async_answer_0(rid, rc);
    202 }
    203 
    204 static void vfs_out_close(cap_call_handle_t rid, ipc_call_t *req)
     203        async_answer_0(req_handle, rc);
     204}
     205
     206static void vfs_out_close(cap_call_handle_t req_handle, ipc_call_t *req)
    205207{
    206208        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    210212        rc = vfs_out_ops->close(service_id, index);
    211213
    212         async_answer_0(rid, rc);
    213 }
    214 
    215 static void vfs_out_destroy(cap_call_handle_t rid, ipc_call_t *req)
     214        async_answer_0(req_handle, rc);
     215}
     216
     217static void vfs_out_destroy(cap_call_handle_t req_handle, ipc_call_t *req)
    216218{
    217219        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    227229                        rc = vfs_out_ops->destroy(service_id, index);
    228230        }
    229         async_answer_0(rid, rc);
    230 }
    231 
    232 static void vfs_out_open_node(cap_call_handle_t rid, ipc_call_t *req)
    233 {
    234         libfs_open_node(libfs_ops, reg.fs_handle, rid, req);
    235 }
    236 
    237 static void vfs_out_stat(cap_call_handle_t rid, ipc_call_t *req)
    238 {
    239         libfs_stat(libfs_ops, reg.fs_handle, rid, req);
    240 }
    241 
    242 static void vfs_out_sync(cap_call_handle_t rid, ipc_call_t *req)
     231        async_answer_0(req_handle, rc);
     232}
     233
     234static void vfs_out_open_node(cap_call_handle_t req_handle, ipc_call_t *req)
     235{
     236        libfs_open_node(libfs_ops, reg.fs_handle, req_handle, req);
     237}
     238
     239static void vfs_out_stat(cap_call_handle_t req_handle, ipc_call_t *req)
     240{
     241        libfs_stat(libfs_ops, reg.fs_handle, req_handle, req);
     242}
     243
     244static void vfs_out_sync(cap_call_handle_t req_handle, ipc_call_t *req)
    243245{
    244246        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    248250        rc = vfs_out_ops->sync(service_id, index);
    249251
    250         async_answer_0(rid, rc);
    251 }
    252 
    253 static void vfs_out_statfs(cap_call_handle_t rid, ipc_call_t *req)
    254 {
    255         libfs_statfs(libfs_ops, reg.fs_handle, rid, req);
    256 }
    257 
    258 static void vfs_out_is_empty(cap_call_handle_t rid, ipc_call_t *req)
     252        async_answer_0(req_handle, rc);
     253}
     254
     255static void vfs_out_statfs(cap_call_handle_t req_handle, ipc_call_t *req)
     256{
     257        libfs_statfs(libfs_ops, reg.fs_handle, req_handle, req);
     258}
     259
     260static void vfs_out_is_empty(cap_call_handle_t req_handle, ipc_call_t *req)
    259261{
    260262        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*req);
     
    265267        rc = libfs_ops->node_get(&node, service_id, index);
    266268        if (rc != EOK)
    267                 async_answer_0(rid, rc);
     269                async_answer_0(req_handle, rc);
    268270        if (node == NULL)
    269                 async_answer_0(rid, EINVAL);
     271                async_answer_0(req_handle, EINVAL);
    270272
    271273        bool children = false;
     
    274276
    275277        if (rc != EOK)
    276                 async_answer_0(rid, rc);
    277         async_answer_0(rid, children ? ENOTEMPTY : EOK);
    278 }
    279 
    280 static void vfs_connection(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
     278                async_answer_0(req_handle, rc);
     279        async_answer_0(req_handle, children ? ENOTEMPTY : EOK);
     280}
     281
     282static void vfs_connection(cap_call_handle_t icall_handle, ipc_call_t *icall,
     283    void *arg)
    281284{
    282285        if (icall_handle) {
     
    492495/** Link a file at a path.
    493496 */
    494 void libfs_link(libfs_ops_t *ops, fs_handle_t fs_handle, cap_call_handle_t rid,
    495     ipc_call_t *req)
     497void libfs_link(libfs_ops_t *ops, fs_handle_t fs_handle,
     498    cap_call_handle_t req_handle, ipc_call_t *req)
    496499{
    497500        service_id_t parent_sid = IPC_GET_ARG1(*req);
     
    502505        errno_t rc = receive_fname(component);
    503506        if (rc != EOK) {
    504                 async_answer_0(rid, rc);
     507                async_answer_0(req_handle, rc);
    505508                return;
    506509        }
     
    509512        rc = ops->node_get(&parent, parent_sid, parent_index);
    510513        if (parent == NULL) {
    511                 async_answer_0(rid, rc == EOK ? EBADF : rc);
     514                async_answer_0(req_handle, rc == EOK ? EBADF : rc);
    512515                return;
    513516        }
     
    516519        rc = ops->node_get(&child, parent_sid, child_index);
    517520        if (child == NULL) {
    518                 async_answer_0(rid, rc == EOK ? EBADF : rc);
     521                async_answer_0(req_handle, rc == EOK ? EBADF : rc);
    519522                ops->node_put(parent);
    520523                return;
     
    524527        ops->node_put(parent);
    525528        ops->node_put(child);
    526         async_answer_0(rid, rc);
     529        async_answer_0(req_handle, rc);
    527530}
    528531
     
    532535 * as returned by the canonify() function.
    533536 *
    534  * @param ops       libfs operations structure with function pointers to
    535  *                  file system implementation
    536  * @param fs_handle File system handle of the file system where to perform
    537  *                  the lookup.
    538  * @param rid       Request ID of the VFS_OUT_LOOKUP request.
    539  * @param request   VFS_OUT_LOOKUP request data itself.
     537 * @param ops         libfs operations structure with function pointers to
     538 *                    file system implementation
     539 * @param fs_handle   File system handle of the file system where to perform
     540 *                    the lookup.
     541 * @param req_handle  Call handle of the VFS_OUT_LOOKUP request.
     542 * @param request     VFS_OUT_LOOKUP request data itself.
    540543 *
    541544 */
    542 void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle, cap_call_handle_t rid,
    543     ipc_call_t *req)
     545void libfs_lookup(libfs_ops_t *ops, fs_handle_t fs_handle,
     546    cap_call_handle_t req_handle, ipc_call_t *req)
    544547{
    545548        unsigned first = IPC_GET_ARG1(*req);
     
    564567        rc = ops->node_get(&cur, service_id, index);
    565568        if (rc != EOK) {
    566                 async_answer_0(rid, rc);
     569                async_answer_0(req_handle, rc);
    567570                goto out;
    568571        }
     
    581584
    582585                if (!ops->is_directory(cur)) {
    583                         async_answer_0(rid, ENOTDIR);
     586                        async_answer_0(req_handle, ENOTDIR);
    584587                        goto out;
    585588                }
     
    590593                assert(rc != ERANGE);
    591594                if (rc != EOK) {
    592                         async_answer_0(rid, rc);
     595                        async_answer_0(req_handle, rc);
    593596                        goto out;
    594597                }
     
    604607                rc = ops->match(&tmp, cur, component);
    605608                if (rc != EOK) {
    606                         async_answer_0(rid, rc);
     609                        async_answer_0(req_handle, rc);
    607610                        goto out;
    608611                }
     
    612615                        rc = ops->node_put(par);
    613616                        if (rc != EOK) {
    614                                 async_answer_0(rid, rc);
     617                                async_answer_0(req_handle, rc);
    615618                                goto out;
    616619                        }
     
    632635
    633636        if (cur && (lflag & L_FILE) && (ops->is_directory(cur))) {
    634                 async_answer_0(rid, EISDIR);
     637                async_answer_0(req_handle, EISDIR);
    635638                goto out;
    636639        }
    637640
    638641        if (cur && (lflag & L_DIRECTORY) && (ops->is_file(cur))) {
    639                 async_answer_0(rid, ENOTDIR);
     642                async_answer_0(req_handle, ENOTDIR);
    640643                goto out;
    641644        }
     
    645648        if (lflag & L_UNLINK) {
    646649                if (!cur) {
    647                         async_answer_0(rid, ENOENT);
     650                        async_answer_0(req_handle, ENOENT);
    648651                        goto out;
    649652                }
    650653                if (!par) {
    651                         async_answer_0(rid, EINVAL);
     654                        async_answer_0(req_handle, EINVAL);
    652655                        goto out;
    653656                }
     
    656659                if (rc == EOK) {
    657660                        aoff64_t size = ops->size_get(cur);
    658                         async_answer_5(rid, EOK, fs_handle,
     661                        async_answer_5(req_handle, EOK, fs_handle,
    659662                            ops->index_get(cur),
    660663                            (ops->is_directory(cur) << 16) | last,
    661664                            LOWER32(size), UPPER32(size));
    662665                } else {
    663                         async_answer_0(rid, rc);
     666                        async_answer_0(req_handle, rc);
    664667                }
    665668                goto out;
     
    670673        if (lflag & L_CREATE) {
    671674                if (cur && (lflag & L_EXCLUSIVE)) {
    672                         async_answer_0(rid, EEXIST);
     675                        async_answer_0(req_handle, EEXIST);
    673676                        goto out;
    674677                }
     
    678681                            lflag & (L_FILE | L_DIRECTORY));
    679682                        if (rc != EOK) {
    680                                 async_answer_0(rid, rc);
     683                                async_answer_0(req_handle, rc);
    681684                                goto out;
    682685                        }
    683686                        if (!cur) {
    684                                 async_answer_0(rid, ENOSPC);
     687                                async_answer_0(req_handle, ENOSPC);
    685688                                goto out;
    686689                        }
     
    690693                                (void) ops->destroy(cur);
    691694                                cur = NULL;
    692                                 async_answer_0(rid, rc);
     695                                async_answer_0(req_handle, rc);
    693696                                goto out;
    694697                        }
     
    699702out1:
    700703        if (!cur) {
    701                 async_answer_5(rid, EOK, fs_handle, ops->index_get(par),
     704                async_answer_5(req_handle, EOK, fs_handle, ops->index_get(par),
    702705                    (ops->is_directory(par) << 16) | last_next,
    703706                    LOWER32(ops->size_get(par)), UPPER32(ops->size_get(par)));
     
    705708        }
    706709
    707         async_answer_5(rid, EOK, fs_handle, ops->index_get(cur),
     710        async_answer_5(req_handle, EOK, fs_handle, ops->index_get(cur),
    708711            (ops->is_directory(cur) << 16) | last, LOWER32(ops->size_get(cur)),
    709712            UPPER32(ops->size_get(cur)));
     
    720723}
    721724
    722 void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle, cap_call_handle_t rid,
    723     ipc_call_t *request)
     725void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle,
     726    cap_call_handle_t req_handle, ipc_call_t *request)
    724727{
    725728        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
     
    728731        fs_node_t *fn;
    729732        errno_t rc = ops->node_get(&fn, service_id, index);
    730         on_error(rc, answer_and_return(rid, rc));
     733        on_error(rc, answer_and_return(req_handle, rc));
    731734
    732735        cap_call_handle_t chandle;
     
    736739                ops->node_put(fn);
    737740                async_answer_0(chandle, EINVAL);
    738                 async_answer_0(rid, EINVAL);
     741                async_answer_0(req_handle, EINVAL);
    739742                return;
    740743        }
     
    756759
    757760        async_data_read_finalize(chandle, &stat, sizeof(vfs_stat_t));
    758         async_answer_0(rid, EOK);
    759 }
    760 
    761 void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle, cap_call_handle_t rid,
    762     ipc_call_t *request)
     761        async_answer_0(req_handle, EOK);
     762}
     763
     764void libfs_statfs(libfs_ops_t *ops, fs_handle_t fs_handle,
     765    cap_call_handle_t req_handle, ipc_call_t *request)
    763766{
    764767        service_id_t service_id = (service_id_t) IPC_GET_ARG1(*request);
     
    767770        fs_node_t *fn;
    768771        errno_t rc = ops->node_get(&fn, service_id, index);
    769         on_error(rc, answer_and_return(rid, rc));
     772        on_error(rc, answer_and_return(req_handle, rc));
    770773
    771774        cap_call_handle_t chandle;
     
    801804        ops->node_put(fn);
    802805        async_data_read_finalize(chandle, &st, sizeof(vfs_statfs_t));
    803         async_answer_0(rid, EOK);
     806        async_answer_0(req_handle, EOK);
    804807        return;
    805808
     
    807810        ops->node_put(fn);
    808811        async_answer_0(chandle, EINVAL);
    809         async_answer_0(rid, EINVAL);
     812        async_answer_0(req_handle, EINVAL);
    810813}
    811814
     
    813816/** Open VFS triplet.
    814817 *
    815  * @param ops     libfs operations structure with function pointers to
    816  *                file system implementation
    817  * @param rid     Request ID of the VFS_OUT_OPEN_NODE request.
    818  * @param request VFS_OUT_OPEN_NODE request data itself.
     818 * @param ops         libfs operations structure with function pointers to
     819 *                    file system implementation
     820 * @param req_handle  Call handle of the VFS_OUT_OPEN_NODE request.
     821 * @param request     VFS_OUT_OPEN_NODE request data itself.
    819822 *
    820823 */
    821 void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle, cap_call_handle_t rid,
    822     ipc_call_t *request)
     824void libfs_open_node(libfs_ops_t *ops, fs_handle_t fs_handle,
     825    cap_call_handle_t req_handle, ipc_call_t *request)
    823826{
    824827        service_id_t service_id = IPC_GET_ARG1(*request);
     
    827830        fs_node_t *fn;
    828831        errno_t rc = ops->node_get(&fn, service_id, index);
    829         on_error(rc, answer_and_return(rid, rc));
     832        on_error(rc, answer_and_return(req_handle, rc));
    830833
    831834        if (fn == NULL) {
    832                 async_answer_0(rid, ENOENT);
     835                async_answer_0(req_handle, ENOENT);
    833836                return;
    834837        }
     
    836839        rc = ops->node_open(fn);
    837840        aoff64_t size = ops->size_get(fn);
    838         async_answer_4(rid, rc, LOWER32(size), UPPER32(size),
     841        async_answer_4(req_handle, rc, LOWER32(size), UPPER32(size),
    839842            ops->lnkcnt_get(fn),
    840843            (ops->is_file(fn) ? L_FILE : 0) |
Note: See TracChangeset for help on using the changeset viewer.