Changeset 544a2e4 in mainline for uspace/srv
- Timestamp:
- 2011-05-30T21:37:43Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7b712b60
- Parents:
- 18ba2e4f (diff), 0743493a (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:
-
- 17 deleted
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/rd/Makefile
r18ba2e4f r544a2e4 30 30 USPACE_PREFIX = ../../.. 31 31 BINARY = rd 32 STATIC_NEEDED = y 32 33 33 34 SOURCES = \ -
uspace/srv/devman/Makefile
r18ba2e4f r544a2e4 30 30 USPACE_PREFIX = ../.. 31 31 BINARY = devman 32 STATIC_NEEDED = y 32 33 33 34 SOURCES = \ -
uspace/srv/devman/devman.c
r18ba2e4f r544a2e4 39 39 #include <devmap.h> 40 40 #include <str_error.h> 41 #include <stdio.h> 41 42 42 43 #include "devman.h" -
uspace/srv/devmap/Makefile
r18ba2e4f r544a2e4 30 30 USPACE_PREFIX = ../.. 31 31 BINARY = devmap 32 STATIC_NEEDED = y 32 33 33 34 SOURCES = \ -
uspace/srv/fs/devfs/Makefile
r18ba2e4f r544a2e4 32 32 EXTRA_CFLAGS += -I$(LIBFS_PREFIX) 33 33 BINARY = devfs 34 STATIC_NEEDED = y 34 35 35 36 SOURCES = \ -
uspace/srv/fs/fat/Makefile
r18ba2e4f r544a2e4 32 32 EXTRA_CFLAGS += -I$(LIBBLOCK_PREFIX) -I$(LIBFS_PREFIX) 33 33 BINARY = fat 34 STATIC_NEEDED = y 34 35 35 36 SOURCES = \ -
uspace/srv/fs/fat/fat_fat.c
r18ba2e4f r544a2e4 47 47 #include <assert.h> 48 48 #include <fibril_synch.h> 49 #include <malloc.h> 49 50 #include <mem.h> 50 51 -
uspace/srv/fs/fat/fat_idx.c
r18ba2e4f r544a2e4 44 44 #include <assert.h> 45 45 #include <fibril_synch.h> 46 #include <malloc.h> 46 47 47 48 /** Each instance of this type describes one interval of freed VFS indices. */ -
uspace/srv/fs/fat/fat_ops.c
r18ba2e4f r544a2e4 55 55 #include <sys/mman.h> 56 56 #include <align.h> 57 #include <malloc.h> 57 58 58 59 #define FAT_NODE(node) ((node) ? (fat_node_t *) (node)->data : NULL) -
uspace/srv/fs/tmpfs/Makefile
r18ba2e4f r544a2e4 32 32 EXTRA_CFLAGS += -I$(LIBBLOCK_PREFIX) -I$(LIBFS_PREFIX) 33 33 BINARY = tmpfs 34 STATIC_NEEDED = y 34 35 35 36 SOURCES = \ -
uspace/srv/hw/netif/ne2000/dp8390.c
r18ba2e4f r544a2e4 53 53 #include <byteorder.h> 54 54 #include <errno.h> 55 #include <stdio.h> 55 56 #include <libarch/ddi.h> 56 57 #include <net/packet.h> -
uspace/srv/loader/Makefile
r18ba2e4f r544a2e4 36 36 -include $(COMMON_MAKEFILE) 37 37 -include $(CONFIG_MAKEFILE) 38 -include arch/$(UARCH)/Makefile.inc39 38 40 LINKER_SCRIPT = arch/$(UARCH)/_link.ld 41 EXTRA_CLEAN = $(LINKER_SCRIPT) 39 LINKER_SCRIPT = $(LIBC_PREFIX)/arch/$(UARCH)/_link-loader.ld 42 40 43 41 EXTRA_CFLAGS = -Iinclude 44 42 45 43 BINARY = loader 44 STATIC_ONLY = y 46 45 47 46 GENERIC_SOURCES = \ … … 55 54 56 55 include $(USPACE_PREFIX)/Makefile.common 57 58 $(LINKER_SCRIPT): $(LINKER_SCRIPT).in59 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ -
uspace/srv/loader/elf_load.c
r18ba2e4f r544a2e4 2 2 * Copyright (c) 2006 Sergey Bondari 3 3 * Copyright (c) 2006 Jakub Jermar 4 * Copyright (c) 20 08Jiri Svoboda4 * Copyright (c) 2011 Jiri Svoboda 5 5 * All rights reserved. 6 6 * … … 53 53 #include <smc.h> 54 54 #include <loader/pcb.h> 55 #include <entry_point.h> 55 56 56 57 #include "elf.h" 57 58 #include "elf_load.h" 58 #include "arch.h"59 59 60 60 #define DPRINTF(...) … … 103 103 * 104 104 */ 105 int elf_load_file(const char *file_name, size_t so_bias, elf_info_t *info) 105 int elf_load_file(const char *file_name, size_t so_bias, eld_flags_t flags, 106 elf_info_t *info) 106 107 { 107 108 elf_ld_t elf; … … 118 119 elf.fd = fd; 119 120 elf.info = info; 121 elf.flags = flags; 120 122 121 123 rc = elf_load(&elf, so_bias); … … 124 126 125 127 return rc; 126 }127 128 /** Run an ELF executable.129 *130 * Transfers control to the entry point of an ELF executable loaded131 * earlier with elf_load_file(). This function does not return.132 *133 * @param info Info structure filled earlier by elf_load_file()134 *135 */136 void elf_run(elf_info_t *info, pcb_t *pcb)137 {138 program_run(info->entry, pcb);139 140 /* not reached */141 128 } 142 129 … … 153 140 pcb->entry = info->entry; 154 141 pcb->dynamic = info->dynamic; 142 pcb->rtld_runtime = NULL; 155 143 } 156 144 … … 306 294 break; 307 295 case PT_INTERP: 308 /* Assume silently interp == "/ rtld.so" */309 elf->info->interp = "/ rtld.so";296 /* Assume silently interp == "/app/dload" */ 297 elf->info->interp = "/app/dload"; 310 298 break; 311 299 case PT_DYNAMIC: 300 /* Record pointer to dynamic section into info structure */ 301 elf->info->dynamic = 302 (void *)((uint8_t *)entry->p_vaddr + elf->bias); 303 DPRINTF("dynamic section found at 0x%x\n", 304 (uintptr_t)elf->info->dynamic); 305 break; 306 case 0x70000000: 307 /* FIXME: MIPS reginfo */ 308 break; 312 309 case PT_SHLIB: 313 case PT_LOPROC:314 case PT_HIPROC:310 // case PT_LOPROC: 311 // case PT_HIPROC: 315 312 default: 316 313 DPRINTF("Segment p_type %d unknown.\n", entry->p_type); … … 383 380 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 384 381 if (a == (void *)(-1)) { 385 DPRINTF("Memory mapping failed.\n"); 382 DPRINTF("memory mapping failed (0x%x, %d)\n", 383 base+bias, mem_sz); 386 384 return EE_MEMORY; 387 385 } … … 425 423 } 426 424 425 /* 426 * The caller wants to modify the segments first. He will then 427 * need to set the right access mode and ensure SMC coherence. 428 */ 429 if ((elf->flags & ELDF_RW) != 0) return EE_OK; 430 431 // printf("set area flags to %d\n", flags); 427 432 rc = as_area_change_flags(seg_ptr, flags); 428 433 if (rc != 0) { -
uspace/srv/loader/include/elf_load.h
r18ba2e4f r544a2e4 43 43 #include "elf.h" 44 44 45 typedef enum { 46 /** Leave all segments in RW access mode. */ 47 ELDF_RW = 1 48 } eld_flags_t; 49 45 50 /** 46 51 * Some data extracted from the headers are stored here … … 67 72 uintptr_t bias; 68 73 74 /** Flags passed to the ELF loader. */ 75 eld_flags_t flags; 76 69 77 /** A copy of the ELF file header */ 70 78 elf_header_t *header; … … 74 82 } elf_ld_t; 75 83 76 int elf_load_file(const char *file_name, size_t so_bias, el f_info_t *info);77 void elf_run(elf_info_t *info, pcb_t *pcb);84 int elf_load_file(const char *file_name, size_t so_bias, eld_flags_t flags, 85 elf_info_t *info); 78 86 void elf_create_pcb(elf_info_t *info, pcb_t *pcb); 79 87 -
uspace/srv/loader/main.c
r18ba2e4f r544a2e4 55 55 #include <macros.h> 56 56 #include <loader/pcb.h> 57 #include <entry_point.h> 57 58 #include <errno.h> 58 59 #include <async.h> … … 62 63 #include <elf.h> 63 64 #include <elf_load.h> 65 66 #ifdef CONFIG_RTLD 67 #include <rtld/rtld.h> 68 #include <rtld/dynamic.h> 69 #include <rtld/module.h> 70 71 static int ldr_load_dyn_linked(elf_info_t *p_info); 72 #endif 64 73 65 74 #define DPRINTF(...) … … 89 98 90 99 static elf_info_t prog_info; 91 static elf_info_t interp_info;92 93 static bool is_dyn_linked;94 100 95 101 /** Used to limit number of connections to one. */ 96 102 static bool connected = false; 103 104 #ifdef CONFIG_RTLD 105 /** State structure of the dynamic linker. */ 106 runtime_env_t dload_re; 107 static module_t prog_mod; 108 #endif 97 109 98 110 static void ldr_get_taskid(ipc_callid_t rid, ipc_call_t *request) … … 283 295 int rc; 284 296 285 rc = elf_load_file(pathname, 0, &prog_info);297 rc = elf_load_file(pathname, 0, 0, &prog_info); 286 298 if (rc != EE_OK) { 287 299 DPRINTF("Failed to load executable '%s'.\n", pathname); … … 302 314 if (prog_info.interp == NULL) { 303 315 /* Statically linked program */ 304 is_dyn_linked = false;305 316 async_answer_0(rid, EOK); 306 317 return 0; 307 318 } 308 319 309 rc = elf_load_file(prog_info.interp, 0, &interp_info); 310 if (rc != EE_OK) { 311 DPRINTF("Failed to load interpreter '%s.'\n", 312 prog_info.interp); 313 async_answer_0(rid, EINVAL); 314 return 1; 315 } 316 317 is_dyn_linked = true; 318 async_answer_0(rid, EOK); 319 320 DPRINTF("Binary is dynamically linked.\n"); 321 #ifdef CONFIG_RTLD 322 DPRINTF(" - pcb address: %p\n", &pcb); 323 DPRINTF( "- prog dynamic: %p\n", prog_info.dynamic); 324 325 rc = ldr_load_dyn_linked(&prog_info); 326 #else 327 rc = ENOTSUP; 328 #endif 329 async_answer_0(rid, rc); 320 330 return 0; 321 331 } 322 332 333 #ifdef CONFIG_RTLD 334 335 static int ldr_load_dyn_linked(elf_info_t *p_info) 336 { 337 runtime_env = &dload_re; 338 339 DPRINTF("Load dynamically linked program.\n"); 340 341 /* 342 * First we need to process dynamic sections of the executable 343 * program and insert it into the module graph. 344 */ 345 346 DPRINTF("Parse program .dynamic section at %p\n", p_info->dynamic); 347 dynamic_parse(p_info->dynamic, 0, &prog_mod.dyn); 348 prog_mod.bias = 0; 349 prog_mod.dyn.soname = "[program]"; 350 351 /* Initialize list of loaded modules */ 352 list_initialize(&runtime_env->modules_head); 353 list_append(&prog_mod.modules_link, &runtime_env->modules_head); 354 355 /* Pointer to program module. Used as root of the module graph. */ 356 runtime_env->program = &prog_mod; 357 358 /* Work around non-existent memory space allocation. */ 359 runtime_env->next_bias = 0x1000000; 360 361 /* 362 * Now we can continue with loading all other modules. 363 */ 364 365 DPRINTF("Load all program dependencies\n"); 366 module_load_deps(&prog_mod); 367 368 /* 369 * Now relocate/link all modules together. 370 */ 371 372 /* Process relocations in all modules */ 373 DPRINTF("Relocate all modules\n"); 374 modules_process_relocs(&prog_mod); 375 376 /* Pass runtime evironment pointer through PCB. */ 377 pcb.rtld_runtime = (void *) runtime_env; 378 379 return 0; 380 } 381 #endif 323 382 324 383 /** Run the previously loaded program. … … 332 391 const char *cp; 333 392 393 DPRINTF("Set task name\n"); 394 334 395 /* Set the task name. */ 335 396 cp = str_rchr(pathname, '/'); … … 337 398 task_set_name(cp); 338 399 339 if (is_dyn_linked == true) { 340 /* Dynamically linked program */ 341 DPRINTF("Run ELF interpreter.\n"); 342 DPRINTF("Entry point: %p\n", interp_info.entry); 343 344 async_answer_0(rid, EOK); 345 elf_run(&interp_info, &pcb); 346 } else { 347 /* Statically linked program */ 348 async_answer_0(rid, EOK); 349 elf_run(&prog_info, &pcb); 350 } 400 /* Run program */ 401 DPRINTF("Reply OK\n"); 402 async_answer_0(rid, EOK); 403 DPRINTF("Jump to entry point at %p\n", pcb.entry); 404 entry_point_jmp(prog_info.entry, &pcb); 351 405 352 406 /* Not reached */ -
uspace/srv/net/il/ip/ip.c
r18ba2e4f r544a2e4 201 201 202 202 /* Set the destination address */ 203 switch ( header->version) {203 switch (GET_IP_HEADER_VERSION(header)) { 204 204 case IPVERSION: 205 205 addrlen = sizeof(dest_in); … … 635 635 636 636 /* Process all IP options */ 637 while (next < first->header_length) {637 while (next < GET_IP_HEADER_LENGTH(first)) { 638 638 option = (ip_option_t *) (((uint8_t *) first) + next); 639 639 /* Skip end or noop */ … … 656 656 if (length % 4) { 657 657 bzero(((uint8_t *) last) + length, 4 - (length % 4)); 658 last->header_length = length / 4 + 1;658 SET_IP_HEADER_LENGTH(last, (length / 4 + 1)); 659 659 } else { 660 last->header_length = length / 4;660 SET_IP_HEADER_LENGTH(last, (length / 4)); 661 661 } 662 662 … … 706 706 return rc; 707 707 708 header->version = IPV4;709 header->fragment_offset_high = 0;708 SET_IP_HEADER_VERSION(header, IPV4); 709 SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(header, 0); 710 710 header->fragment_offset_low = 0; 711 711 header->header_checksum = 0; … … 735 735 memcpy(middle_header, last_header, 736 736 IP_HEADER_LENGTH(last_header)); 737 header->flags |= IPFLAG_MORE_FRAGMENTS; 737 SET_IP_HEADER_FLAGS(header, 738 (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS)); 738 739 middle_header->total_length = 739 740 htons(packet_get_data_length(next)); 740 middle_header->fragment_offset_high =741 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length) ;741 SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(middle_header, 742 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length)); 742 743 middle_header->fragment_offset_low = 743 744 IP_COMPUTE_FRAGMENT_OFFSET_LOW(length); … … 768 769 middle_header->total_length = 769 770 htons(packet_get_data_length(next)); 770 middle_header->fragment_offset_high =771 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length) ;771 SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(middle_header, 772 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(length)); 772 773 middle_header->fragment_offset_low = 773 774 IP_COMPUTE_FRAGMENT_OFFSET_LOW(length); … … 785 786 length += packet_get_data_length(next); 786 787 free(last_header); 787 header->flags |= IPFLAG_MORE_FRAGMENTS; 788 SET_IP_HEADER_FLAGS(header, 789 (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS)); 788 790 } 789 791 … … 834 836 new_header->total_length = htons(IP_HEADER_LENGTH(new_header) + length); 835 837 offset = IP_FRAGMENT_OFFSET(header) + IP_HEADER_DATA_LENGTH(header); 836 new_header->fragment_offset_high =837 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(offset) ;838 SET_IP_HEADER_FRAGMENT_OFFSET_HIGH(new_header, 839 IP_COMPUTE_FRAGMENT_OFFSET_HIGH(offset)); 838 840 new_header->fragment_offset_low = 839 841 IP_COMPUTE_FRAGMENT_OFFSET_LOW(offset); … … 865 867 return NULL; 866 868 memcpy(middle, last, IP_HEADER_LENGTH(last)); 867 middle->flags |= IPFLAG_MORE_FRAGMENTS; 869 SET_IP_HEADER_FLAGS(middle, 870 (GET_IP_HEADER_FLAGS(middle) | IPFLAG_MORE_FRAGMENTS)); 868 871 return middle; 869 872 } … … 922 925 923 926 /* Fragmentation forbidden? */ 924 if( header->flags& IPFLAG_DONT_FRAGMENT)927 if(GET_IP_HEADER_FLAGS(header) & IPFLAG_DONT_FRAGMENT) 925 928 return EPERM; 926 929 … … 958 961 959 962 /* Mark the first as fragmented */ 960 header->flags |= IPFLAG_MORE_FRAGMENTS; 963 SET_IP_HEADER_FLAGS(header, 964 (GET_IP_HEADER_FLAGS(header) | IPFLAG_MORE_FRAGMENTS)); 961 965 962 966 /* Create middle fragments */ … … 1319 1323 int rc; 1320 1324 1321 if (( header->flags& IPFLAG_MORE_FRAGMENTS) ||1325 if ((GET_IP_HEADER_FLAGS(header) & IPFLAG_MORE_FRAGMENTS) || 1322 1326 IP_FRAGMENT_OFFSET(header)) { 1323 1327 // TODO fragmented … … 1325 1329 } 1326 1330 1327 switch ( header->version) {1331 switch (GET_IP_HEADER_VERSION(header)) { 1328 1332 case IPVERSION: 1329 1333 addrlen = sizeof(src_in); … … 1447 1451 1448 1452 /* Set the destination address */ 1449 switch ( header->version) {1453 switch (GET_IP_HEADER_VERSION(header)) { 1450 1454 case IPVERSION: 1451 1455 addrlen = sizeof(addr_in); -
uspace/srv/net/tl/icmp/Makefile
r18ba2e4f r544a2e4 32 32 EXTRA_CFLAGS = -I$(LIBNET_PREFIX)/include 33 33 BINARY = icmp 34 STATIC_ONLY = y 34 35 35 36 SOURCES = \ -
uspace/srv/net/tl/tcp/tcp.c
r18ba2e4f r544a2e4 476 476 old_incoming = socket_data->next_incoming; 477 477 478 if ( header->finalize) {478 if (GET_TCP_HEADER_FINALIZE(header)) { 479 479 socket_data->fin_incoming = new_sequence_number + 480 480 total_length - TCP_HEADER_LENGTH(header); … … 838 838 assert(packet); 839 839 840 if (! header->synchronize)840 if (!GET_TCP_HEADER_SYNCHRONIZE(header)) 841 841 return tcp_release_and_return(packet, EINVAL); 842 842 … … 903 903 assert(packet); 904 904 905 if (! header->synchronize)905 if (!GET_TCP_HEADER_SYNCHRONIZE(header)) 906 906 return tcp_release_and_return(packet, EINVAL); 907 907 … … 1057 1057 assert(packet); 1058 1058 1059 if (! header->acknowledge)1059 if (!GET_TCP_HEADER_ACKNOWLEDGE(header)) 1060 1060 return tcp_release_and_return(packet, EINVAL); 1061 1061 … … 1126 1126 assert(header); 1127 1127 1128 if (! header->acknowledge)1128 if (!GET_TCP_HEADER_ACKNOWLEDGE(header)) 1129 1129 return; 1130 1130 … … 1833 1833 1834 1834 /* Remember the outgoing FIN */ 1835 if ( header->finalize)1835 if (GET_TCP_HEADER_FINALIZE(header)) 1836 1836 socket_data->fin_outgoing = socket_data->next_outgoing; 1837 1837 … … 1952 1952 header->acknowledgement_number = 1953 1953 htonl(socket_data->next_incoming); 1954 header->acknowledge = 1;1954 SET_TCP_HEADER_ACKNOWLEDGE(header, 1); 1955 1955 } 1956 1956 header->window = htons(socket_data->window); … … 2024 2024 header->source_port = htons(socket->port); 2025 2025 header->source_port = htons(socket_data->dest_port); 2026 header->header_length = TCP_COMPUTE_HEADER_LENGTH(sizeof(*header)); 2027 header->synchronize = synchronize; 2028 header->finalize = finalize; 2026 SET_TCP_HEADER_LENGTH(header, 2027 TCP_COMPUTE_HEADER_LENGTH(sizeof(*header))); 2028 SET_TCP_HEADER_SYNCHRONIZE(header, synchronize); 2029 SET_TCP_HEADER_FINALIZE(header, finalize); 2029 2030 } 2030 2031 -
uspace/srv/net/tl/tcp/tcp_header.h
r18ba2e4f r544a2e4 47 47 * @param[in] header The TCP packet header. 48 48 */ 49 #define TCP_HEADER_LENGTH(header) ( (header)->header_length* 4U)49 #define TCP_HEADER_LENGTH(header) (GET_TCP_HEADER_LENGTH(header) * 4U) 50 50 51 51 /** Returns the TCP header length. … … 73 73 uint32_t sequence_number; 74 74 uint32_t acknowledgement_number; 75 76 #ifdef ARCH_IS_BIG_ENDIAN77 uint8_t header_length:4;78 uint8_t reserved1:4;79 #else80 uint8_t reserved1:4;81 uint8_t header_length:4;82 #endif83 75 84 #ifdef ARCH_IS_BIG_ENDIAN 85 uint8_t reserved2:2; 86 uint8_t urgent:1; 87 uint8_t acknowledge:1; 88 uint8_t push:1; 89 uint8_t reset:1; 90 uint8_t synchronize:1; 91 uint8_t finalize:1; 92 #else 93 uint8_t finalize:1; 94 uint8_t synchronize:1; 95 uint8_t reset:1; 96 uint8_t push:1; 97 uint8_t acknowledge:1; 98 uint8_t urgent:1; 99 uint8_t reserved2:2; 100 #endif 76 uint8_t hlr; /* header length, reserved1 */ 77 78 #define GET_TCP_HEADER_LENGTH(header) \ 79 (((header)->hlr & 0xf0) >> 4) 80 #define SET_TCP_HEADER_LENGTH(header, length) \ 81 ((header)->hlr = \ 82 ((length & 0x0f) << 4) | ((header)->hlr & 0x0f)) 83 84 #define GET_TCP_HEADER_RESERVED1(header) \ 85 ((header)->hlr & 0x0f) 86 #define SET_TCP_HEADER_RESERVED1(header, reserved1) \ 87 ((header)->hlr = \ 88 (reserved1 & 0x0f) | ((header)->hlr & 0xf0)) 89 90 /* reserved2, urgent, acknowledge, push, reset, synchronize, finalize */ 91 uint8_t ruaprsf; 92 93 #define GET_TCP_HEADER_RESERVED2(header) \ 94 (((header)->ruaprsf & 0xc0) >> 6) 95 #define SET_TCP_HEADER_RESERVED2(header, reserved2) \ 96 ((header)->ruaprsf = \ 97 ((reserved2 & 0x03) << 6) | ((header)->ruaprsf & 0x3f)) 98 99 #define GET_TCP_HEADER_URGENT(header) \ 100 (((header)->ruaprsf & 0x20) >> 5) 101 #define SET_TCP_HEADER_URGENT(header, urgent) \ 102 ((header)->ruaprsf = \ 103 ((urgent & 0x01) << 5) | ((header)->ruaprsf & 0xdf)) 104 105 #define GET_TCP_HEADER_ACKNOWLEDGE(header) \ 106 (((header)->ruaprsf & 0x10) >> 4) 107 #define SET_TCP_HEADER_ACKNOWLEDGE(header, acknowledge) \ 108 ((header)->ruaprsf = \ 109 ((acknowledge & 0x01) << 4) | ((header)->ruaprsf & 0xef)) 110 111 #define GET_TCP_HEADER_PUSH(header) \ 112 (((header)->ruaprsf & 0x08) >> 3) 113 #define SET_TCP_HEADER_PUSH(header, push) \ 114 ((header)->ruaprsf = \ 115 ((push & 0x01) << 3) | ((header)->ruaprsf & 0xf7)) 116 117 #define GET_TCP_HEADER_RESET(header) \ 118 (((header)->ruaprsf & 0x04) >> 2) 119 #define SET_TCP_HEADER_RESET(header, reset) \ 120 ((header)->ruaprsf = \ 121 ((reset & 0x01) << 2) | ((header)->ruaprsf & 0xfb)) 122 123 #define GET_TCP_HEADER_SYNCHRONIZE(header) \ 124 (((header)->ruaprsf & 0x02) >> 1) 125 #define SET_TCP_HEADER_SYNCHRONIZE(header, synchronize) \ 126 ((header)->ruaprsf = \ 127 ((synchronize & 0x01) << 1) | ((header)->ruaprsf & 0xfd)) 128 129 #define GET_TCP_HEADER_FINALIZE(header) \ 130 ((header)->ruaprsf & 0x01) 131 #define SET_TCP_HEADER_FINALIZE(header, finalize) \ 132 ((header)->ruaprsf = \ 133 (finalize & 0x01) | ((header)->ruaprsf & 0xfe)) 101 134 102 135 uint16_t window; -
uspace/srv/ns/Makefile
r18ba2e4f r544a2e4 30 30 USPACE_PREFIX = ../.. 31 31 BINARY = ns 32 STATIC_NEEDED = y 32 33 33 34 SOURCES = \ -
uspace/srv/ns/clonable.c
r18ba2e4f r544a2e4 78 78 if (list_empty(&cs_req)) { 79 79 /* There was no pending connection request. */ 80 printf( NAME ": Unexpected clonable server.\n");80 printf("%s: Unexpected clonable server.\n", NAME); 81 81 ipc_answer_0(callid, EBUSY); 82 82 return; -
uspace/srv/ns/service.c
r18ba2e4f r544a2e4 35 35 #include <assert.h> 36 36 #include <errno.h> 37 #include <stdio.h> 38 #include <malloc.h> 37 39 #include "service.h" 38 40 #include "ns.h" -
uspace/srv/ns/task.c
r18ba2e4f r544a2e4 39 39 #include <stdio.h> 40 40 #include <macros.h> 41 #include <malloc.h> 41 42 #include "task.h" 42 43 #include "ns.h" -
uspace/srv/vfs/Makefile
r18ba2e4f r544a2e4 30 30 USPACE_PREFIX = ../.. 31 31 BINARY = vfs 32 STATIC_NEEDED = y 32 33 33 34 SOURCES = \
Note:
See TracChangeset
for help on using the changeset viewer.