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