Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/vfs/vfs.c

    r35a35651 rfa24efa  
    4343#include <stdio.h>
    4444#include <sys/stat.h>
     45#include <sys/statfs.h>
    4546#include <sys/types.h>
    4647#include <ipc/services.h>
     
    341342}
    342343
    343 ssize_t read(int fildes, void *buf, size_t nbyte) 
     344ssize_t read(int fildes, void *buf, size_t nbyte)
    344345{
    345346        sysarg_t rc;
     
    347348        aid_t req;
    348349       
     350        if (nbyte > DATA_XFER_LIMIT)
     351                nbyte = DATA_XFER_LIMIT;
     352       
    349353        async_exch_t *exch = vfs_exchange_begin();
    350354       
    351355        req = async_send_1(exch, VFS_IN_READ, fildes, &answer);
    352         rc = async_data_read_start(exch, (void *)buf, nbyte);
     356        rc = async_data_read_start(exch, (void *) buf, nbyte);
    353357        if (rc != EOK) {
    354358                vfs_exchange_end(exch);
     
    376380        aid_t req;
    377381       
     382        if (nbyte > DATA_XFER_LIMIT)
     383                nbyte = DATA_XFER_LIMIT;
     384       
    378385        async_exch_t *exch = vfs_exchange_begin();
    379386       
    380387        req = async_send_1(exch, VFS_IN_WRITE, fildes, &answer);
    381         rc = async_data_write_start(exch, (void *)buf, nbyte);
     388        rc = async_data_write_start(exch, (void *) buf, nbyte);
    382389        if (rc != EOK) {
    383390                vfs_exchange_end(exch);
     
    892899}
    893900
     901int statfs(const char *path, struct statfs *st)
     902{
     903        sysarg_t rc, rc_orig;
     904        aid_t req;
     905        size_t pa_size;
     906
     907        char *pa = absolutize(path, &pa_size);
     908        if (!pa)
     909                return ENOMEM;
     910
     911        async_exch_t *exch = vfs_exchange_begin();
     912
     913        req = async_send_0(exch, VFS_IN_STATFS, NULL);
     914        rc = async_data_write_start(exch, pa, pa_size);
     915        if (rc != EOK)
     916                goto exit;
     917
     918        rc = async_data_read_start(exch, (void *) st, sizeof(*st));
     919
     920exit:
     921        vfs_exchange_end(exch);
     922        free(pa);
     923        async_wait_for(req, &rc_orig);
     924        return (int) (rc_orig != EOK ? rc_orig : rc);
     925}
     926
    894927/** @}
    895928 */
Note: See TracChangeset for help on using the changeset viewer.