Changeset 557c7d0 in mainline for uspace/srv
- Timestamp:
- 2010-12-19T10:12:49Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8dd039a, f568ee7
- Parents:
- 11658b64 (diff), 40dc422 (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:
-
- 18 edited
-
devman/devman.c (modified) (6 diffs)
-
devman/main.c (modified) (5 diffs)
-
devmap/devmap.c (modified) (4 diffs)
-
hw/netif/dp8390/dp8390_module.c (modified) (2 diffs)
-
net/il/arp/arp.c (modified) (5 diffs)
-
net/il/arp/arp_module.c (modified) (1 diff)
-
net/il/ip/ip.c (modified) (7 diffs)
-
net/il/ip/ip_module.c (modified) (1 diff)
-
net/net/net.c (modified) (1 diff)
-
net/netif/lo/lo.c (modified) (1 diff)
-
net/nil/eth/eth.c (modified) (1 diff)
-
net/nil/eth/eth_module.c (modified) (1 diff)
-
net/nil/nildummy/nildummy_module.c (modified) (1 diff)
-
net/tl/icmp/icmp_module.c (modified) (1 diff)
-
net/tl/tcp/tcp.c (modified) (3 diffs)
-
net/tl/tcp/tcp_module.c (modified) (1 diff)
-
net/tl/udp/udp.c (modified) (2 diffs)
-
net/tl/udp/udp_module.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/devman.c
r11658b64 r557c7d0 62 62 } 63 63 64 static int devmap_devices_class_compare(unsigned long key[], hash_count_t keys, 65 link_t *item) 66 { 67 dev_class_info_t *class_info 68 = hash_table_get_instance(item, dev_class_info_t, devmap_link); 69 assert(class_info != NULL); 70 71 return (class_info->devmap_handle == (devmap_handle_t) key[0]); 72 } 73 64 74 static void devices_remove_callback(link_t *item) 65 75 { … … 75 85 .hash = devices_hash, 76 86 .compare = devmap_devices_compare, 87 .remove_callback = devices_remove_callback 88 }; 89 90 static hash_table_operations_t devmap_devices_class_ops = { 91 .hash = devices_hash, 92 .compare = devmap_devices_class_compare, 77 93 .remove_callback = devices_remove_callback 78 94 }; … … 678 694 } 679 695 680 devmap_device_register(devmap_pathname, &node->devmap_handle); 696 devmap_device_register_with_iface(devmap_pathname, 697 &node->devmap_handle, DEVMAN_CONNECT_FROM_DEVMAP); 681 698 682 699 tree_add_devmap_device(tree, node); … … 1050 1067 1051 1068 info = (dev_class_info_t *) malloc(sizeof(dev_class_info_t)); 1052 if (info != NULL) 1069 if (info != NULL) { 1053 1070 memset(info, 0, sizeof(dev_class_info_t)); 1071 list_initialize(&info->dev_classes); 1072 list_initialize(&info->devmap_link); 1073 list_initialize(&info->link); 1074 } 1054 1075 1055 1076 return info; … … 1175 1196 fibril_rwlock_initialize(&class_list->rwlock); 1176 1197 hash_table_create(&class_list->devmap_devices, DEVICE_BUCKETS, 1, 1177 &devmap_devices_ ops);1198 &devmap_devices_class_ops); 1178 1199 } 1179 1200 … … 1223 1244 hash_table_insert(&class_list->devmap_devices, &key, &cli->devmap_link); 1224 1245 fibril_rwlock_write_unlock(&class_list->rwlock); 1246 1247 assert(find_devmap_class_device(class_list, cli->devmap_handle) != NULL); 1225 1248 } 1226 1249 -
uspace/srv/devman/main.c
r11658b64 r557c7d0 281 281 * handle. 282 282 */ 283 devmap_device_register(devmap_pathname, &cli->devmap_handle); 283 devmap_device_register_with_iface(devmap_pathname, 284 &cli->devmap_handle, DEVMAN_CONNECT_FROM_DEVMAP); 284 285 285 286 /* … … 486 487 static void devman_connection_devmapper(ipc_callid_t iid, ipc_call_t *icall) 487 488 { 488 devmap_handle_t devmap_handle = IPC_GET_ IMETHOD(*icall);489 devmap_handle_t devmap_handle = IPC_GET_ARG2(*icall); 489 490 node_t *dev; 490 491 … … 503 504 } 504 505 505 printf(NAME ": devman_connection_devmapper: forward connection to "506 "device %s to driver %s.\n", dev->pathname, dev->drv->name);507 506 ipc_forward_fast(iid, dev->drv->phone, DRIVER_CLIENT, dev->handle, 0, 508 507 IPC_FF_NONE); 508 printf(NAME ": devman_connection_devmapper: forwarded connection to " 509 "device %s to driver %s.\n", dev->pathname, dev->drv->name); 509 510 } 510 511 … … 512 513 static void devman_connection(ipc_callid_t iid, ipc_call_t *icall) 513 514 { 514 /*515 * Silly hack to enable the device manager to register as a driver by516 * the device mapper. If the ipc method is not IPC_M_CONNECT_ME_TO, this517 * is not the forwarded connection from naming service, so it must be a518 * connection from the devmapper which thinks this is a devmapper-style519 * driver. So pretend this is a devmapper-style driver. (This does not520 * work for device with handle == IPC_M_CONNECT_ME_TO, because devmapper521 * passes device handle to the driver as an ipc method.)522 */523 if (IPC_GET_IMETHOD(*icall) != IPC_M_CONNECT_ME_TO)524 devman_connection_devmapper(iid, icall);525 526 /*527 * ipc method is IPC_M_CONNECT_ME_TO, so this is forwarded connection528 * from naming service by which we registered as device manager, so be529 * device manager.530 */531 532 515 /* Select interface. */ 533 516 switch ((sysarg_t) (IPC_GET_ARG1(*icall))) { … … 542 525 devman_forward(iid, icall, false); 543 526 break; 527 case DEVMAN_CONNECT_FROM_DEVMAP: 528 /* Someone connected through devmap node. */ 529 devman_connection_devmapper(iid, icall); 530 break; 544 531 case DEVMAN_CONNECT_TO_PARENTS_DEVICE: 545 532 /* Connect client to selected device. */ -
uspace/srv/devmap/devmap.c
r11658b64 r557c7d0 99 99 /** Device driver handling this device */ 100 100 devmap_driver_t *driver; 101 /** Use this interface when forwarding to driver. */ 102 sysarg_t forward_interface; 101 103 } devmap_device_t; 102 104 … … 517 519 } 518 520 521 /* Set the interface, if any. */ 522 device->forward_interface = IPC_GET_ARG1(*icall); 523 519 524 /* Get fqdn */ 520 525 char *fqdn; … … 566 571 /* Get unique device handle */ 567 572 device->handle = devmap_create_handle(); 568 573 569 574 devmap_namespace_addref(namespace, device); 570 575 device->driver = driver; … … 617 622 } 618 623 619 ipc_forward_fast(callid, dev->driver->phone, dev->handle, 620 IPC_GET_ARG3(*call), 0, IPC_FF_NONE); 624 if (dev->forward_interface == 0) { 625 ipc_forward_fast(callid, dev->driver->phone, 626 dev->handle, 0, 0, 627 IPC_FF_NONE); 628 } else { 629 ipc_forward_fast(callid, dev->driver->phone, 630 dev->forward_interface, dev->handle, 0, 631 IPC_FF_NONE); 632 } 621 633 622 634 fibril_mutex_unlock(&devices_list_mutex); -
uspace/srv/hw/netif/dp8390/dp8390_module.c
r11658b64 r557c7d0 197 197 return rc; 198 198 address->value = (char *) (&((dpeth_t *) device->specific)->de_address); 199 address->length = CONVERT_SIZE(ether_addr_t, char, 1);199 address->length = sizeof(ether_addr_t); 200 200 return EOK; 201 201 } … … 310 310 async_set_interrupt_received(irq_handler); 311 311 312 return REGISTER_ME(SERVICE_DP8390, &phonehash);312 return ipc_connect_to_me(PHONE_NS, SERVICE_DP8390, 0, 0, &phonehash); 313 313 } 314 314 -
uspace/srv/net/il/arp/arp.c
r11658b64 r557c7d0 483 483 des_proto = des_hw + header->hardware_length; 484 484 trans = arp_addr_find(&proto->addresses, (char *) src_proto, 485 CONVERT_SIZE(uint8_t, char, header->protocol_length));485 header->protocol_length); 486 486 /* Exists? */ 487 487 if (trans && trans->hw_addr) { 488 if (trans->hw_addr->length != CONVERT_SIZE(uint8_t, char, 489 header->hardware_length)) { 488 if (trans->hw_addr->length != header->hardware_length) 490 489 return EINVAL; 491 }492 490 memcpy(trans->hw_addr->value, src_hw, trans->hw_addr->length); 493 491 } 494 492 /* Is my protocol address? */ 495 if (proto->addr->length != CONVERT_SIZE(uint8_t, char, 496 header->protocol_length)) { 493 if (proto->addr->length != header->protocol_length) 497 494 return EINVAL; 498 }499 495 if (!str_lcmp(proto->addr->value, (char *) des_proto, 500 496 proto->addr->length)) { … … 507 503 fibril_condvar_initialize(&trans->cv); 508 504 rc = arp_addr_add(&proto->addresses, (char *) src_proto, 509 CONVERT_SIZE(uint8_t, char, header->protocol_length), 510 trans); 505 header->protocol_length, trans); 511 506 if (rc != EOK) { 512 507 /* The generic char map has already freed trans! */ … … 516 511 if (!trans->hw_addr) { 517 512 trans->hw_addr = measured_string_create_bulk( 518 (char *) src_hw, CONVERT_SIZE(uint8_t, char, 519 header->hardware_length)); 513 (char *) src_hw, header->hardware_length); 520 514 if (!trans->hw_addr) 521 515 return ENOMEM; … … 606 600 607 601 /* ARP packet content size = header + (address + translation) * 2 */ 608 length = 8 + 2 * (CONVERT_SIZE(char, uint8_t, proto->addr->length) + 609 CONVERT_SIZE(char, uint8_t, device->addr->length)); 602 length = 8 + 2 * (proto->addr->length + device->addr->length); 610 603 if (length > device->packet_dimension.content) 611 604 return ELIMIT; … … 640 633 641 634 rc = packet_set_addr(packet, (uint8_t *) device->addr->value, 642 (uint8_t *) device->broadcast_addr->value, 643 CONVERT_SIZE(char, uint8_t, device->addr->length)); 635 (uint8_t *) device->broadcast_addr->value, device->addr->length); 644 636 if (rc != EOK) { 645 637 pq_release_remote(arp_globals.net_phone, packet_get_id(packet)); -
uspace/srv/net/il/arp/arp_module.c
r11658b64 r557c7d0 79 79 goto out; 80 80 81 rc = REGISTER_ME(SERVICE_ARP, &phonehash);81 rc = ipc_connect_to_me(PHONE_NS, SERVICE_ARP, 0, 0, &phonehash); 82 82 if (rc != EOK) 83 83 goto out; -
uspace/srv/net/il/ip/ip.c
r11658b64 r557c7d0 442 442 if (route) { 443 443 address.value = (char *) &route->address.s_addr; 444 address.length = CONVERT_SIZE(in_addr_t, char, 1);444 address.length = sizeof(in_addr_t); 445 445 446 446 rc = arp_device_req(ip_netif->arp->phone, … … 639 639 if (destination) { 640 640 rc = packet_set_addr(packet, NULL, (uint8_t *) destination->value, 641 CONVERT_SIZE(char, uint8_t, destination->length));641 destination->length); 642 642 } else { 643 643 rc = packet_set_addr(packet, NULL, NULL, 0); … … 687 687 rc = packet_set_addr(next, NULL, 688 688 (uint8_t *) destination->value, 689 CONVERT_SIZE(char, uint8_t, 690 destination->length)); 689 destination->length); 691 690 if (rc != EOK) { 692 691 free(last_header); … … 718 717 rc = packet_set_addr(next, NULL, 719 718 (uint8_t *) destination->value, 720 CONVERT_SIZE(char, uint8_t, destination->length));719 destination->length); 721 720 if (rc != EOK) { 722 721 free(last_header); … … 1006 1005 destination.value = route->gateway.s_addr ? 1007 1006 (char *) &route->gateway.s_addr : (char *) &dest.s_addr; 1008 destination.length = CONVERT_SIZE(dest.s_addr, char, 1);1007 destination.length = sizeof(dest.s_addr); 1009 1008 1010 1009 rc = arp_translate_req(netif->arp->phone, netif->device_id, … … 1758 1757 // clear the ARP mapping if any 1759 1758 address.value = (char *) &header->destination_address; 1760 address.length = CONVERT_SIZE(uint8_t, char, 1761 sizeof(header->destination_address)); 1759 address.length = sizeof(header->destination_address); 1762 1760 arp_clear_address_req(netif->arp->phone, 1763 1761 netif->device_id, SERVICE_IP, &address); … … 1951 1949 1952 1950 case NET_IP_GET_ROUTE: 1953 rc = data_receive((void **) &addr, &addrlen); 1951 rc = async_data_write_accept((void **) &addr, false, 0, 0, 0, 1952 &addrlen); 1954 1953 if (rc != EOK) 1955 1954 return rc; -
uspace/srv/net/il/ip/ip_module.c
r11658b64 r557c7d0 80 80 goto out; 81 81 82 rc = REGISTER_ME(SERVICE_IP, &phonehash);82 rc = ipc_connect_to_me(PHONE_NS, SERVICE_IP, 0, 0, &phonehash); 83 83 if (rc != EOK) 84 84 goto out; -
uspace/srv/net/net/net.c
r11658b64 r557c7d0 335 335 goto out; 336 336 337 rc = REGISTER_ME(SERVICE_NETWORKING, &phonehash);337 rc = ipc_connect_to_me(PHONE_NS, SERVICE_NETWORKING, 0, 0, &phonehash); 338 338 if (rc != EOK) 339 339 goto out; -
uspace/srv/net/netif/lo/lo.c
r11658b64 r557c7d0 166 166 sysarg_t phonehash; 167 167 168 return REGISTER_ME(SERVICE_LO, &phonehash);168 return ipc_connect_to_me(PHONE_NS, SERVICE_LO, 0, 0, &phonehash); 169 169 } 170 170 -
uspace/srv/net/nil/eth/eth.c
r11658b64 r557c7d0 201 201 202 202 eth_globals.broadcast_addr = 203 measured_string_create_bulk("\xFF\xFF\xFF\xFF\xFF\xFF", 204 CONVERT_SIZE(uint8_t, char, ETH_ADDR)); 203 measured_string_create_bulk("\xFF\xFF\xFF\xFF\xFF\xFF", ETH_ADDR); 205 204 if (!eth_globals.broadcast_addr) { 206 205 rc = ENOMEM; -
uspace/srv/net/nil/eth/eth_module.c
r11658b64 r557c7d0 66 66 goto out; 67 67 68 rc = REGISTER_ME(SERVICE_ETHERNET, &phonehash);68 rc = ipc_connect_to_me(PHONE_NS, SERVICE_ETHERNET, 0, 0, &phonehash); 69 69 if (rc != EOK) 70 70 goto out; -
uspace/srv/net/nil/nildummy/nildummy_module.c
r11658b64 r557c7d0 67 67 goto out; 68 68 69 rc = REGISTER_ME(SERVICE_NILDUMMY, &phonehash);69 rc = ipc_connect_to_me(PHONE_NS, SERVICE_NILDUMMY, 0, 0, &phonehash); 70 70 if (rc != EOK) 71 71 goto out; -
uspace/srv/net/tl/icmp/icmp_module.c
r11658b64 r557c7d0 74 74 goto out; 75 75 76 rc = REGISTER_ME(SERVICE_ICMP, &phonehash);76 rc = ipc_connect_to_me(PHONE_NS, SERVICE_ICMP, 0, 0, &phonehash); 77 77 if (rc != EOK) 78 78 goto out; -
uspace/srv/net/tl/tcp/tcp.c
r11658b64 r557c7d0 1365 1365 1366 1366 case NET_SOCKET_BIND: 1367 res = data_receive((void **) &addr, &addrlen); 1367 res = async_data_write_accept((void **) &addr, false, 1368 0, 0, 0, &addrlen); 1368 1369 if (res != EOK) 1369 1370 break; … … 1402 1403 1403 1404 case NET_SOCKET_CONNECT: 1404 res = data_receive((void **) &addr, &addrlen); 1405 res = async_data_write_accept((void **) &addr, false, 1406 0, 0, 0, &addrlen); 1405 1407 if (res != EOK) 1406 1408 break; … … 1453 1455 1454 1456 case NET_SOCKET_SENDTO: 1455 res = data_receive((void **) &addr, &addrlen); 1457 res = async_data_write_accept((void **) &addr, false, 1458 0, 0, 0, &addrlen); 1456 1459 if (res != EOK) 1457 1460 break; -
uspace/srv/net/tl/tcp/tcp_module.c
r11658b64 r557c7d0 75 75 goto out; 76 76 77 rc = REGISTER_ME(SERVICE_TCP, &phonehash);77 rc = ipc_connect_to_me(PHONE_NS, SERVICE_TCP, 0, 0, &phonehash); 78 78 if (rc != EOK) 79 79 goto out; -
uspace/srv/net/tl/udp/udp.c
r11658b64 r557c7d0 771 771 772 772 case NET_SOCKET_BIND: 773 res = data_receive((void **) &addr, &addrlen); 773 res = async_data_write_accept((void **) &addr, false, 774 0, 0, 0, &addrlen); 774 775 if (res != EOK) 775 776 break; … … 784 785 785 786 case NET_SOCKET_SENDTO: 786 res = data_receive((void **) &addr, &addrlen); 787 res = async_data_write_accept((void **) &addr, false, 788 0, 0, 0, &addrlen); 787 789 if (res != EOK) 788 790 break; -
uspace/srv/net/tl/udp/udp_module.c
r11658b64 r557c7d0 75 75 goto out; 76 76 77 rc = REGISTER_ME(SERVICE_UDP, &phonehash);77 rc = ipc_connect_to_me(PHONE_NS, SERVICE_UDP, 0, 0, &phonehash); 78 78 if (rc != EOK) 79 79 goto out;
Note:
See TracChangeset
for help on using the changeset viewer.
