Changeset f4d5f90 in mainline
- Timestamp:
- 2011-12-15T10:36:34Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9fe4db3
- Parents:
- d9f8dd13 (diff), 9916841 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 14 added
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/boot/vesa_real.inc
rd9f8dd13 rf4d5f90 374 374 xor %ebx, %ebx 375 375 xor %edx, %edx 376 mov $0xffffffff, %edi376 xor %edi, %edi 377 377 378 378 jz vesa_leave_real /* force relative jump */ -
kernel/arch/ia64/src/start.S
rd9f8dd13 rf4d5f90 174 174 mov ar.bspstore = r8 175 175 loadrs 176 176 177 177 # 178 178 # Initialize memory stack to some sane value and allocate a scratch area … … 196 196 srlz.i 197 197 srlz.d ;; 198 198 199 199 br.call.sptk.many b0 = arch_pre_main 200 200 0: -
uspace/Makefile
rd9f8dd13 rf4d5f90 121 121 drv/bus/usb/vhc \ 122 122 drv/nic/lo \ 123 drv/nic/ne2k 123 drv/nic/ne2k \ 124 drv/nic/e1k 124 125 125 126 ifeq ($(CONFIG_PCC),y) -
uspace/lib/c/Makefile
rd9f8dd13 rf4d5f90 70 70 generic/device/char_dev.c \ 71 71 generic/device/nic.c \ 72 generic/device/pci.c \ 72 73 generic/elf/elf_load.c \ 73 74 generic/event.c \ -
uspace/lib/c/generic/async.c
rd9f8dd13 rf4d5f90 1846 1846 1847 1847 fibril_mutex_lock(&async_sess_mutex); 1848 1848 1849 1849 int rc = async_hangup_internal(sess->phone); 1850 1850 -
uspace/lib/c/generic/ddi.c
rd9f8dd13 rf4d5f90 75 75 } 76 76 77 int dmamem_map(dmamem_t *dmamem, size_t pages, unsigned int map_flags, 78 unsigned int dma_flags) 79 { 80 // FIXME TODO 81 return -1; 82 } 83 84 int dmamem_unmap(dmamem_t *dmamem) 85 { 86 // FIXME TODO 87 return -1; 88 } 89 90 int dmamem_lock(void *virt, void **phys, size_t pages) 91 { 92 // FIXME TODO 93 return -1; 94 } 95 96 int dmamem_unlock(void *virt, size_t pages) 97 { 98 // FIXME TODO 99 return -1; 100 } 101 77 102 /** Enable I/O space range to task. 78 103 * 79 104 * Caller of this function must have the IO_MEM_MANAGER capability. 80 105 * 81 * @param id 82 * @param ioaddr 83 * @param size 106 * @param id Task ID. 107 * @param ioaddr Starting address of the I/O range. 108 * @param size Size of the range. 84 109 * 85 * @return 0 on success, EPERM if the caller lacks the 86 * CAP_IO_MANAGER capability, ENOENT if there is no task 87 * with specified ID and ENOMEM if there was some problem 88 * in allocating memory. 110 * @return EOK on success 111 * @return EPERM if the caller lacks the CAP_IO_MANAGER capability 112 * @return ENOENT if there is no task with specified ID 113 * @return ENOMEM if there was some problem in allocating memory. 114 * 89 115 */ 90 116 int iospace_enable(task_id_t id, void *ioaddr, unsigned long size) 91 117 { 92 118 ddi_ioarg_t arg; 93 119 94 120 arg.task_id = id; 95 121 arg.ioaddr = ioaddr; 96 122 arg.size = size; 97 123 98 124 return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg); 99 125 } … … 101 127 /** Enable PIO for specified I/O range. 102 128 * 103 * @param pio_addr 104 * @param size 105 * @param use_addr Address where the final address for application's PIO106 * 129 * @param pio_addr I/O start address. 130 * @param size Size of the I/O region. 131 * @param use_addr Address where the final address for 132 * application's PIO will be stored. 107 133 * 108 * @return Zero on success or negative error code. 134 * @return Zero on success or negative error code. 135 * 109 136 */ 110 137 int pio_enable(void *pio_addr, size_t size, void **use_addr) … … 114 141 size_t offset; 115 142 unsigned int pages; 116 143 117 144 #ifdef IO_SPACE_BOUNDARY 118 145 if (pio_addr < IO_SPACE_BOUNDARY) { … … 121 148 } 122 149 #endif 123 150 124 151 phys = (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); 125 152 offset = pio_addr - phys; -
uspace/lib/c/generic/device/nic.c
rd9f8dd13 rf4d5f90 895 895 * 896 896 */ 897 int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, int add, intstrip)897 int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, bool add, bool strip) 898 898 { 899 899 async_exch_t *exch = async_exchange_begin(dev_sess); -
uspace/lib/c/include/bitops.h
rd9f8dd13 rf4d5f90 40 40 /** Mask with bit @a n set. */ 41 41 #define BIT_V(type, n) \ 42 ((type) 1 << (n))42 ((type) 1 << (n)) 43 43 44 44 /** Mask with rightmost @a n bits set. */ -
uspace/lib/c/include/ddi.h
rd9f8dd13 rf4d5f90 40 40 #include <task.h> 41 41 42 typedef struct { 43 /** Physical memory */ 44 void *phys; 45 46 /** Virtual memory */ 47 void *virt; 48 49 /** Size in pages */ 50 size_t size; 51 52 /** Mapping flags */ 53 unsigned int flags; 54 } dmamem_t; 55 42 56 extern int device_assign_devno(void); 43 57 extern int physmem_map(void *, void *, size_t, unsigned int); 58 extern int dmamem_map(dmamem_t *, size_t, unsigned int, unsigned int); 59 extern int dmamem_unmap(dmamem_t *); 60 extern int dmamem_lock(void *, void **, size_t); 61 extern int dmamem_unlock(void *, size_t); 44 62 extern int iospace_enable(task_id_t, void *, unsigned long); 45 63 extern int pio_enable(void *, size_t, void **); -
uspace/lib/c/include/device/nic.h
rd9f8dd13 rf4d5f90 127 127 extern int nic_vlan_get_mask(async_sess_t *, nic_vlan_mask_t *); 128 128 extern int nic_vlan_set_mask(async_sess_t *, const nic_vlan_mask_t *); 129 extern int nic_vlan_set_tag(async_sess_t *, uint16_t, int, int);129 extern int nic_vlan_set_tag(async_sess_t *, uint16_t, bool, bool); 130 130 131 131 extern int nic_wol_virtue_add(async_sess_t *, nic_wv_type_t, const void *, -
uspace/lib/c/include/ipc/net.h
rd9f8dd13 rf4d5f90 305 305 * 306 306 */ 307 #define IPC_GET_DEVICE_HANDLE(call) ((devman_handle_t) IPC_GET_ARG2(call))307 #define IPC_GET_DEVICE_HANDLE(call) ((devman_handle_t) IPC_GET_ARG2(call)) 308 308 309 309 /** Return the device driver service message argument. -
uspace/lib/c/include/net/device.h
rd9f8dd13 rf4d5f90 77 77 #define NIC_PART_NUMBER_MAX_LENGTH 64 78 78 #define NIC_SERIAL_NUMBER_MAX_LENGTH 64 79 80 #define NIC_DEFECTIVE_LONG 0x0001 81 #define NIC_DEFECTIVE_SHORT 0x0002 82 #define NIC_DEFECTIVE_BAD_CRC 0x0010 83 #define NIC_DEFECTIVE_BAD_IPV4_CHECKSUM 0x0020 84 #define NIC_DEFECTIVE_BAD_IPV6_CHECKSUM 0x0040 85 #define NIC_DEFECTIVE_BAD_TCP_CHECKSUM 0x0080 86 #define NIC_DEFECTIVE_BAD_UDP_CHECKSUM 0x0100 79 87 80 88 /** -
uspace/lib/drv/generic/remote_nic.c
rd9f8dd13 rf4d5f90 829 829 830 830 uint16_t tag = (uint16_t) IPC_GET_ARG2(*call); 831 intadd = (int) IPC_GET_ARG3(*call);832 intstrip = (int) IPC_GET_ARG4(*call);831 bool add = (int) IPC_GET_ARG3(*call); 832 bool strip = (int) IPC_GET_ARG4(*call); 833 833 834 834 int rc = nic_iface->vlan_set_tag(dev, tag, add, strip); -
uspace/lib/drv/include/ops/nic.h
rd9f8dd13 rf4d5f90 89 89 int (*vlan_get_mask)(ddf_fun_t *, nic_vlan_mask_t *); 90 90 int (*vlan_set_mask)(ddf_fun_t *, const nic_vlan_mask_t *); 91 int (*vlan_set_tag)(ddf_fun_t *, uint16_t, int, int);91 int (*vlan_set_tag)(ddf_fun_t *, uint16_t, bool, bool); 92 92 93 93 int (*wol_virtue_add)(ddf_fun_t *, nic_wv_type_t, const void *, -
uspace/lib/nic/include/nic.h
rd9f8dd13 rf4d5f90 275 275 276 276 /* Packet DMA lock */ 277 extern void * nic_dma_lock_packet(packet_t * packet);278 extern void nic_dma_unlock_packet(packet_t * packet);277 extern void *nic_dma_lock_packet(packet_t *); 278 extern int nic_dma_unlock_packet(packet_t *); 279 279 280 280 #endif // __NIC_H__ -
uspace/lib/nic/src/nic_driver.c
rd9f8dd13 rf4d5f90 1329 1329 } 1330 1330 1331 // FIXME: Later1332 #if 01333 1334 1331 /** Lock packet for DMA usage 1335 1332 * … … 1340 1337 { 1341 1338 void *phys_addr; 1342 size_t locked; 1343 int rc = dma_lock(packet, &phys_addr, 1, &locked); 1339 int rc = dmamem_lock(packet, &phys_addr, 1); 1344 1340 if (rc != EOK) 1345 1341 return NULL; 1346 1342 1347 assert(locked == 1);1348 1343 return phys_addr; 1349 1344 } … … 1353 1348 * @param packet 1354 1349 */ 1355 void nic_dma_unlock_packet(packet_t *packet) 1356 { 1357 size_t unlocked; 1358 int rc = dma_unlock(packet, 1, &unlocked); 1359 if (rc != EOK) 1360 return; 1361 1362 assert(unlocked == 1); 1363 } 1364 1365 #endif 1350 int nic_dma_unlock_packet(packet_t *packet) 1351 { 1352 return dmamem_unlock(packet, 1); 1353 } 1366 1354 1367 1355 /** @} -
uspace/lib/usbhost/Makefile
rd9f8dd13 rf4d5f90 32 32 -I$(LIBUSB_PREFIX)/include \ 33 33 -I$(LIBDRV_PREFIX)/include \ 34 -Iinclude 34 -Iinclude 35 35 36 36 SOURCES = \ -
uspace/srv/fs/exfat/exfat_bitmap.c
rd9f8dd13 rf4d5f90 45 45 #include <assert.h> 46 46 #include <fibril_synch.h> 47 #include <malloc.h>48 47 #include <mem.h> 49 48 -
uspace/srv/fs/exfat/exfat_dentry.c
rd9f8dd13 rf4d5f90 101 101 bool exfat_valid_char(wchar_t ch) 102 102 { 103 /* TODO */ 104 return true; 103 switch (ch) { 104 case 0x01 ... 0x1F: 105 case '/': 106 case '\\': 107 case '?': 108 case '|': 109 case '>': 110 case '<': 111 case '"': 112 case '*': 113 case ':': 114 return false; 115 default: 116 return true; 117 } 105 118 } 106 119 107 120 bool exfat_valid_name(const char *name) 108 121 { 109 /* TODO */ 122 size_t off = 0; 123 wchar_t ch; 124 125 while ((ch = str_decode(name, &off, STR_NO_LIMIT)) != 0) { 126 if (!exfat_valid_char(ch)) 127 return false; 128 } 110 129 return true; 111 130 } -
uspace/srv/fs/exfat/exfat_directory.c
rd9f8dd13 rf4d5f90 112 112 rc = block_put(di->b); 113 113 di->b = NULL; 114 if (rc != EOK) 115 return rc; 114 116 } 115 117 if (!di->b) { … … 266 268 if (idx == 2 || idx == 3) 267 269 continue; 268 checksum = ((checksum << 15) | (checksum >> 1)) + (uint16_t)bytes[idx]; 270 checksum = ((checksum << 15) | (checksum >> 1)) + 271 (uint16_t)bytes[idx]; 269 272 } 270 273 return checksum; … … 310 313 array[1].stream.valid_data_size = host2uint64_t_le(ds->valid_data_size); 311 314 array[1].stream.data_size = host2uint64_t_le(ds->data_size); 312 array[0].file.checksum = host2uint16_t_le(exfat_directory_set_checksum((uint8_t *)array, 315 array[0].file.checksum = 316 host2uint16_t_le(exfat_directory_set_checksum((uint8_t *)array, 313 317 count * sizeof(exfat_dentry_t))); 314 318 … … 352 356 uctablep = EXFAT_NODE(fn); 353 357 354 uctable_chars = ALIGN_DOWN(uctablep->size, sizeof(uint16_t)) / sizeof(uint16_t); 358 uctable_chars = ALIGN_DOWN(uctablep->size, 359 sizeof(uint16_t)) / sizeof(uint16_t); 355 360 uctable = (uint16_t *) malloc(uctable_chars * sizeof(uint16_t)); 356 361 rc = exfat_read_uctable(di->bs, uctablep, (uint8_t *)uctable); … … 417 422 return rc; 418 423 419 if (i == df.file.count - 2) 420 chars = ds.stream.name_size - EXFAT_NAME_PART_LEN*(df.file.count - 2); 424 if (i == df.file.count - 2) { 425 chars = ds.stream.name_size - 426 EXFAT_NAME_PART_LEN*(df.file.count - 2); 427 } 428 421 429 rc = exfat_directory_get(di, &de); 422 430 if (rc != EOK) -
uspace/srv/fs/exfat/exfat_fat.c
rd9f8dd13 rf4d5f90 50 50 #include <malloc.h> 51 51 #include <mem.h> 52 #include <str.h> 52 53 53 54 … … 322 323 (found == 0) ? EXFAT_CLST_EOF : lifo[found - 1]); 323 324 if (rc != EOK) 324 break;325 goto exit_error; 325 326 found++; 326 327 rc = bitmap_set_cluster(bs, service_id, clst); 327 328 if (rc != EOK) 328 break;329 goto exit_error; 329 330 330 331 } … … 339 340 } 340 341 342 rc = ENOSPC; 343 344 exit_error: 345 341 346 /* If something wrong - free the clusters */ 342 347 while (found--) { … … 347 352 free(lifo); 348 353 fibril_mutex_unlock(&exfat_alloc_lock); 349 return ENOSPC;354 return rc; 350 355 } 351 356 … … 537 542 int exfat_sanity_check(exfat_bs_t *bs, service_id_t service_id) 538 543 { 539 /* TODO */ 544 if (str_cmp((char const *)bs->oem_name, "EXFAT ")) 545 return ENOTSUP; 546 else if (uint16_t_le2host(bs->signature) != 0xAA55) 547 return ENOTSUP; 548 else if (uint32_t_le2host(bs->fat_sector_count) == 0) 549 return ENOTSUP; 550 else if (uint32_t_le2host(bs->data_clusters) == 0) 551 return ENOTSUP; 552 else if (bs->fat_count != 1) 553 return ENOTSUP; 554 else if ((bs->bytes_per_sector + bs->sec_per_cluster) > 25) { 555 /* exFAT does not support cluster size > 32 Mb */ 556 return ENOTSUP; 557 } 540 558 return EOK; 541 559 } -
uspace/srv/fs/exfat/exfat_ops.c
rd9f8dd13 rf4d5f90 657 657 return rc; 658 658 } 659 660 rc = exfat_zero_cluster(bs, service_id, nodep->firstc); 661 if (rc != EOK) { 662 (void) exfat_node_put(FS_NODE(nodep)); 663 return rc; 664 } 665 659 666 nodep->size = BPC(bs); 660 667 } else { … … 739 746 */ 740 747 rc = exfat_directory_write_file(&di, name); 741 if (rc != EOK) 742 return rc; 748 if (rc != EOK) { 749 (void) exfat_directory_close(&di); 750 fibril_mutex_unlock(&parentp->idx->lock); 751 return rc; 752 } 743 753 rc = exfat_directory_close(&di); 744 if (rc != EOK) 745 return rc; 754 if (rc != EOK) { 755 fibril_mutex_unlock(&parentp->idx->lock); 756 return rc; 757 } 746 758 747 759 fibril_mutex_unlock(&parentp->idx->lock); … … 1258 1270 exfat_directory_t di; 1259 1271 rc = exfat_directory_open(nodep, &di); 1260 if (rc != EOK) goto err; 1272 if (rc != EOK) 1273 goto err; 1274 1261 1275 rc = exfat_directory_seek(&di, pos); 1262 1276 if (rc != EOK) { … … 1268 1282 &df, &ds); 1269 1283 if (rc == EOK) 1270 goto hit; 1271 if (rc == ENOENT) 1272 goto miss; 1284 goto hit; 1285 else if (rc == ENOENT) 1286 goto miss; 1287 1288 (void) exfat_directory_close(&di); 1273 1289 1274 1290 err: … … 1279 1295 miss: 1280 1296 rc = exfat_directory_close(&di); 1281 if (rc !=EOK)1297 if (rc != EOK) 1282 1298 goto err; 1283 1299 rc = exfat_node_put(fn); … … 1397 1413 1398 1414 (void) async_data_write_finalize(callid, 1399 1415 b->data + pos % BPS(bs), bytes); 1400 1416 b->dirty = true; /* need to sync block */ 1401 1417 rc = block_put(b);
Note:
See TracChangeset
for help on using the changeset viewer.