Changeset a0a134b in mainline for uspace/srv
- Timestamp:
- 2011-04-13T18:27:21Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4c70554
- Parents:
- d6522dd (diff), b77ce84 (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. - Location:
- uspace/srv
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/ata_bd/ata_bd.c
rd6522dd ra0a134b 372 372 uint16_t w; 373 373 uint8_t c; 374 uint16_t bc; 374 375 size_t pos, len; 375 376 int rc; … … 387 388 } else if (rc == EIO) { 388 389 /* 389 * There is something, but not a register device. 390 * It could be a packet device. 390 * There is something, but not a register device. Check to see 391 * whether the IDENTIFY command left the packet signature in 392 * the registers in case this is a packet device. 393 * 394 * According to the ATA specification, the LBA low and 395 * interrupt reason registers should be set to 0x01. However, 396 * there are many devices that do not follow this and only set 397 * the byte count registers. So, only check these. 391 398 */ 392 rc = identify_pkt_dev(disk_id, &idata); 393 if (rc == EOK) { 394 /* We have a packet device. */ 395 d->dev_type = ata_pkt_dev; 399 bc = ((uint16_t)pio_read_8(&cmd->cylinder_high) << 8) | 400 pio_read_8(&cmd->cylinder_low); 401 402 if (bc == PDEV_SIGNATURE_BC) { 403 rc = identify_pkt_dev(disk_id, &idata); 404 if (rc == EOK) { 405 /* We have a packet device. */ 406 d->dev_type = ata_pkt_dev; 407 } else { 408 return EIO; 409 } 396 410 } else { 397 411 /* Nope. Something's there, but not recognized. */ … … 403 417 } 404 418 405 printf("device caps: 0x%04x\n", idata.caps);406 419 if (d->dev_type == ata_pkt_dev) { 407 420 /* Packet device */ … … 566 579 567 580 /* 568 * This is where we would most likely expect a non-existing device to 569 * show up by not setting SR_DRDY. 581 * Do not wait for DRDY to be set in case this is a packet device. 582 * We determine whether the device is present by waiting for DRQ to be 583 * set after issuing the command. 570 584 */ 571 if (wait_status( SR_DRDY, ~SR_BSY, NULL, TIMEOUT_PROBE) != EOK)585 if (wait_status(0, ~SR_BSY, NULL, TIMEOUT_PROBE) != EOK) 572 586 return ETIMEOUT; 573 587 … … 577 591 return ETIMEOUT; 578 592 593 /* 594 * If ERR is set, this may be a packet device, so return EIO to cause 595 * the caller to check for one. 596 */ 597 if ((status & SR_ERR) != 0) { 598 return EIO; 599 } 600 601 if (wait_status(SR_DRQ, ~SR_BSY, &status, TIMEOUT_PROBE) != EOK) 602 return ETIMEOUT; 603 579 604 /* Read data from the disk buffer. */ 580 605 581 if ((status & SR_DRQ) != 0) { 582 for (i = 0; i < identify_data_size / 2; i++) { 583 data = pio_read_16(&cmd->data_port); 584 ((uint16_t *) buf)[i] = data; 585 } 586 } 587 588 if ((status & SR_ERR) != 0) { 589 return EIO; 606 for (i = 0; i < identify_data_size / 2; i++) { 607 data = pio_read_16(&cmd->data_port); 608 ((uint16_t *) buf)[i] = data; 590 609 } 591 610 -
uspace/srv/bd/ata_bd/ata_hw.h
rd6522dd ra0a134b 293 293 }; 294 294 295 enum ata_pdev_signature { 296 /** 297 * Signature put by a packet device in byte count register 298 * in response to Identify command. 299 */ 300 PDEV_SIGNATURE_BC = 0xEB14 301 }; 302 295 303 #endif 296 304 -
uspace/srv/devman/devman.c
rd6522dd ra0a134b 555 555 } 556 556 557 /** Remember the driver's phone.558 *559 * @param driver The driver.560 * @param phone The phone to the driver.561 */562 void set_driver_phone(driver_t *driver, sysarg_t phone)563 {564 fibril_mutex_lock(&driver->driver_mutex);565 assert(driver->state == DRIVER_STARTING);566 driver->phone = phone;567 fibril_mutex_unlock(&driver->driver_mutex);568 }569 570 557 /** Notify driver about the devices to which it was assigned. 571 558 * … … 685 672 list_initialize(&drv->devices); 686 673 fibril_mutex_initialize(&drv->driver_mutex); 674 drv->phone = -1; 687 675 } 688 676 -
uspace/srv/devman/devman.h
rd6522dd ra0a134b 88 88 89 89 /** Phone asociated with this driver. */ 90 sysarg_t phone;90 int phone; 91 91 /** Name of the device driver. */ 92 92 char *name; … … 316 316 317 317 extern driver_t *find_driver(driver_list_t *, const char *); 318 extern void set_driver_phone(driver_t *, sysarg_t);319 318 extern void initialize_running_driver(driver_t *, dev_tree_t *); 320 319 -
uspace/srv/devman/main.c
rd6522dd ra0a134b 95 95 /* Find driver structure. */ 96 96 driver = find_driver(&drivers_list, drv_name); 97 98 97 if (driver == NULL) { 99 98 log_msg(LVL_ERROR, "No driver named `%s' was found.", drv_name); … … 107 106 drv_name = NULL; 108 107 108 fibril_mutex_lock(&driver->driver_mutex); 109 110 if (driver->phone >= 0) { 111 /* We already have a connection to the driver. */ 112 log_msg(LVL_ERROR, "Driver '%s' already started.\n", 113 driver->name); 114 fibril_mutex_unlock(&driver->driver_mutex); 115 async_answer_0(iid, EEXISTS); 116 return NULL; 117 } 118 119 switch (driver->state) { 120 case DRIVER_NOT_STARTED: 121 /* Somebody started the driver manually. */ 122 log_msg(LVL_NOTE, "Driver '%s' started manually.\n", 123 driver->name); 124 driver->state = DRIVER_STARTING; 125 break; 126 case DRIVER_STARTING: 127 /* The expected case */ 128 break; 129 case DRIVER_RUNNING: 130 /* Should not happen since we do not have a connected phone */ 131 assert(false); 132 } 133 109 134 /* Create connection to the driver. */ 110 135 log_msg(LVL_DEBUG, "Creating connection to the `%s' driver.", … … 113 138 ipc_callid_t callid = async_get_call(&call); 114 139 if (IPC_GET_IMETHOD(call) != IPC_M_CONNECT_TO_ME) { 140 fibril_mutex_unlock(&driver->driver_mutex); 115 141 async_answer_0(callid, ENOTSUP); 116 142 async_answer_0(iid, ENOTSUP); … … 119 145 120 146 /* Remember driver's phone. */ 121 set_driver_phone(driver, IPC_GET_ARG5(call)); 147 driver->phone = IPC_GET_ARG5(call); 148 149 fibril_mutex_unlock(&driver->driver_mutex); 122 150 123 151 log_msg(LVL_NOTE, … … 579 607 method = DRIVER_CLIENT; 580 608 581 if (driver->phone < =0) {609 if (driver->phone < 0) { 582 610 log_msg(LVL_ERROR, 583 611 "Could not forward to driver `%s' (phone is %d).", … … 619 647 dev = fun->dev; 620 648 621 if (dev->state != DEVICE_USABLE || dev->drv->phone < =0) {649 if (dev->state != DEVICE_USABLE || dev->drv->phone < 0) { 622 650 async_answer_0(iid, EINVAL); 623 651 return; -
uspace/srv/fs/fat/fat_ops.c
rd6522dd ra0a134b 722 722 (str_cmp((char *) d->name, FAT_NAME_DOT)) == 0) { 723 723 memset(d, 0, sizeof(fat_dentry_t)); 724 str_cpy((char *) d->name, 8, FAT_NAME_DOT);725 str_cpy((char *) d->ext, 3, FAT_EXT_PAD);724 memcpy(d->name, FAT_NAME_DOT, FAT_NAME_LEN); 725 memcpy(d->ext, FAT_EXT_PAD, FAT_EXT_LEN); 726 726 d->attr = FAT_ATTR_SUBDIR; 727 727 d->firstc = host2uint16_t_le(childp->firstc); … … 732 732 (str_cmp((char *) d->name, FAT_NAME_DOT_DOT) == 0)) { 733 733 memset(d, 0, sizeof(fat_dentry_t)); 734 str_cpy((char *) d->name, 8, FAT_NAME_DOT_DOT);735 str_cpy((char *) d->ext, 3, FAT_EXT_PAD);734 memcpy(d->name, FAT_NAME_DOT_DOT, FAT_NAME_LEN); 735 memcpy(d->ext, FAT_EXT_PAD, FAT_EXT_LEN); 736 736 d->attr = FAT_ATTR_SUBDIR; 737 737 d->firstc = (parentp->firstc == FAT_CLST_ROOT) ? -
uspace/srv/net/il/ip/ip.c
rd6522dd ra0a134b 176 176 socklen_t addrlen; 177 177 178 / / detach the first packet and release the others178 /* Detach the first packet and release the others */ 179 179 next = pq_detach(packet); 180 180 if (next) … … 185 185 return ENOMEM; 186 186 187 / / get header187 /* Get header */ 188 188 header = (ip_header_t *) packet_get_data(packet); 189 189 if (!header) … … 192 192 } 193 193 194 / / only for the first fragment194 /* Only for the first fragment */ 195 195 if (IP_FRAGMENT_OFFSET(header)) 196 196 return EINVAL; 197 197 198 / / not for the ICMP protocol198 /* Not for the ICMP protocol */ 199 199 if (header->protocol == IPPROTO_ICMP) 200 200 return EPERM; 201 201 202 / / set the destination address202 /* Set the destination address */ 203 203 switch (header->version) { 204 204 case IPVERSION: … … 351 351 configuration = &names[0]; 352 352 353 / / get configuration353 /* Get configuration */ 354 354 rc = net_get_device_conf_req(ip_globals.net_phone, ip_netif->device_id, 355 355 &configuration, count, &data); … … 419 419 } 420 420 421 / / binds the netif service which also initializes the device421 /* Bind netif service which also initializes the device */ 422 422 ip_netif->phone = nil_bind_service(ip_netif->service, 423 423 (sysarg_t) ip_netif->device_id, SERVICE_IP, … … 429 429 } 430 430 431 / / has to be after the device netif module initialization431 /* Has to be after the device netif module initialization */ 432 432 if (ip_netif->arp) { 433 433 if (route) { … … 445 445 } 446 446 447 / / get packet dimensions447 /* Get packet dimensions */ 448 448 rc = nil_packet_size_req(ip_netif->phone, ip_netif->device_id, 449 449 &ip_netif->packet_dimension); … … 463 463 464 464 if (gateway.s_addr) { 465 / / the default gateway465 /* The default gateway */ 466 466 ip_globals.gateway.address.s_addr = 0; 467 467 ip_globals.gateway.netmask.s_addr = 0; … … 512 512 ip_netif->arp->usage++; 513 513 514 / / print the settings514 /* Print the settings */ 515 515 printf("%s: Device registered (id: %d, phone: %d, ipv: %d, conf: %s)\n", 516 516 NAME, ip_netif->device_id, ip_netif->phone, ip_netif->ipv, … … 587 587 ip_netif_t *netif; 588 588 589 / / start with the last netif - the newest one589 /* Start with the last netif - the newest one */ 590 590 index = ip_netifs_count(&ip_globals.netifs) - 1; 591 591 while (index >= 0) { … … 629 629 size_t length; 630 630 631 / / copy first itself631 /* Copy first itself */ 632 632 memcpy(last, first, sizeof(ip_header_t)); 633 633 length = sizeof(ip_header_t); 634 634 next = sizeof(ip_header_t); 635 635 636 / / process all ip options636 /* Process all IP options */ 637 637 while (next < first->header_length) { 638 638 option = (ip_option_t *) (((uint8_t *) first) + next); 639 / / skip end or noop639 /* Skip end or noop */ 640 640 if ((option->type == IPOPT_END) || 641 641 (option->type == IPOPT_NOOP)) { 642 642 next++; 643 643 } else { 644 / / copy if told so or skip644 /* Copy if told so or skip */ 645 645 if (IPOPT_COPIED(option->type)) { 646 646 memcpy(((uint8_t *) last) + length, … … 648 648 length += option->length; 649 649 } 650 / / next option650 /* Next option */ 651 651 next += option->length; 652 652 } 653 653 } 654 654 655 / / align 4 byte boundary655 /* Align 4 byte boundary */ 656 656 if (length % 4) { 657 657 bzero(((uint8_t *) last) + length, 4 - (length % 4)); … … 789 789 790 790 header->total_length = htons(length); 791 / / unnecessary for all protocols791 /* Unnecessary for all protocols */ 792 792 header->header_checksum = IP_HEADER_CHECKSUM(header); 793 793 … … 916 916 return ENOMEM; 917 917 918 / / get header918 /* Get header */ 919 919 header = (ip_header_t *) packet_get_data(packet); 920 920 if (!header) 921 921 return EINVAL; 922 922 923 / / fragmentation forbidden?923 /* Fragmentation forbidden? */ 924 924 if(header->flags & IPFLAG_DONT_FRAGMENT) 925 925 return EPERM; 926 926 927 / / create the last fragment927 /* Create the last fragment */ 928 928 new_packet = packet_get_4_remote(ip_globals.net_phone, prefix, length, 929 929 suffix, ((addrlen > addr_len) ? addrlen : addr_len)); … … 931 931 return ENOMEM; 932 932 933 / / allocate as much as originally933 /* Allocate as much as originally */ 934 934 last_header = (ip_header_t *) packet_suffix(new_packet, 935 935 IP_HEADER_LENGTH(header)); … … 939 939 ip_create_last_header(last_header, header); 940 940 941 / / trim the unused space941 /* Trim the unused space */ 942 942 rc = packet_trim(new_packet, 0, 943 943 IP_HEADER_LENGTH(header) - IP_HEADER_LENGTH(last_header)); … … 945 945 return ip_release_and_return(packet, rc); 946 946 947 / / biggest multiple of 8 lower than content947 /* Greatest multiple of 8 lower than content */ 948 948 // TODO even fragmentation? 949 949 length = length & ~0x7; … … 957 957 return ip_release_and_return(packet, rc); 958 958 959 / / mark the first as fragmented959 /* Mark the first as fragmented */ 960 960 header->flags |= IPFLAG_MORE_FRAGMENTS; 961 961 962 / / create middle framgents962 /* Create middle fragments */ 963 963 while (IP_TOTAL_LENGTH(header) > length) { 964 964 new_packet = packet_get_4_remote(ip_globals.net_phone, prefix, … … 981 981 } 982 982 983 / / finish the first fragment983 /* Finish the first fragment */ 984 984 header->header_checksum = IP_HEADER_CHECKSUM(header); 985 985 … … 1012 1012 1013 1013 next = packet; 1014 / / check all packets1014 /* Check all packets */ 1015 1015 while (next) { 1016 1016 length = packet_get_data_length(next); … … 1021 1021 } 1022 1022 1023 / / too long1023 /* Too long */ 1024 1024 result = ip_fragment_packet(next, content, prefix, 1025 1025 suffix, addr_len); … … 1027 1027 new_packet = pq_detach(next); 1028 1028 if (next == packet) { 1029 / / the new first packet of the queue1029 /* The new first packet of the queue */ 1030 1030 packet = new_packet; 1031 1031 } 1032 / / fragmentation needed?1032 /* Fragmentation needed? */ 1033 1033 if (result == EPERM) { 1034 1034 phone = ip_prepare_icmp_and_get_phone( 1035 1035 error, next, NULL); 1036 1036 if (phone >= 0) { 1037 / / fragmentation necessary ICMP1037 /* Fragmentation necessary ICMP */ 1038 1038 icmp_destination_unreachable_msg(phone, 1039 1039 ICMP_FRAG_NEEDED, content, next); … … 1080 1080 int rc; 1081 1081 1082 / / get destination hardware address1082 /* Get destination hardware address */ 1083 1083 if (netif->arp && (route->address.s_addr != dest.s_addr)) { 1084 1084 destination.value = route->gateway.s_addr ? … … 1102 1102 NULL); 1103 1103 if (phone >= 0) { 1104 / / unreachable ICMP if no routing1104 /* Unreachable ICMP if no routing */ 1105 1105 icmp_destination_unreachable_msg(phone, 1106 1106 ICMP_HOST_UNREACH, 0, packet); … … 1148 1148 int rc; 1149 1149 1150 // addresses in the host byte order 1151 // should be the next hop address or the target destination address 1150 /* 1151 * Addresses in the host byte order 1152 * Should be the next hop address or the target destination address 1153 */ 1152 1154 addrlen = packet_get_addr(packet, NULL, (uint8_t **) &addr); 1153 1155 if (addrlen < 0) … … 1174 1176 fibril_rwlock_read_lock(&ip_globals.netifs_lock); 1175 1177 1176 / / device specified?1178 /* Device specified? */ 1177 1179 if (device_id > 0) { 1178 1180 netif = ip_netifs_find(&ip_globals.netifs, device_id); … … 1190 1192 phone = ip_prepare_icmp_and_get_phone(error, packet, NULL); 1191 1193 if (phone >= 0) { 1192 / / unreachable ICMP if no routing1194 /* Unreachable ICMP if no routing */ 1193 1195 icmp_destination_unreachable_msg(phone, 1194 1196 ICMP_NET_UNREACH, 0, packet); … … 1198 1200 1199 1201 if (error) { 1200 // do not send for broadcast, anycast packets or network 1201 // broadcast 1202 /* 1203 * Do not send for broadcast, anycast packets or network 1204 * broadcast. 1205 */ 1202 1206 if (!dest->s_addr || !(~dest->s_addr) || 1203 1207 !(~((dest->s_addr & ~route->netmask.s_addr) | … … 1208 1212 } 1209 1213 1210 / / if the local host is the destination1214 /* If the local host is the destination */ 1211 1215 if ((route->address.s_addr == dest->s_addr) && 1212 1216 (dest->s_addr != IPV4_LOCALHOST_ADDRESS)) { 1213 / / find the loopback device to deliver1217 /* Find the loopback device to deliver */ 1214 1218 dest->s_addr = IPV4_LOCALHOST_ADDRESS; 1215 1219 route = ip_find_route(*dest); … … 1220 1224 NULL); 1221 1225 if (phone >= 0) { 1222 / / unreachable ICMP if no routing1226 /* Unreachable ICMP if no routing */ 1223 1227 icmp_destination_unreachable_msg(phone, 1224 1228 ICMP_HOST_UNREACH, 0, packet); … … 1252 1256 1253 1257 fibril_rwlock_write_lock(&ip_globals.netifs_lock); 1254 / / find the device1258 /* Find the device */ 1255 1259 netif = ip_netifs_find(&ip_globals.netifs, device_id); 1256 1260 if (!netif) { … … 1344 1348 return ip_release_and_return(packet, rc); 1345 1349 1346 / / trim padding if present1350 /* Trim padding if present */ 1347 1351 if (!error && 1348 1352 (IP_TOTAL_LENGTH(header) < packet_get_data_length(packet))) { … … 1360 1364 phone = ip_prepare_icmp_and_get_phone(error, packet, header); 1361 1365 if (phone >= 0) { 1362 / / unreachable ICMP1366 /* Unreachable ICMP */ 1363 1367 icmp_destination_unreachable_msg(phone, 1364 1368 ICMP_PROT_UNREACH, 0, packet); … … 1417 1421 return ip_release_and_return(packet, ENOMEM); 1418 1422 1419 / / checksum1423 /* Checksum */ 1420 1424 if ((header->header_checksum) && 1421 1425 (IP_HEADER_CHECKSUM(header) != IP_CHECKSUM_ZERO)) { 1422 1426 phone = ip_prepare_icmp_and_get_phone(0, packet, header); 1423 1427 if (phone >= 0) { 1424 / / checksum error ICMP1428 /* Checksum error ICMP */ 1425 1429 icmp_parameter_problem_msg(phone, ICMP_PARAM_POINTER, 1426 1430 ((size_t) ((void *) &header->header_checksum)) - … … 1433 1437 phone = ip_prepare_icmp_and_get_phone(0, packet, header); 1434 1438 if (phone >= 0) { 1435 / / ttl exceeded ICMP1439 /* TTL exceeded ICMP */ 1436 1440 icmp_time_exceeded_msg(phone, ICMP_EXC_TTL, packet); 1437 1441 } … … 1439 1443 } 1440 1444 1441 / / process ipopt and get destination1445 /* Process ipopt and get destination */ 1442 1446 dest = ip_get_destination(header); 1443 1447 1444 / / set the addrination address1448 /* Set the destination address */ 1445 1449 switch (header->version) { 1446 1450 case IPVERSION: … … 1464 1468 phone = ip_prepare_icmp_and_get_phone(0, packet, header); 1465 1469 if (phone >= 0) { 1466 / / unreachable ICMP1470 /* Unreachable ICMP */ 1467 1471 icmp_destination_unreachable_msg(phone, 1468 1472 ICMP_HOST_UNREACH, 0, packet); … … 1472 1476 1473 1477 if (route->address.s_addr == dest.s_addr) { 1474 / / local delivery1478 /* Local delivery */ 1475 1479 return ip_deliver_local(device_id, packet, header, 0); 1476 1480 } … … 1484 1488 phone = ip_prepare_icmp_and_get_phone(0, packet, header); 1485 1489 if (phone >= 0) { 1486 / / unreachable ICMP if no routing1490 /* Unreachable ICMP if no routing */ 1487 1491 icmp_destination_unreachable_msg(phone, ICMP_HOST_UNREACH, 0, 1488 1492 packet); … … 1770 1774 header = (ip_header_t *)(data + offset); 1771 1775 1772 / / destination host unreachable?1776 /* Destination host unreachable? */ 1773 1777 if ((type != ICMP_DEST_UNREACH) || 1774 1778 (code != ICMP_HOST_UNREACH)) { 1775 // no, something else1779 /* No, something else */ 1776 1780 break; 1777 1781 } … … 1787 1791 route = ip_routes_get_index(&netif->routes, 0); 1788 1792 1789 / / from the same network?1793 /* From the same network? */ 1790 1794 if (route && ((route->address.s_addr & route->netmask.s_addr) == 1791 1795 (header->destination_address & route->netmask.s_addr))) { 1792 / / clear the ARP mapping if any1796 /* Clear the ARP mapping if any */ 1793 1797 address.value = (uint8_t *) &header->destination_address; 1794 1798 address.length = sizeof(header->destination_address); … … 1844 1848 fibril_rwlock_read_lock(&ip_globals.lock); 1845 1849 route = ip_find_route(*dest); 1846 / / if the local host is the destination1850 /* If the local host is the destination */ 1847 1851 if (route && (route->address.s_addr == dest->s_addr) && 1848 1852 (dest->s_addr != IPV4_LOCALHOST_ADDRESS)) { 1849 / / find the loopback device to deliver1853 /* Find the loopback device to deliver */ 1850 1854 dest->s_addr = IPV4_LOCALHOST_ADDRESS; 1851 1855 route = ip_find_route(*dest); -
uspace/srv/net/nil/eth/eth.c
rd6522dd ra0a134b 531 531 proto->service); 532 532 } else { 533 / / drop invalid/unknown533 /* Drop invalid/unknown */ 534 534 pq_release_remote(eth_globals.net_phone, 535 535 packet_get_id(packet)); -
uspace/srv/net/tl/tcp/tcp.c
rd6522dd ra0a134b 299 299 return tcp_release_and_return(packet, NO_DATA); 300 300 301 // printf("header len %d, port %d \n", TCP_HEADER_LENGTH(header), 302 // ntohs(header->destination_port)); 303 301 #if 0 302 printf("header len %d, port %d \n", TCP_HEADER_LENGTH(header), 303 ntohs(header->destination_port)); 304 #endif 304 305 result = packet_get_addr(packet, (uint8_t **) &src, (uint8_t **) &dest); 305 306 if (result <= 0) … … 1062 1063 tcp_process_acknowledgement(socket, socket_data, header); 1063 1064 1064 socket_data->next_incoming = ntohl(header->sequence_number); // + 1;1065 socket_data->next_incoming = ntohl(header->sequence_number); /* + 1; */ 1065 1066 pq_release_remote(tcp_globals.net_phone, packet_get_id(packet)); 1066 1067 socket_data->state = TCP_SOCKET_ESTABLISHED; -
uspace/srv/net/tl/tcp/tcp.h
rd6522dd ra0a134b 190 190 int backlog; 191 191 192 // /** Segment size. */193 // size_t segment_size;194 195 192 /** 196 193 * Parent listening socket identifier. -
uspace/srv/net/tl/udp/udp.c
rd6522dd ra0a134b 499 499 device_id_t device_id; 500 500 packet_dimension_t *packet_dimension; 501 size_t size; 501 502 int rc; 503 504 /* In case of error, do not update the data fragment size. */ 505 *data_fragment_size = 0; 502 506 503 507 rc = tl_get_address_port(addr, addrlen, &dest_port); … … 539 543 packet_dimension = &udp_globals.packet_dimension; 540 544 // } 545 546 /* 547 * Update the data fragment size based on what the lower layers can 548 * handle without fragmentation, but not more than the maximum allowed 549 * for UDP. 550 */ 551 size = MAX_UDP_FRAGMENT_SIZE; 552 if (packet_dimension->content < size) 553 size = packet_dimension->content; 554 *data_fragment_size = size; 541 555 542 556 /* Read the first packet fragment */ … … 740 754 int socket_id; 741 755 size_t addrlen; 742 size_t size = 0;756 size_t size; 743 757 ipc_call_t answer; 744 758 size_t answer_count; … … 786 800 break; 787 801 802 size = MAX_UDP_FRAGMENT_SIZE; 788 803 if (tl_get_ip_packet_dimension(udp_globals.ip_phone, 789 804 &udp_globals.dimensions, DEVICE_INVALID_ID, 790 805 &packet_dimension) == EOK) { 791 SOCKET_SET_DATA_FRAGMENT_SIZE(answer,792 packet_dimension->content);806 if (packet_dimension->content < size) 807 size = packet_dimension->content; 793 808 } 794 795 // SOCKET_SET_DATA_FRAGMENT_SIZE(answer, 796 // MAX_UDP_FRAGMENT_SIZE); 809 SOCKET_SET_DATA_FRAGMENT_SIZE(answer, size); 797 810 SOCKET_SET_HEADER_SIZE(answer, UDP_HEADER_SIZE); 798 811 answer_count = 3; -
uspace/srv/vfs/vfs_file.c
rd6522dd ra0a134b 258 258 if ((fd >= 0) && (fd < MAX_OPEN_FILES)) { 259 259 vfs_file_t *file = FILES[fd]; 260 vfs_file_addref(file); 261 fibril_mutex_unlock(&VFS_DATA->lock); 262 return file; 260 if (file != NULL) { 261 vfs_file_addref(file); 262 fibril_mutex_unlock(&VFS_DATA->lock); 263 return file; 264 } 263 265 } 264 266 fibril_mutex_unlock(&VFS_DATA->lock);
Note:
See TracChangeset
for help on using the changeset viewer.