Changes in / [9dbf5587:e03d545] in mainline


Ignore:
Files:
10 added
6 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • boot/Makefile.common

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

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

    r9dbf5587 re03d545  
    9393static int get_block_size(async_sess_t *, size_t *);
    9494static int get_num_blocks(async_sess_t *, aoff64_t *);
     95static int read_toc(async_sess_t *, uint8_t);
    9596static aoff64_t ba_ltop(devcon_t *, aoff64_t);
    9697
     
    895896 * @param service_id Service ID of the block device.
    896897 * @param session    Starting session.
    897  *
    898  * @return Allocated TOC structure.
    899  * @return NULL on failure.
    900  *
    901  */
    902 toc_block_t *block_get_toc(service_id_t service_id, uint8_t session)
     898 * @param data       Buffer to read TOC into.
     899 *
     900 * @return EOK on success.
     901 * @return Error code on failure.
     902 *
     903 */
     904int block_get_toc(service_id_t service_id, uint8_t session, void *data)
    903905{
    904906        devcon_t *devcon = devcon_search(service_id);
    905907        assert(devcon);
    906908       
    907         toc_block_t *toc = NULL;
    908        
    909909        fibril_mutex_lock(&devcon->comm_area_lock);
    910910       
    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        
     911        int rc = read_toc(devcon->sess, session);
     912        if (rc == EOK)
     913                memcpy(data, devcon->comm_area, devcon->pblock_size);
    924914       
    925915        fibril_mutex_unlock(&devcon->comm_area_lock);
    926916       
    927         return toc;
     917        return rc;
    928918}
    929919
     
    10181008}
    10191009
     1010/** Get TOC from block device. */
     1011static 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

    r9dbf5587 re03d545  
    9797};
    9898
    99 typedef 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 
    11299extern int block_init(exch_mgmt_t, service_id_t, size_t);
    113100extern void block_fini(service_id_t);
     
    127114extern int block_get_bsize(service_id_t, size_t *);
    128115extern int block_get_nblocks(service_id_t, aoff64_t *);
    129 extern toc_block_t *block_get_toc(service_id_t, uint8_t);
     116extern int block_get_toc(service_id_t, uint8_t, void *);
    130117extern int block_read_direct(service_id_t, aoff64_t, size_t, void *);
    131118extern int block_read_bytes_direct(service_id_t, aoff64_t, size_t, void *);
     
    136123/** @}
    137124 */
     125
  • uspace/lib/c/generic/str.c

    r9dbf5587 re03d545  
    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  */
    1305 int 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  */
    1352 int 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  */
    1399 int 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 
    14341293/** Convert string to uint64_t.
    14351294 *
  • uspace/lib/c/include/str.h

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

    r9dbf5587 re03d545  
    507507        fun_node_t *fun;
    508508        int rc;
    509        
    510         log_msg(LVL_DEBUG, "devman_drv_fun_online()");
    511        
     509
     510        printf("devman_drv_fun_online()\n");
    512511        fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall));
    513512        if (fun == NULL) {
     
    527526        rc = online_function(fun);
    528527        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");
    535536       
    536537        async_answer_0(iid, (sysarg_t) EOK);
  • uspace/srv/loc/loc.c

    r9dbf5587 re03d545  
    12771277        categ_dir_add_cat(&cdir, cat);
    12781278
    1279         cat = category_new("test3");
    1280         categ_dir_add_cat(&cdir, cat);
    1281 
    12821279        cat = category_new("usbhc");
    12831280        categ_dir_add_cat(&cdir, cat);
    12841281
    1285         cat = category_new("virt-null");
    1286         categ_dir_add_cat(&cdir, cat);
    1287 
    12881282        cat = category_new("virtual");
    12891283        categ_dir_add_cat(&cdir, cat);
    1290 
    12911284
    12921285        return true;
Note: See TracChangeset for help on using the changeset viewer.