Changeset 1d4024cf in mainline for uspace/lib
- Timestamp:
- 2012-06-13T16:19:01Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 49c94a3
- Parents:
- 33f9670 (diff), 2902e1bb (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/lib
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/ia64/include/fibril.h
r33f9670 r1d4024cf 49 49 #define PFM_MASK (~0x3fffffffff) 50 50 51 #define PSTHREAD_INITIAL_STACK_PAGES_NO 252 53 51 /* Stack is divided into two equal parts (for memory stack and register stack). */ 54 #define PSTHREAD_INITIAL_STACK_DIVISION 252 #define FIBRIL_INITIAL_STACK_DIVISION 2 55 53 56 54 #define context_set(c, _pc, stack, size, tls) \ … … 58 56 (c)->pc = (uint64_t) _pc; \ 59 57 (c)->bsp = ((uint64_t) stack) + \ 60 size / PSTHREAD_INITIAL_STACK_DIVISION; \58 size / FIBRIL_INITIAL_STACK_DIVISION; \ 61 59 (c)->ar_pfs &= PFM_MASK; \ 62 60 (c)->sp = ((uint64_t) stack) + \ 63 ALIGN_UP((size / PSTHREAD_INITIAL_STACK_DIVISION), STACK_ALIGNMENT) - \61 ALIGN_UP((size / FIBRIL_INITIAL_STACK_DIVISION), STACK_ALIGNMENT) - \ 64 62 SP_DELTA; \ 65 63 (c)->tp = (uint64_t) tls; \ -
uspace/lib/c/arch/ia64/include/thread.h
r33f9670 r1d4024cf 27 27 */ 28 28 29 /** @addtogroup libcia64 29 /** @addtogroup libcia64 30 30 * @{ 31 31 */ … … 36 36 #define LIBC_ia64_THREAD_H_ 37 37 38 #define THREAD_INITIAL_STACK_PAGES_NO 239 40 38 #endif 41 39 -
uspace/lib/c/generic/as.c
r33f9670 r1d4024cf 46 46 * 47 47 * @param base Starting virtual address of the area. 48 * If set to (void *) -1, the kernel finds49 * a mappable area.48 * If set to AS_AREA_ANY ((void *) -1), 49 * the kernel finds a mappable area. 50 50 * @param size Size of the area. 51 51 * @param flags Flags describing type of the area. 52 52 * 53 53 * @return Starting virtual address of the created area on success. 54 * @return (void *) -1otherwise.54 * @return AS_MAP_FAILED ((void *) -1) otherwise. 55 55 * 56 56 */ -
uspace/lib/c/generic/elf/elf_load.c
r33f9670 r1d4024cf 366 366 a = as_area_create((uint8_t *) base + bias, mem_sz, 367 367 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 368 if (a == (void *) -1) {368 if (a == AS_MAP_FAILED) { 369 369 DPRINTF("memory mapping failed (0x%x, %d)\n", 370 370 base + bias, mem_sz); -
uspace/lib/c/generic/fibril.c
r33f9670 r1d4024cf 286 286 } 287 287 288 /** Delete a fibril that has never run. 289 * 290 * Free resources of a fibril that has been created with fibril_create() 291 * but never readied using fibril_add_ready(). 292 * 293 * @param fid Pointer to the fibril structure of the fibril to be 294 * added. 295 */ 296 void fibril_destroy(fid_t fid) 297 { 298 fibril_t *fibril = (fibril_t *) fid; 299 300 free(fibril->stack); 301 fibril_teardown(fibril); 302 } 303 288 304 /** Add a fibril to the ready list. 289 305 * -
uspace/lib/c/generic/malloc.c
r33f9670 r1d4024cf 285 285 /* Align the heap area size on page boundary */ 286 286 size_t asize = ALIGN_UP(size, PAGE_SIZE); 287 void *astart = as_area_create( (void *) -1, asize,287 void *astart = as_area_create(AS_AREA_ANY, asize, 288 288 AS_AREA_WRITE | AS_AREA_READ); 289 if (astart == (void *) -1)289 if (astart == AS_MAP_FAILED) 290 290 return false; 291 291 -
uspace/lib/c/generic/mman.c
r33f9670 r1d4024cf 42 42 { 43 43 if (!start) 44 start = (void *) -1;44 start = AS_AREA_ANY; 45 45 46 46 // if (!((flags & MAP_SHARED) ^ (flags & MAP_PRIVATE))) -
uspace/lib/c/generic/thread.c
r33f9670 r1d4024cf 41 41 #include <str.h> 42 42 #include <async.h> 43 #include <errno.h> 44 #include <as.h> 43 45 #include "private/thread.h" 44 46 45 #ifndef THREAD_INITIAL_STACK_PAGES _NO46 #define THREAD_INITIAL_STACK_PAGES_NO 2 47 #ifndef THREAD_INITIAL_STACK_PAGES 48 #define THREAD_INITIAL_STACK_PAGES 2 47 49 #endif 48 50 … … 65 67 66 68 uarg->uspace_thread_function(uarg->uspace_thread_arg); 67 /* XXX: we cannot free the userspace stack while running on it 68 free(uarg->uspace_stack); 69 free(uarg); 70 */ 69 /* 70 * XXX: we cannot free the userspace stack while running on it 71 * 72 * free(uarg->uspace_stack); 73 * free(uarg); 74 */ 71 75 72 76 /* If there is a manager, destroy it */ … … 92 96 thread_id_t *tid) 93 97 { 94 char *stack; 95 uspace_arg_t *uarg; 96 int rc; 97 98 stack = (char *) malloc(getpagesize() * THREAD_INITIAL_STACK_PAGES_NO); 99 if (!stack) 100 return -1; 101 102 uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t)); 103 if (!uarg) { 104 free(stack); 105 return -1; 98 uspace_arg_t *uarg = 99 (uspace_arg_t *) malloc(sizeof(uspace_arg_t)); 100 if (!uarg) 101 return ENOMEM; 102 103 size_t stack_size = getpagesize() * THREAD_INITIAL_STACK_PAGES; 104 void *stack = as_area_create(AS_AREA_ANY, stack_size, 105 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 106 if (stack == AS_MAP_FAILED) { 107 free(uarg); 108 return ENOMEM; 106 109 } 107 110 108 111 uarg->uspace_entry = (void *) FADDR(__thread_entry); 109 uarg->uspace_stack = (void *) stack; 112 uarg->uspace_stack = stack; 113 uarg->uspace_stack_size = stack_size; 110 114 uarg->uspace_thread_function = function; 111 115 uarg->uspace_thread_arg = arg; 112 116 uarg->uspace_uarg = uarg; 113 117 114 rc = __SYSCALL4(SYS_THREAD_CREATE, (sysarg_t) uarg, (sysarg_t) name,115 (sysarg_t) str_size(name), (sysarg_t) tid);118 int rc = __SYSCALL4(SYS_THREAD_CREATE, (sysarg_t) uarg, 119 (sysarg_t) name, (sysarg_t) str_size(name), (sysarg_t) tid); 116 120 117 if (rc ) {121 if (rc != EOK) { 118 122 /* 119 123 * Failed to create a new thread. 120 * Free up the allocated structures.124 * Free up the allocated data. 121 125 */ 126 as_area_destroy(stack); 122 127 free(uarg); 123 free(stack);124 128 } 125 129 126 130 return rc; 127 131 } -
uspace/lib/c/include/as.h
r33f9670 r1d4024cf 41 41 #include <libarch/config.h> 42 42 43 #define AS_AREA_ANY ((void *) -1) 44 #define AS_MAP_FAILED ((void *) -1) 45 43 46 static inline size_t SIZE2PAGES(size_t size) 44 47 { -
uspace/lib/c/include/fibril.h
r33f9670 r1d4024cf 87 87 88 88 extern fid_t fibril_create(int (*func)(void *), void *arg); 89 extern void fibril_destroy(fid_t fid); 89 90 extern fibril_t *fibril_setup(void); 90 91 extern void fibril_teardown(fibril_t *f); -
uspace/lib/c/include/sys/mman.h
r33f9670 r1d4024cf 39 39 #include <sys/types.h> 40 40 41 #define MAP_FAILED ((void *) -1)41 #define MAP_FAILED AS_MAP_FAILED 42 42 43 43 #define MAP_SHARED (1 << 0) -
uspace/lib/fb/imgmap.c
r33f9670 r1d4024cf 420 420 421 421 if ((flags & IMGMAP_FLAG_SHARED) == IMGMAP_FLAG_SHARED) { 422 imgmap = (imgmap_t *) as_area_create( (void *) -1, size,422 imgmap = (imgmap_t *) as_area_create(AS_AREA_ANY, size, 423 423 AS_AREA_READ | AS_AREA_WRITE); 424 if (imgmap == (void *) -1)424 if (imgmap == AS_MAP_FAILED) 425 425 return NULL; 426 426 } else { -
uspace/lib/fb/screenbuffer.c
r33f9670 r1d4024cf 79 79 80 80 if ((flags & SCREENBUFFER_FLAG_SHARED) == SCREENBUFFER_FLAG_SHARED) { 81 scrbuf = (screenbuffer_t *) as_area_create( (void *) -1, size,81 scrbuf = (screenbuffer_t *) as_area_create(AS_AREA_ANY, size, 82 82 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 83 if (scrbuf == (void *) -1)83 if (scrbuf == AS_MAP_FAILED) 84 84 return NULL; 85 85 } else { -
uspace/lib/fs/libfs.c
r33f9670 r1d4024cf 339 339 */ 340 340 rc = async_share_in_start_0_0(exch, PLB_SIZE, (void *) ®.plb_ro); 341 if (reg.plb_ro == (void *) -1) {341 if (reg.plb_ro == AS_MAP_FAILED) { 342 342 async_exchange_end(exch); 343 343 async_forget(req);
Note:
See TracChangeset
for help on using the changeset viewer.