Changes in / [9dbf5587:e03d545] in mainline
- Files:
-
- 10 added
- 6 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
boot/Makefile.common
r9dbf5587 re03d545 102 102 $(USPACE_PATH)/srv/fs/tmpfs/tmpfs \ 103 103 $(USPACE_PATH)/srv/fs/fat/fat \ 104 $(USPACE_PATH)/srv/fs/cdfs/cdfs \105 104 $(USPACE_PATH)/srv/fs/minixfs/mfs \ 106 105 $(USPACE_PATH)/srv/fs/exfat/exfat \ -
uspace/Makefile
r9dbf5587 re03d545 82 82 srv/fs/exfat \ 83 83 srv/fs/fat \ 84 srv/fs/cdfs \85 84 srv/fs/tmpfs \ 86 85 srv/fs/minixfs \ -
uspace/lib/block/libblock.c
r9dbf5587 re03d545 93 93 static int get_block_size(async_sess_t *, size_t *); 94 94 static int get_num_blocks(async_sess_t *, aoff64_t *); 95 static int read_toc(async_sess_t *, uint8_t); 95 96 static aoff64_t ba_ltop(devcon_t *, aoff64_t); 96 97 … … 895 896 * @param service_id Service ID of the block device. 896 897 * @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 */ 904 int block_get_toc(service_id_t service_id, uint8_t session, void *data) 903 905 { 904 906 devcon_t *devcon = devcon_search(service_id); 905 907 assert(devcon); 906 908 907 toc_block_t *toc = NULL;908 909 909 fibril_mutex_lock(&devcon->comm_area_lock); 910 910 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); 924 914 925 915 fibril_mutex_unlock(&devcon->comm_area_lock); 926 916 927 return toc;917 return rc; 928 918 } 929 919 … … 1018 1008 } 1019 1009 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 1020 1020 /** Convert logical block address to physical block address. */ 1021 1021 static aoff64_t ba_ltop(devcon_t *devcon, aoff64_t lba) -
uspace/lib/block/libblock.h
r9dbf5587 re03d545 97 97 }; 98 98 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 112 99 extern int block_init(exch_mgmt_t, service_id_t, size_t); 113 100 extern void block_fini(service_id_t); … … 127 114 extern int block_get_bsize(service_id_t, size_t *); 128 115 extern int block_get_nblocks(service_id_t, aoff64_t *); 129 extern toc_block_t *block_get_toc(service_id_t, uint8_t);116 extern int block_get_toc(service_id_t, uint8_t, void *); 130 117 extern int block_read_direct(service_id_t, aoff64_t, size_t, void *); 131 118 extern int block_read_bytes_direct(service_id_t, aoff64_t, size_t, void *); … … 136 123 /** @} 137 124 */ 125 -
uspace/lib/c/generic/str.c
r9dbf5587 re03d545 1291 1291 } 1292 1292 1293 /** Convert string to uint8_t.1294 *1295 * @param nptr Pointer to string.1296 * @param endptr If not NULL, pointer to the first invalid character1297 * 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 of1326 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 character1344 * 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 of1373 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 character1391 * 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 of1420 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 1434 1293 /** Convert string to uint64_t. 1435 1294 * -
uspace/lib/c/include/str.h
r9dbf5587 re03d545 97 97 extern char *str_ndup(const char *, size_t max_size); 98 98 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 *);102 99 extern int str_uint64(const char *, char **, unsigned int, bool, uint64_t *); 103 100 extern int str_size_t(const char *, char **, unsigned int, bool, size_t *); -
uspace/srv/devman/main.c
r9dbf5587 re03d545 507 507 fun_node_t *fun; 508 508 int rc; 509 510 log_msg(LVL_DEBUG, "devman_drv_fun_online()"); 511 509 510 printf("devman_drv_fun_online()\n"); 512 511 fun = find_fun_node(&device_tree, IPC_GET_ARG1(*icall)); 513 512 if (fun == NULL) { … … 527 526 rc = online_function(fun); 528 527 if (rc != EOK) { 528 printf("devman_drv_fun_online() online_fun->ERROR\n"); 529 529 fun_del_ref(fun); 530 530 async_answer_0(iid, (sysarg_t) rc); … … 533 533 534 534 fun_del_ref(fun); 535 printf("devman_drv_fun_online() online_fun->OK\n"); 535 536 536 537 async_answer_0(iid, (sysarg_t) EOK); -
uspace/srv/loc/loc.c
r9dbf5587 re03d545 1277 1277 categ_dir_add_cat(&cdir, cat); 1278 1278 1279 cat = category_new("test3");1280 categ_dir_add_cat(&cdir, cat);1281 1282 1279 cat = category_new("usbhc"); 1283 1280 categ_dir_add_cat(&cdir, cat); 1284 1281 1285 cat = category_new("virt-null");1286 categ_dir_add_cat(&cdir, cat);1287 1288 1282 cat = category_new("virtual"); 1289 1283 categ_dir_add_cat(&cdir, cat); 1290 1291 1284 1292 1285 return true;
Note:
See TracChangeset
for help on using the changeset viewer.