Changes in / [e03d545:9dbf5587] in mainline


Ignore:
Files:
6 added
10 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • boot/Makefile.common

    re03d545 r9dbf5587  
    102102        $(USPACE_PATH)/srv/fs/tmpfs/tmpfs \
    103103        $(USPACE_PATH)/srv/fs/fat/fat \
     104        $(USPACE_PATH)/srv/fs/cdfs/cdfs \
    104105        $(USPACE_PATH)/srv/fs/minixfs/mfs \
    105106        $(USPACE_PATH)/srv/fs/exfat/exfat \
  • uspace/Makefile

    re03d545 r9dbf5587  
    8282        srv/fs/exfat \
    8383        srv/fs/fat \
     84        srv/fs/cdfs \
    8485        srv/fs/tmpfs \
    8586        srv/fs/minixfs \
  • uspace/lib/block/libblock.c

    re03d545 r9dbf5587  
    9393static int get_block_size(async_sess_t *, size_t *);
    9494static int get_num_blocks(async_sess_t *, aoff64_t *);
    95 static int read_toc(async_sess_t *, uint8_t);
    9695static aoff64_t ba_ltop(devcon_t *, aoff64_t);
    9796
     
    896895 * @param service_id Service ID of the block device.
    897896 * @param session    Starting session.
    898  * @param data       Buffer to read TOC into.
    899  *
    900  * @return EOK on success.
    901  * @return Error code on failure.
    902  *
    903  */
    904 int block_get_toc(service_id_t service_id, uint8_t session, void *data)
     897 *
     898 * @return Allocated TOC structure.
     899 * @return NULL on failure.
     900 *
     901 */
     902toc_block_t *block_get_toc(service_id_t service_id, uint8_t session)
    905903{
    906904        devcon_t *devcon = devcon_search(service_id);
    907905        assert(devcon);
    908906       
     907        toc_block_t *toc = NULL;
     908       
    909909        fibril_mutex_lock(&devcon->comm_area_lock);
    910910       
    911         int rc = read_toc(devcon->sess, session);
    912         if (rc == EOK)
    913                 memcpy(data, devcon->comm_area, devcon->pblock_size);
     911        async_exch_t *exch = async_exchange_begin(devcon->sess);
     912        int rc = async_req_1_0(exch, BD_READ_TOC, session);
     913        async_exchange_end(exch);
     914       
     915        if (rc == EOK) {
     916                toc = (toc_block_t *) malloc(sizeof(toc_block_t));
     917                if (toc != NULL) {
     918                        memset(toc, 0, sizeof(toc_block_t));
     919                        memcpy(toc, devcon->comm_area,
     920                            min(devcon->pblock_size, sizeof(toc_block_t)));
     921                }
     922        }
     923       
    914924       
    915925        fibril_mutex_unlock(&devcon->comm_area_lock);
    916926       
    917         return rc;
     927        return toc;
    918928}
    919929
     
    10081018}
    10091019
    1010 /** Get TOC from block device. */
    1011 static int read_toc(async_sess_t *sess, uint8_t session)
    1012 {
    1013         async_exch_t *exch = async_exchange_begin(sess);
    1014         int rc = async_req_1_0(exch, BD_READ_TOC, session);
    1015         async_exchange_end(exch);
    1016 
    1017         return rc;
    1018 }
    1019 
    10201020/** Convert logical block address to physical block address. */
    10211021static aoff64_t ba_ltop(devcon_t *devcon, aoff64_t lba)
  • uspace/lib/block/libblock.h

    re03d545 r9dbf5587  
    9797};
    9898
     99typedef struct {
     100        uint16_t size;
     101        uint8_t first_session;
     102        uint8_t last_session;
     103       
     104        uint8_t res0;
     105        uint8_t adr_ctrl;
     106        uint8_t first_track;
     107        uint8_t res1;
     108       
     109        uint32_t first_lba;
     110} __attribute__((packed)) toc_block_t;
     111
    99112extern int block_init(exch_mgmt_t, service_id_t, size_t);
    100113extern void block_fini(service_id_t);
     
    114127extern int block_get_bsize(service_id_t, size_t *);
    115128extern int block_get_nblocks(service_id_t, aoff64_t *);
    116 extern int block_get_toc(service_id_t, uint8_t, void *);
     129extern toc_block_t *block_get_toc(service_id_t, uint8_t);
    117130extern int block_read_direct(service_id_t, aoff64_t, size_t, void *);
    118131extern int block_read_bytes_direct(service_id_t, aoff64_t, size_t, void *);
     
    123136/** @}
    124137 */
    125 
  • uspace/lib/c/generic/str.c

    re03d545 r9dbf5587  
    12911291}
    12921292
     1293/** Convert string to uint8_t.
     1294 *
     1295 * @param nptr   Pointer to string.
     1296 * @param endptr If not NULL, pointer to the first invalid character
     1297 *               is stored here.
     1298 * @param base   Zero or number between 2 and 36 inclusive.
     1299 * @param strict Do not allow any trailing characters.
     1300 * @param result Result of the conversion.
     1301 *
     1302 * @return EOK if conversion was successful.
     1303 *
     1304 */
     1305int str_uint8_t(const char *nptr, char **endptr, unsigned int base,
     1306    bool strict, uint8_t *result)
     1307{
     1308        assert(result != NULL);
     1309       
     1310        bool neg;
     1311        char *lendptr;
     1312        uint64_t res;
     1313        int ret = str_uint(nptr, &lendptr, base, &neg, &res);
     1314       
     1315        if (endptr != NULL)
     1316                *endptr = (char *) lendptr;
     1317       
     1318        if (ret != EOK)
     1319                return ret;
     1320       
     1321        /* Do not allow negative values */
     1322        if (neg)
     1323                return EINVAL;
     1324       
     1325        /* Check whether we are at the end of
     1326           the string in strict mode */
     1327        if ((strict) && (*lendptr != 0))
     1328                return EINVAL;
     1329       
     1330        /* Check for overflow */
     1331        uint8_t _res = (uint8_t) res;
     1332        if (_res != res)
     1333                return EOVERFLOW;
     1334       
     1335        *result = _res;
     1336       
     1337        return EOK;
     1338}
     1339
     1340/** Convert string to uint16_t.
     1341 *
     1342 * @param nptr   Pointer to string.
     1343 * @param endptr If not NULL, pointer to the first invalid character
     1344 *               is stored here.
     1345 * @param base   Zero or number between 2 and 36 inclusive.
     1346 * @param strict Do not allow any trailing characters.
     1347 * @param result Result of the conversion.
     1348 *
     1349 * @return EOK if conversion was successful.
     1350 *
     1351 */
     1352int str_uint16_t(const char *nptr, char **endptr, unsigned int base,
     1353    bool strict, uint16_t *result)
     1354{
     1355        assert(result != NULL);
     1356       
     1357        bool neg;
     1358        char *lendptr;
     1359        uint64_t res;
     1360        int ret = str_uint(nptr, &lendptr, base, &neg, &res);
     1361       
     1362        if (endptr != NULL)
     1363                *endptr = (char *) lendptr;
     1364       
     1365        if (ret != EOK)
     1366                return ret;
     1367       
     1368        /* Do not allow negative values */
     1369        if (neg)
     1370                return EINVAL;
     1371       
     1372        /* Check whether we are at the end of
     1373           the string in strict mode */
     1374        if ((strict) && (*lendptr != 0))
     1375                return EINVAL;
     1376       
     1377        /* Check for overflow */
     1378        uint16_t _res = (uint16_t) res;
     1379        if (_res != res)
     1380                return EOVERFLOW;
     1381       
     1382        *result = _res;
     1383       
     1384        return EOK;
     1385}
     1386
     1387/** Convert string to uint32_t.
     1388 *
     1389 * @param nptr   Pointer to string.
     1390 * @param endptr If not NULL, pointer to the first invalid character
     1391 *               is stored here.
     1392 * @param base   Zero or number between 2 and 36 inclusive.
     1393 * @param strict Do not allow any trailing characters.
     1394 * @param result Result of the conversion.
     1395 *
     1396 * @return EOK if conversion was successful.
     1397 *
     1398 */
     1399int str_uint32_t(const char *nptr, char **endptr, unsigned int base,
     1400    bool strict, uint32_t *result)
     1401{
     1402        assert(result != NULL);
     1403       
     1404        bool neg;
     1405        char *lendptr;
     1406        uint64_t res;
     1407        int ret = str_uint(nptr, &lendptr, base, &neg, &res);
     1408       
     1409        if (endptr != NULL)
     1410                *endptr = (char *) lendptr;
     1411       
     1412        if (ret != EOK)
     1413                return ret;
     1414       
     1415        /* Do not allow negative values */
     1416        if (neg)
     1417                return EINVAL;
     1418       
     1419        /* Check whether we are at the end of
     1420           the string in strict mode */
     1421        if ((strict) && (*lendptr != 0))
     1422                return EINVAL;
     1423       
     1424        /* Check for overflow */
     1425        uint32_t _res = (uint32_t) res;
     1426        if (_res != res)
     1427                return EOVERFLOW;
     1428       
     1429        *result = _res;
     1430       
     1431        return EOK;
     1432}
     1433
    12931434/** Convert string to uint64_t.
    12941435 *
  • uspace/lib/c/include/str.h

    re03d545 r9dbf5587  
    9797extern char *str_ndup(const char *, size_t max_size);
    9898
     99extern int str_uint8_t(const char *, char **, unsigned int, bool, uint8_t *);
     100extern int str_uint16_t(const char *, char **, unsigned int, bool, uint16_t *);
     101extern int str_uint32_t(const char *, char **, unsigned int, bool, uint32_t *);
    99102extern int str_uint64(const char *, char **, unsigned int, bool, uint64_t *);
    100103extern int str_size_t(const char *, char **, unsigned int, bool, size_t *);
  • uspace/srv/devman/main.c

    re03d545 r9dbf5587  
    507507        fun_node_t *fun;
    508508        int rc;
    509 
    510         printf("devman_drv_fun_online()\n");
     509       
     510        log_msg(LVL_DEBUG, "devman_drv_fun_online()");
     511       
    511512        fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
    512513        if (fun == NULL) {
     
    526527        rc = online_function(fun);
    527528        if (rc != EOK) {
    528                 printf("devman_drv_fun_online() online_fun->ERROR\n");
    529529                fun_del_ref(fun);
    530530                async_answer_0(iid, (sysarg_t) rc);
     
    533533       
    534534        fun_del_ref(fun);
    535         printf("devman_drv_fun_online() online_fun->OK\n");
    536535       
    537536        async_answer_0(iid, (sysarg_t) EOK);
  • uspace/srv/loc/loc.c

    re03d545 r9dbf5587  
    12771277        categ_dir_add_cat(&cdir, cat);
    12781278
     1279        cat = category_new("test3");
     1280        categ_dir_add_cat(&cdir, cat);
     1281
    12791282        cat = category_new("usbhc");
    12801283        categ_dir_add_cat(&cdir, cat);
    12811284
     1285        cat = category_new("virt-null");
     1286        categ_dir_add_cat(&cdir, cat);
     1287
    12821288        cat = category_new("virtual");
    12831289        categ_dir_add_cat(&cdir, cat);
     1290
    12841291
    12851292        return true;
Note: See TracChangeset for help on using the changeset viewer.