Ignore:
File:
1 edited

Legend:

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

    r135486d rccfe9c3  
    7070                async_answer_0(rcallid, ENOTSUP);
    7171                async_answer_0(callid, ENOTSUP);
     72                free(buf);
    7273                return;
    7374        }
     
    7778                async_answer_0(rcallid, ENOMEM);
    7879                async_answer_0(callid, ENOMEM);
     80                free(buf);
    7981                return;
    8082        }
     
    112114                async_answer_0(rcallid, ENOTSUP);
    113115                async_answer_0(callid, ENOTSUP);
     116                free(buf);
    114117                return;
    115118        }
     
    119122                async_answer_0(rcallid, ENOMEM);
    120123                async_answer_0(callid, ENOMEM);
     124                free(buf);
    121125                return;
    122126        }
     
    126130        free(buf);
    127131        async_answer_0(callid, EOK);
     132}
     133
     134static void bd_sync_cache_srv(bd_srv_t *srv, ipc_callid_t callid,
     135    ipc_call_t *call)
     136{
     137        aoff64_t ba;
     138        size_t cnt;
     139        int rc;
     140
     141        ba = MERGE_LOUP32(IPC_GET_ARG1(*call), IPC_GET_ARG2(*call));
     142        cnt = IPC_GET_ARG3(*call);
     143
     144        if (srv->srvs->ops->sync_cache == NULL) {
     145                async_answer_0(callid, ENOTSUP);
     146                return;
     147        }
     148
     149        rc = srv->srvs->ops->sync_cache(srv, ba, cnt);
     150        async_answer_0(callid, rc);
    128151}
    129152
     
    190213        bd_srv_t *srv;
    191214
    192         srv = calloc(1, sizeof(srv));
     215        srv = calloc(1, sizeof(bd_srv_t));
    193216        if (srv == NULL)
    194217                return NULL;
     
    244267                        bd_read_toc_srv(srv, callid, &call);
    245268                        break;
     269                case BD_SYNC_CACHE:
     270                        bd_sync_cache_srv(srv, callid, &call);
     271                        break;
    246272                case BD_WRITE_BLOCKS:
    247273                        bd_write_blocks_srv(srv, callid, &call);
Note: See TracChangeset for help on using the changeset viewer.