Changeset 827d73f in mainline for uspace/lib/libc
- Timestamp:
- 2010-02-12T14:09:22Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a70bda4
- Parents:
- 918e9910 (diff), e70edd1 (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/libc
- Files:
-
- 30 added
- 5 deleted
- 63 edited
- 3 moved
-
Makefile (modified) (2 diffs)
-
Makefile.build (deleted)
-
Makefile.common (deleted)
-
Makefile.toolchain (modified) (4 diffs)
-
arch/amd64/Makefile.inc (modified) (1 diff)
-
arch/amd64/include/inttypes.h (added)
-
arch/amd64/include/istate.h (added)
-
arch/amd64/include/limits.h (modified) (1 diff)
-
arch/amd64/include/types.h (modified) (1 diff)
-
arch/amd64/src/stacktrace.c (added)
-
arch/amd64/src/stacktrace_asm.S (added)
-
arch/arm32/Makefile.inc (modified) (1 diff)
-
arch/arm32/include/inttypes.h (added)
-
arch/arm32/include/istate.h (added)
-
arch/arm32/include/limits.h (modified) (2 diffs)
-
arch/arm32/include/types.h (modified) (1 diff)
-
arch/arm32/src/stacktrace.S (deleted)
-
arch/arm32/src/stacktrace.c (added)
-
arch/arm32/src/stacktrace_asm.S (added)
-
arch/ia32/Makefile.inc (modified) (1 diff)
-
arch/ia32/include/inttypes.h (added)
-
arch/ia32/include/istate.h (added)
-
arch/ia32/include/limits.h (modified) (1 diff)
-
arch/ia32/include/syscall.h (modified) (1 diff)
-
arch/ia32/include/tls.h (modified) (1 diff)
-
arch/ia32/include/types.h (modified) (1 diff)
-
arch/ia32/src/stacktrace.S (deleted)
-
arch/ia32/src/stacktrace.c (added)
-
arch/ia32/src/stacktrace_asm.S (added)
-
arch/ia64/Makefile.inc (modified) (1 diff)
-
arch/ia64/include/ddi.h (modified) (1 diff)
-
arch/ia64/include/faddr.h (modified) (2 diffs)
-
arch/ia64/include/fibril.h (modified) (2 diffs)
-
arch/ia64/include/inttypes.h (added)
-
arch/ia64/include/istate.h (added)
-
arch/ia64/include/limits.h (modified) (2 diffs)
-
arch/ia64/include/types.h (modified) (4 diffs)
-
arch/ia64/src/stacktrace.c (added)
-
arch/ia64/src/stacktrace_asm.S (added)
-
arch/mips32/Makefile.inc (modified) (1 diff)
-
arch/mips32/include/inttypes.h (added)
-
arch/mips32/include/istate.h (added)
-
arch/mips32/include/limits.h (modified) (2 diffs)
-
arch/mips32/include/types.h (modified) (1 diff)
-
arch/mips32/src/stacktrace.c (added)
-
arch/mips32/src/stacktrace_asm.S (moved) (moved from uspace/app/edit/Makefile.common ) (2 diffs)
-
arch/mips32eb/Makefile.inc (modified) (1 diff)
-
arch/mips32eb/include/inttypes.h (added)
-
arch/mips32eb/include/istate.h (added)
-
arch/ppc32/Makefile.inc (modified) (1 diff)
-
arch/ppc32/include/inttypes.h (added)
-
arch/ppc32/include/istate.h (added)
-
arch/ppc32/include/limits.h (modified) (2 diffs)
-
arch/ppc32/include/types.h (modified) (1 diff)
-
arch/ppc32/src/entry.s (modified) (1 diff)
-
arch/ppc32/src/stacktrace.c (added)
-
arch/ppc32/src/stacktrace_asm.S (moved) (moved from uspace/lib/libc/arch/ppc32/src/stacktrace.S ) (1 diff)
-
arch/ppc32/src/thread_entry.s (modified) (1 diff)
-
arch/sparc64/Makefile.inc (modified) (1 diff)
-
arch/sparc64/include/ddi.h (modified) (1 diff)
-
arch/sparc64/include/fibril.h (modified) (2 diffs)
-
arch/sparc64/include/inttypes.h (added)
-
arch/sparc64/include/istate.h (added)
-
arch/sparc64/include/limits.h (modified) (2 diffs)
-
arch/sparc64/include/types.h (modified) (2 diffs)
-
arch/sparc64/src/stacktrace.S (deleted)
-
arch/sparc64/src/stacktrace.c (added)
-
arch/sparc64/src/stacktrace_asm.S (moved) (moved from uspace/lib/libc/arch/amd64/src/stacktrace.S ) (1 diff)
-
generic/adt/hash_table.c (modified) (1 diff)
-
generic/async.c (modified) (8 diffs)
-
generic/clipboard.c (modified) (3 diffs)
-
generic/fibril.c (modified) (9 diffs)
-
generic/io/io.c (modified) (3 diffs)
-
generic/ipc.c (modified) (1 diff)
-
generic/malloc.c (modified) (1 diff)
-
generic/mman.c (modified) (1 diff)
-
generic/stacktrace.c (modified) (2 diffs)
-
generic/udebug.c (modified) (2 diffs)
-
generic/vfs/vfs.c (modified) (7 diffs)
-
include/adt/hash_table.h (modified) (1 diff)
-
include/assert.h (modified) (1 diff)
-
include/async.h (modified) (1 diff)
-
include/fibril.h (modified) (4 diffs)
-
include/inttypes.h (added)
-
include/ipc/adb.h (added)
-
include/ipc/bd.h (modified) (1 diff)
-
include/ipc/clipboard.h (modified) (1 diff)
-
include/ipc/vfs.h (modified) (5 diffs)
-
include/limits.h (modified) (4 diffs)
-
include/macros.h (modified) (1 diff)
-
include/stacktrace.h (modified) (2 diffs)
-
include/stdio.h (modified) (3 diffs)
-
include/stdlib.h (modified) (1 diff)
-
include/sys/mman.h (modified) (2 diffs)
-
include/sys/stat.h (modified) (2 diffs)
-
include/sys/time.h (modified) (2 diffs)
-
include/sys/typefmt.h (added)
-
include/sys/types.h (modified) (1 diff)
-
include/udebug.h (modified) (1 diff)
-
include/unistd.h (modified) (3 diffs)
-
include/vfs/vfs.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libc/Makefile
r918e9910 r827d73f 1 1 # 2 2 # Copyright (c) 2005 Martin Decky 3 # Copyright (c) 2007 Jakub Jermar 3 4 # All rights reserved. 4 5 # … … 27 28 # 28 29 29 include Makefile.common 30 -include ../../../Makefile.config 30 31 31 .PHONY: all clean 32 USPACE_PREFIX = $(shell pwd)/../.. 33 #LIBS = $(LIBC_PREFIX)/libc.a 34 LIBS = 32 35 33 all: ../../../Makefile.config ../../../config.h ../../../config.defs 34 -[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV) 35 $(MAKE) -f Makefile.build 36 LINK = arch/$(UARCH)/_link.ld 36 37 37 clean: 38 rm -f $(DEPEND) $(DEPEND_PREV) $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) $(LIBC) arch/*/_link.ld 39 find generic/ arch/*/ -name '*.o' -follow -exec rm \{\} \; 38 PRE_DEPEND = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) 39 EXTRA_CLEAN = $(INCLUDE_KERNEL) $(INCLUDE_ARCH) $(INCLUDE_LIBARCH) 40 EXTRA_OUTPUT = $(LINK) 41 42 INCLUDE_KERNEL = include/kernel 43 INCLUDE_ARCH = include/arch 44 INCLUDE_LIBARCH = include/libarch 45 46 OUTPUT = libc.a 47 48 GENERIC_SOURCES = \ 49 generic/libc.c \ 50 generic/ddi.c \ 51 generic/as.c \ 52 generic/cap.c \ 53 generic/clipboard.c \ 54 generic/devmap.c \ 55 generic/event.c \ 56 generic/errno.c \ 57 generic/mem.c \ 58 generic/string.c \ 59 generic/fibril.c \ 60 generic/fibril_synch.c \ 61 generic/pcb.c \ 62 generic/smc.c \ 63 generic/thread.c \ 64 generic/tls.c \ 65 generic/task.c \ 66 generic/futex.c \ 67 generic/io/asprintf.c \ 68 generic/io/io.c \ 69 generic/io/printf.c \ 70 generic/io/klog.c \ 71 generic/io/snprintf.c \ 72 generic/io/vprintf.c \ 73 generic/io/vsnprintf.c \ 74 generic/io/printf_core.c \ 75 generic/io/console.c \ 76 generic/malloc.c \ 77 generic/sysinfo.c \ 78 generic/ipc.c \ 79 generic/async.c \ 80 generic/loader.c \ 81 generic/getopt.c \ 82 generic/adt/list.o \ 83 generic/adt/hash_table.o \ 84 generic/time.c \ 85 generic/err.c \ 86 generic/stdlib.c \ 87 generic/mman.c \ 88 generic/udebug.c \ 89 generic/vfs/vfs.c \ 90 generic/vfs/canonify.c \ 91 generic/stacktrace.c 92 93 ARCH_SOURCES = \ 94 arch/$(UARCH)/src/entry.s \ 95 arch/$(UARCH)/src/thread_entry.s 96 97 SOURCES = \ 98 $(GENERIC_SOURCES) \ 99 $(ARCH_SOURCES) 100 101 include ../Makefile.common 102 103 $(INCLUDE_ARCH): $(INCLUDE_KERNEL) $(INCLUDE_KERNEL)/arch 104 ln -sfn kernel/arch $@ 105 106 $(INCLUDE_LIBARCH): arch/$(UARCH)/include 107 ln -sfn ../$< $@ 108 109 $(INCLUDE_KERNEL)/arch: ../../../kernel/generic/include/arch $(INCLUDE_KERNEL) 110 111 $(INCLUDE_KERNEL): ../../../kernel/generic/include/ 112 ln -sfn ../$< $@ 113 114 $(LINK): $(LINK).in 115 $(GCC) $(DEFS) $(CFLAGS) -DLIBC_PREFIX=$(LIBC_PREFIX) -E -x c $< | grep -v "^\#" > $@ -
uspace/lib/libc/Makefile.toolchain
r918e9910 r827d73f 31 31 -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \ 32 32 -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \ 33 -Werror-implicit-function-declaration - pipe -g -D__$(ENDIANESS)__33 -Werror-implicit-function-declaration -Werror -pipe -g -D__$(ENDIANESS)__ 34 34 35 35 ICC_CFLAGS = -I$(LIBC_PREFIX)/include -O3 -imacros $(LIBC_PREFIX)/../../../config.h \ … … 37 37 -finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc \ 38 38 -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes \ 39 -Werror-implicit-function-declaration - pipe -g -D__$(ENDIANESS)__39 -Werror-implicit-function-declaration -Werror -pipe -g -D__$(ENDIANESS)__ 40 40 41 41 CLANG_CFLAGS = -I$(LIBC_PREFIX)/include -O3 -imacros $(LIBC_PREFIX)/../../../config.h \ … … 59 59 # 60 60 61 include $(LIBC_PREFIX)/../../../Makefile.config62 include $(LIBC_PREFIX)/../../../config.defs63 include $(LIBC_PREFIX)/arch/$(UARCH)/Makefile.inc61 -include $(LIBC_PREFIX)/../../../Makefile.config 62 -include $(LIBC_PREFIX)/../../../config.defs 63 -include $(LIBC_PREFIX)/arch/$(UARCH)/Makefile.inc 64 64 65 65 ## Simple detection of the host system … … 77 77 ## Toolchain configuration 78 78 # 79 80 JOBFILE = $(LIBC_PREFIX)/../../../tools/jobfile.py 79 81 80 82 ifeq ($(COMPILER),gcc_cross) -
uspace/lib/libc/arch/amd64/Makefile.inc
r918e9910 r827d73f 37 37 arch/$(UARCH)/src/fibril.S \ 38 38 arch/$(UARCH)/src/tls.c \ 39 arch/$(UARCH)/src/stacktrace.S 39 arch/$(UARCH)/src/stacktrace.c \ 40 arch/$(UARCH)/src/stacktrace_asm.S 40 41 41 42 GCC_CFLAGS += -fno-omit-frame-pointer -
uspace/lib/libc/arch/amd64/include/limits.h
r918e9910 r827d73f 36 36 #define LIBC_amd64_LIMITS_H_ 37 37 38 # define LONG_MIN MIN_INT64 39 # define LONG_MAX MAX_INT64 40 # define ULONG_MIN MIN_UINT64 41 # define ULONG_MAX MAX_UINT64 38 #define LONG_MIN MIN_INT64 39 #define LONG_MAX MAX_INT64 40 #define ULONG_MIN MIN_UINT64 41 #define ULONG_MAX MAX_UINT64 42 43 #define SIZE_MIN MIN_UINT64 44 #define SIZE_MAX MAX_UINT64 45 #define SSIZE_MIN MIN_INT64 46 #define SSIZE_MAX MAX_INT64 42 47 43 48 #endif -
uspace/lib/libc/arch/amd64/include/types.h
r918e9910 r827d73f 36 36 #define LIBC_amd64_TYPES_H_ 37 37 38 #define __64_BITS__ 39 38 40 typedef unsigned long long sysarg_t; 39 41 -
uspace/lib/libc/arch/arm32/Makefile.inc
r918e9910 r827d73f 38 38 arch/$(UARCH)/src/tls.c \ 39 39 arch/$(UARCH)/src/eabi.S \ 40 arch/$(UARCH)/src/stacktrace.S 40 arch/$(UARCH)/src/stacktrace.c \ 41 arch/$(UARCH)/src/stacktrace_asm.S 41 42 42 43 GCC_CFLAGS += -ffixed-r9 -mtp=soft -mapcs-frame -fno-omit-frame-pointer -
uspace/lib/libc/arch/arm32/include/limits.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcarm32 29 /** @addtogroup libcarm32 30 30 * @{ 31 31 */ 32 /** @file 32 /** @file 33 33 * @brief Limits declarations. 34 34 */ … … 42 42 #define ULONG_MAX MAX_UINT32 43 43 44 #define SIZE_MIN MIN_UINT32 45 #define SIZE_MAX MAX_UINT32 46 #define SSIZE_MIN MIN_INT32 47 #define SSIZE_MAX MAX_INT32 48 44 49 #endif 45 50 -
uspace/lib/libc/arch/arm32/include/types.h
r918e9910 r827d73f 37 37 #define LIBC_arm32_TYPES_H_ 38 38 39 #define __32_BITS__ 40 39 41 typedef unsigned int sysarg_t; 40 42 -
uspace/lib/libc/arch/ia32/Makefile.inc
r918e9910 r827d73f 38 38 arch/$(UARCH)/src/tls.c \ 39 39 arch/$(UARCH)/src/setjmp.S \ 40 arch/$(UARCH)/src/stacktrace.S 40 arch/$(UARCH)/src/stacktrace.c \ 41 arch/$(UARCH)/src/stacktrace_asm.S 41 42 42 43 GCC_CFLAGS += -march=pentium -
uspace/lib/libc/arch/ia32/include/limits.h
r918e9910 r827d73f 36 36 #define LIBC_ia32__LIMITS_H_ 37 37 38 # define LONG_MIN MIN_INT32 39 # define LONG_MAX MAX_INT32 40 # define ULONG_MIN MIN_UINT32 41 # define ULONG_MAX MAX_UINT32 38 #define LONG_MIN MIN_INT32 39 #define LONG_MAX MAX_INT32 40 #define ULONG_MIN MIN_UINT32 41 #define ULONG_MAX MAX_UINT32 42 43 #define SIZE_MIN MIN_UINT32 44 #define SIZE_MAX MAX_UINT32 45 #define SSIZE_MIN MIN_INT32 46 #define SSIZE_MAX MAX_INT32 42 47 43 48 #endif -
uspace/lib/libc/arch/ia32/include/syscall.h
r918e9910 r827d73f 40 40 #include <kernel/syscall/syscall.h> 41 41 42 #define __syscall0 __syscall_fast_func43 #define __syscall1 __syscall_fast_func44 #define __syscall2 __syscall_fast_func45 #define __syscall3 __syscall_fast_func46 #define __syscall4 __syscall_fast_func47 #define __syscall5 __syscall_slow48 #define __syscall6 __syscall_slow42 #define __syscall0 __syscall_fast_func 43 #define __syscall1 __syscall_fast_func 44 #define __syscall2 __syscall_fast_func 45 #define __syscall3 __syscall_fast_func 46 #define __syscall4 __syscall_fast_func 47 #define __syscall5 __syscall_slow 48 #define __syscall6 __syscall_slow 49 49 50 extern sysarg_t 51 (* __syscall_fast_func)(const sysarg_t, const sysarg_t, const sysarg_t, 50 extern sysarg_t (* __syscall_fast_func)(const sysarg_t, const sysarg_t, 51 const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t, 52 const syscall_t); 53 54 extern sysarg_t __syscall_slow(const sysarg_t, const sysarg_t, const sysarg_t, 52 55 const sysarg_t, const sysarg_t, const sysarg_t, const syscall_t); 53 54 extern sysarg_t55 __syscall_slow(const sysarg_t, const sysarg_t, const sysarg_t, const sysarg_t,56 const sysarg_t, const sysarg_t, const syscall_t);57 56 58 57 #endif -
uspace/lib/libc/arch/ia32/include/tls.h
r918e9910 r827d73f 53 53 { 54 54 void *retval; 55 56 asm ("movl %%gs:0, %0" : "=r"(retval)); 55 56 asm ( 57 "movl %%gs:0, %0" 58 : "=r" (retval) 59 ); 60 57 61 return retval; 58 62 } -
uspace/lib/libc/arch/ia32/include/types.h
r918e9910 r827d73f 36 36 #define LIBC_ia32_TYPES_H_ 37 37 38 #define __32_BITS__ 39 38 40 typedef unsigned int sysarg_t; 39 41 -
uspace/lib/libc/arch/ia64/Makefile.inc
r918e9910 r827d73f 37 37 arch/$(UARCH)/src/tls.c \ 38 38 arch/$(UARCH)/src/ddi.c \ 39 arch/$(UARCH)/src/stacktrace.S 39 arch/$(UARCH)/src/stacktrace.c \ 40 arch/$(UARCH)/src/stacktrace_asm.S 40 41 41 42 GCC_CFLAGS += -fno-unwind-tables -
uspace/lib/libc/arch/ia64/include/ddi.h
r918e9910 r827d73f 39 39 #include <libarch/types.h> 40 40 41 #define IO_SPACE_BOUNDARY ( 64 * 1024)41 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 42 42 43 43 uint64_t get_ia64_iospace_address(void); -
uspace/lib/libc/arch/ia64/include/faddr.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcia64 29 /** @addtogroup libcia64 30 30 * @{ 31 31 */ … … 38 38 #include <libarch/types.h> 39 39 40 /** 40 /** 41 41 * 42 42 * Calculate absolute address of function 43 43 * referenced by fptr pointer. 44 44 * 45 * @param f Function pointer.45 * @param fptr Function pointer. 46 46 * 47 47 */ 48 #define FADDR(f ) (*((uintptr_t *)(f)));48 #define FADDR(fptr) (((fncptr_t *) (fptr))->fnc) 49 49 50 50 #endif -
uspace/lib/libc/arch/ia64/include/fibril.h
r918e9910 r827d73f 53 53 #define PSTHREAD_INITIAL_STACK_DIVISION 2 54 54 55 #ifdef context_set56 #undef context_set57 #endif58 59 55 #define context_set(c, _pc, stack, size, tls) \ 60 56 do { \ … … 110 106 uint64_t pr; 111 107 112 __r128f2 __attribute__ ((aligned(16)));113 __r128f3;114 __r128f4;115 __r128f5;108 uint128_t f2 __attribute__ ((aligned(16))); 109 uint128_t f3; 110 uint128_t f4; 111 uint128_t f5; 116 112 117 __r128f16;118 __r128f17;119 __r128f18;120 __r128f19;121 __r128f20;122 __r128f21;123 __r128f22;124 __r128f23;125 __r128f24;126 __r128f25;127 __r128f26;128 __r128f27;129 __r128f28;130 __r128f29;131 __r128f30;132 __r128f31;113 uint128_t f16; 114 uint128_t f17; 115 uint128_t f18; 116 uint128_t f19; 117 uint128_t f20; 118 uint128_t f21; 119 uint128_t f22; 120 uint128_t f23; 121 uint128_t f24; 122 uint128_t f25; 123 uint128_t f26; 124 uint128_t f27; 125 uint128_t f28; 126 uint128_t f29; 127 uint128_t f30; 128 uint128_t f31; 133 129 134 130 } context_t; -
uspace/lib/libc/arch/ia64/include/limits.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcia64 29 /** @addtogroup libcia64 30 30 * @{ 31 31 */ … … 36 36 #define LIBC_ia64_LIMITS_H_ 37 37 38 # define LONG_MIN MIN_INT64 39 # define LONG_MAX MAX_INT64 40 # define ULONG_MIN MIN_UINT64 41 # define ULONG_MAX MAX_UINT64 38 #define LONG_MIN MIN_INT64 39 #define LONG_MAX MAX_INT64 40 #define ULONG_MIN MIN_UINT64 41 #define ULONG_MAX MAX_UINT64 42 43 #define SIZE_MIN MIN_UINT64 44 #define SIZE_MAX MAX_UINT64 45 #define SSIZE_MIN MIN_INT64 46 #define SSIZE_MAX MAX_INT64 42 47 43 48 #endif -
uspace/lib/libc/arch/ia64/include/types.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcia64 29 /** @addtogroup libcia64 30 30 * @{ 31 31 */ … … 35 35 #ifndef LIBC_ia64_TYPES_H_ 36 36 #define LIBC_ia64_TYPES_H_ 37 38 #define __64_BITS__ 37 39 38 40 typedef unsigned long long sysarg_t; … … 48 50 typedef unsigned long int uint64_t; 49 51 52 typedef struct { 53 uint64_t lo; 54 uint64_t hi; 55 } uint128_t; 56 50 57 typedef int64_t ssize_t; 51 58 typedef uint64_t size_t; … … 53 60 typedef uint64_t uintptr_t; 54 61 55 typedef unsigned char __r8; /* Reserve byte */ 56 typedef unsigned short __r16; 57 typedef unsigned int __r32; 58 typedef unsigned long __r64; 59 60 typedef struct __r128{ 61 __r64 lo; 62 __r64 hi; 63 } __r128; 62 typedef struct { 63 uintptr_t fnc; 64 uintptr_t gp; 65 } __attribute__((may_alias)) fncptr_t; 64 66 65 67 #endif -
uspace/lib/libc/arch/mips32/Makefile.inc
r918e9910 r827d73f 36 36 arch/$(UARCH)/src/fibril.S \ 37 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.S 38 arch/$(UARCH)/src/stacktrace.c \ 39 arch/$(UARCH)/src/stacktrace_asm.S 39 40 40 41 GCC_CFLAGS += -mips3 -
uspace/lib/libc/arch/mips32/include/limits.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcmips32 29 /** @addtogroup libcmips32 30 30 * @{ 31 31 */ 32 32 /** @file 33 * @ingroup libcmips32eb 33 * @ingroup libcmips32eb 34 34 */ 35 35 … … 37 37 #define LIBC_mips32__LIMITS_H_ 38 38 39 # define LONG_MIN MIN_INT32 40 # define LONG_MAX MAX_INT32 41 # define ULONG_MIN MIN_UINT32 42 # define ULONG_MAX MAX_UINT32 39 #define LONG_MIN MIN_INT32 40 #define LONG_MAX MAX_INT32 41 #define ULONG_MIN MIN_UINT32 42 #define ULONG_MAX MAX_UINT32 43 44 #define SIZE_MIN MIN_UINT32 45 #define SIZE_MAX MAX_UINT32 46 #define SSIZE_MIN MIN_INT32 47 #define SSIZE_MAX MAX_INT32 43 48 44 49 #endif -
uspace/lib/libc/arch/mips32/include/types.h
r918e9910 r827d73f 37 37 #define LIBC_mips32_TYPES_H_ 38 38 39 #define __32_BITS__ 40 39 41 typedef unsigned int sysarg_t; 40 42 -
uspace/lib/libc/arch/mips32/src/stacktrace_asm.S
r918e9910 r827d73f 1 1 # 2 # Copyright (c) 200 5 Martin Decky2 # Copyright (c) 2009 Jakub Jermar 3 3 # All rights reserved. 4 4 # … … 27 27 # 28 28 29 .text 29 30 30 ## Common names 31 # 31 .set noat 32 .set noreorder 32 33 33 LIBC_PREFIX = ../../lib/libc 34 SOFTINT_PREFIX = ../../lib/softint35 LIBS = $(LIBC_PREFIX)/libc.a 34 .global stacktrace_prepare 35 .global stacktrace_fp_get 36 .global stacktrace_pc_get 36 37 37 DEPEND = Makefile.depend 38 DEPEND_PREV = $(DEPEND).prev 39 OUTPUT = edit 38 stacktrace_prepare: 39 stacktrace_fp_get: 40 stacktrace_pc_get: 41 j $ra 42 xor $v0, $v0 -
uspace/lib/libc/arch/mips32eb/Makefile.inc
r918e9910 r827d73f 35 35 ARCH_SOURCES += arch/$(UARCH)/src/syscall.c \ 36 36 arch/$(UARCH)/src/fibril.S \ 37 arch/$(UARCH)/src/tls.c 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.c \ 39 arch/$(UARCH)/src/stacktrace_asm.S 38 40 39 41 GCC_CFLAGS += -mips3 -
uspace/lib/libc/arch/ppc32/Makefile.inc
r918e9910 r827d73f 36 36 arch/$(UARCH)/src/fibril.S \ 37 37 arch/$(UARCH)/src/tls.c \ 38 arch/$(UARCH)/src/stacktrace.S 38 arch/$(UARCH)/src/stacktrace.c \ 39 arch/$(UARCH)/src/stacktrace_asm.S 39 40 40 41 GCC_CFLAGS += -mcpu=powerpc -msoft-float -m32 -
uspace/lib/libc/arch/ppc32/include/limits.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcppc32 29 /** @addtogroup libcppc32 30 30 * @{ 31 31 */ … … 41 41 #define ULONG_MAX MAX_UINT32 42 42 43 #define SIZE_MIN MIN_UINT32 44 #define SIZE_MAX MAX_UINT32 45 #define SSIZE_MIN MIN_INT32 46 #define SSIZE_MAX MAX_INT32 47 43 48 #endif 44 49 -
uspace/lib/libc/arch/ppc32/include/types.h
r918e9910 r827d73f 36 36 #define LIBC_ppc32_TYPES_H_ 37 37 38 #define __32_BITS__ 39 38 40 typedef unsigned int sysarg_t; 39 41 -
uspace/lib/libc/arch/ppc32/src/entry.s
r918e9910 r827d73f 38 38 # 39 39 __entry: 40 # 41 # Create the first stack frame. 42 # 43 li %r3, 0 44 stw %r3, 0(%r1) 45 stwu %r1, -16(%r1) 46 40 47 # Pass the PCB pointer to __main() as the first argument. 41 48 # The first argument is passed in r3. -
uspace/lib/libc/arch/ppc32/src/stacktrace_asm.S
r918e9910 r827d73f 31 31 #include <libarch/regname.h> 32 32 33 .global frame_pointer_get 34 .global frame_pointer_prev 35 .global frame_pointer_validate 36 .global return_address_get 37 .global program_counter_get 33 .global stacktrace_prepare 34 .global stacktrace_fp_get 35 .global stacktrace_pc_get 38 36 39 frame_pointer_get: 40 frame_pointer_prev: 41 frame_pointer_validate: 42 return_address_get: 43 program_counter_get: 44 li r3, 0 37 stacktrace_prepare: 45 38 blr 39 40 stacktrace_fp_get: 41 mr r3, sp 42 blr 43 44 stacktrace_pc_get: 45 mflr r3 46 blr -
uspace/lib/libc/arch/ppc32/src/thread_entry.s
r918e9910 r827d73f 35 35 # 36 36 __thread_entry: 37 # 38 # Create the first stack frame. 39 # 40 li %r4, 0 41 stw %r4, 0(%r1) 42 stwu %r1, -16(%r1) 43 37 44 b __thread_main 38 45 -
uspace/lib/libc/arch/sparc64/Makefile.inc
r918e9910 r827d73f 35 35 ARCH_SOURCES += arch/$(UARCH)/src/fibril.S \ 36 36 arch/$(UARCH)/src/tls.c \ 37 arch/$(UARCH)/src/stacktrace.S 37 arch/$(UARCH)/src/stacktrace.c \ 38 arch/$(UARCH)/src/stacktrace_asm.S 38 39 39 40 GCC_CFLAGS += -mcpu=ultrasparc -m64 -
uspace/lib/libc/arch/sparc64/include/ddi.h
r918e9910 r827d73f 37 37 #include <libarch/types.h> 38 38 39 static inline memory_barrier(void)39 static inline void memory_barrier(void) 40 40 { 41 asm volatile ("membar #LoadLoad | #StoreStore\n" ::: "memory"); 41 asm volatile ( 42 "membar #LoadLoad | #StoreStore\n" 43 ::: "memory" 44 ); 42 45 } 43 46 -
uspace/lib/libc/arch/sparc64/include/fibril.h
r918e9910 r827d73f 42 42 #define SP_DELTA (STACK_WINDOW_SAVE_AREA_SIZE + STACK_ARG_SAVE_AREA_SIZE) 43 43 44 #ifdef context_set45 #undef context_set46 #endif47 48 44 #define context_set(c, _pc, stack, size, ptls) \ 49 45 do { \ … … 52 48 STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \ 53 49 (c)->fp = -STACK_BIAS; \ 54 (c)->tp = ptls; \50 (c)->tp = (uint64_t) ptls; \ 55 51 } while (0) 56 52 -
uspace/lib/libc/arch/sparc64/include/limits.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcsparc64 29 /** @addtogroup libcsparc64 30 30 * @{ 31 31 */ … … 41 41 #define ULONG_MAX MAX_UINT64 42 42 43 #define SIZE_MIN MIN_UINT64 44 #define SIZE_MAX MAX_UINT64 45 #define SSIZE_MIN MIN_INT64 46 #define SSIZE_MAX MAX_INT64 47 43 48 #endif 44 49 -
uspace/lib/libc/arch/sparc64/include/types.h
r918e9910 r827d73f 27 27 */ 28 28 29 /** @addtogroup libcsparc64 29 /** @addtogroup libcsparc64 30 30 * @{ 31 31 */ … … 35 35 #ifndef LIBC_sparc64_TYPES_H_ 36 36 #define LIBC_sparc64_TYPES_H_ 37 38 #define __64_BITS__ 37 39 38 40 typedef unsigned long sysarg_t; -
uspace/lib/libc/arch/sparc64/src/stacktrace_asm.S
r918e9910 r827d73f 27 27 # 28 28 29 #include <libarch/stack.h> 30 29 31 .text 30 32 31 .global frame_pointer_get 32 .global frame_pointer_prev 33 .global frame_pointer_validate 34 .global return_address_get 35 .global program_counter_get 33 .global stacktrace_prepare 34 .global stacktrace_fp_get 35 .global stacktrace_pc_get 36 36 37 frame_pointer_get: 38 movq %rbp, %rax 37 stacktrace_prepare: 38 save %sp, -(STACK_WINDOW_SAVE_AREA_SIZE+STACK_ARG_SAVE_AREA_SIZE), %sp 39 # Flush all other windows to memory so that we can read their contents. 40 flushw 39 41 ret 42 restore 40 43 41 frame_pointer_prev: 42 movq (%rdi), %rax 43 ret 44 stacktrace_fp_get: 45 # Add the stack bias to %sp to get the actual address. 46 retl 47 add %sp, STACK_BIAS, %o0 44 48 45 frame_pointer_validate: 46 movq %rdi, %rax 47 ret 48 49 return_address_get: 50 movq 8(%rdi), %rax 51 ret 52 53 program_counter_get: 54 movq (%rsp), %rax 55 ret 49 stacktrace_pc_get: 50 retl 51 mov %o7, %o0 -
uspace/lib/libc/generic/adt/hash_table.c
r918e9910 r827d73f 193 193 } 194 194 195 /** Apply fucntion to all items in hash table. 196 * 197 * @param h Hash table. 198 * @param f Function to be applied. 199 * @param arg Argument to be passed to the function. 200 */ 201 void 202 hash_table_apply(hash_table_t *h, void (*f)(link_t *, void *), void *arg) 203 { 204 hash_index_t bucket; 205 link_t *cur; 206 207 for (bucket = 0; bucket < h->entries; bucket++) { 208 for (cur = h->entry[bucket].next; cur != &h->entry[bucket]; 209 cur = cur->next) { 210 f(cur, arg); 211 } 212 } 213 } 214 195 215 /** @} 196 216 */ -
uspace/lib/libc/generic/async.c
r918e9910 r827d73f 1287 1287 } 1288 1288 1289 /** Wrapper for forwarding any read request 1290 * 1291 * 1292 */ 1293 int async_data_read_forward_fast(int phoneid, ipcarg_t method, ipcarg_t arg1, 1294 ipcarg_t arg2, ipcarg_t arg3, ipcarg_t arg4, ipc_call_t *dataptr) 1295 { 1296 ipc_callid_t callid; 1297 if (!async_data_read_receive(&callid, NULL)) { 1298 ipc_answer_0(callid, EINVAL); 1299 return EINVAL; 1300 } 1301 1302 aid_t msg = async_send_fast(phoneid, method, arg1, arg2, arg3, arg4, 1303 dataptr); 1304 if (msg == 0) { 1305 ipc_answer_0(callid, EINVAL); 1306 return EINVAL; 1307 } 1308 1309 int retval = ipc_forward_fast(callid, phoneid, 0, 0, 0, 1310 IPC_FF_ROUTE_FROM_ME); 1311 if (retval != EOK) { 1312 async_wait_for(msg, NULL); 1313 ipc_answer_0(callid, retval); 1314 return retval; 1315 } 1316 1317 ipcarg_t rc; 1318 async_wait_for(msg, &rc); 1319 1320 return (int) rc; 1321 } 1322 1289 1323 /** Wrapper for making IPC_M_DATA_WRITE calls using the async framework. 1290 1324 * 1291 * @param phoneid Phone that will be used to contact the receiving side. 1292 * @param src Address of the beginning of the source buffer. 1293 * @param size Size of the source buffer. 1294 * 1295 * @return Zero on success or a negative error code from errno.h. 1325 * @param phoneid Phone that will be used to contact the receiving side. 1326 * @param src Address of the beginning of the source buffer. 1327 * @param size Size of the source buffer. 1328 * 1329 * @return Zero on success or a negative error code from errno.h. 1330 * 1296 1331 */ 1297 1332 int async_data_write_start(int phoneid, const void *src, size_t size) … … 1308 1343 * So far, this wrapper is to be used from within a connection fibril. 1309 1344 * 1310 * @param callid Storage where the hash of the IPC_M_DATA_WRITE call will 1311 * be stored. 1312 * @param size Storage where the suggested size will be stored. May be 1313 * NULL 1314 * 1315 * @return Non-zero on success, zero on failure. 1345 * @param callid Storage where the hash of the IPC_M_DATA_WRITE call will 1346 * be stored. 1347 * @param size Storage where the suggested size will be stored. May be 1348 * NULL 1349 * 1350 * @return Non-zero on success, zero on failure. 1351 * 1316 1352 */ 1317 1353 int async_data_write_receive(ipc_callid_t *callid, size_t *size) … … 1320 1356 1321 1357 assert(callid); 1322 1358 1323 1359 *callid = async_get_call(&data); 1324 1360 if (IPC_GET_METHOD(data) != IPC_M_DATA_WRITE) 1325 1361 return 0; 1362 1326 1363 if (size) 1327 1364 *size = (size_t) IPC_GET_ARG2(data); 1365 1328 1366 return 1; 1329 1367 } … … 1334 1372 * so that the user doesn't have to remember the meaning of each IPC argument. 1335 1373 * 1336 * @param callid Hash of the IPC_M_DATA_WRITE call to answer. 1337 * @param dst Final destination address for the IPC_M_DATA_WRITE call. 1338 * @param size Final size for the IPC_M_DATA_WRITE call. 1339 * 1340 * @return Zero on success or a value from @ref errno.h on failure. 1374 * @param callid Hash of the IPC_M_DATA_WRITE call to answer. 1375 * @param dst Final destination address for the IPC_M_DATA_WRITE call. 1376 * @param size Final size for the IPC_M_DATA_WRITE call. 1377 * 1378 * @return Zero on success or a value from @ref errno.h on failure. 1379 * 1341 1380 */ 1342 1381 int async_data_write_finalize(ipc_callid_t callid, void *dst, size_t size) … … 1345 1384 } 1346 1385 1347 /** Wrapper for receiving b lobs via the async_data_write_*1386 /** Wrapper for receiving binary data or strings 1348 1387 * 1349 1388 * This wrapper only makes it more comfortable to use async_data_write_* 1350 * functions to receive blobs. 1351 * 1352 * @param blob Pointer to data pointer (which should be later disposed 1353 * by free()). If the operation fails, the pointer is not 1354 * touched. 1355 * @param max_size Maximum size (in bytes) of the blob to receive. 0 means 1356 * no limit. 1357 * @param received If not NULL, the size of the received data is stored here. 1389 * functions to receive binary data or strings. 1390 * 1391 * @param data Pointer to data pointer (which should be later disposed 1392 * by free()). If the operation fails, the pointer is not 1393 * touched. 1394 * @param nullterm If true then the received data is always zero terminated. 1395 * This also causes to allocate one extra byte beyond the 1396 * raw transmitted data. 1397 * @param min_size Minimum size (in bytes) of the data to receive. 1398 * @param max_size Maximum size (in bytes) of the data to receive. 0 means 1399 * no limit. 1400 * @param granulariy If non-zero then the size of the received data has to 1401 * be divisible by this value. 1402 * @param received If not NULL, the size of the received data is stored here. 1358 1403 * 1359 1404 * @return Zero on success or a value from @ref errno.h on failure. 1360 1405 * 1361 1406 */ 1362 int async_data_blob_receive(char **blob, const size_t max_size, size_t *received) 1407 int async_data_write_accept(void **data, const bool nullterm, 1408 const size_t min_size, const size_t max_size, const size_t granularity, 1409 size_t *received) 1363 1410 { 1364 1411 ipc_callid_t callid; … … 1369 1416 } 1370 1417 1418 if (size < min_size) { 1419 ipc_answer_0(callid, EINVAL); 1420 return EINVAL; 1421 } 1422 1371 1423 if ((max_size > 0) && (size > max_size)) { 1372 1424 ipc_answer_0(callid, EINVAL); … … 1374 1426 } 1375 1427 1376 char *data = (char *) malloc(size); 1377 if (data == NULL) { 1428 if ((granularity > 0) && ((size % granularity) != 0)) { 1429 ipc_answer_0(callid, EINVAL); 1430 return EINVAL; 1431 } 1432 1433 void *_data; 1434 1435 if (nullterm) 1436 _data = malloc(size + 1); 1437 else 1438 _data = malloc(size); 1439 1440 if (_data == NULL) { 1378 1441 ipc_answer_0(callid, ENOMEM); 1379 1442 return ENOMEM; 1380 1443 } 1381 1444 1382 int rc = async_data_write_finalize(callid, data, size);1445 int rc = async_data_write_finalize(callid, _data, size); 1383 1446 if (rc != EOK) { 1384 free( data);1447 free(_data); 1385 1448 return rc; 1386 1449 } 1387 1450 1388 *blob = data; 1451 if (nullterm) 1452 ((char *) _data)[size] = 0; 1453 1454 *data = _data; 1389 1455 if (received != NULL) 1390 1456 *received = size; … … 1393 1459 } 1394 1460 1395 /** Wrapper for receiving strings via the async_data_write_* 1396 * 1397 * This wrapper only makes it more comfortable to use async_data_write_* 1398 * functions to receive strings. 1399 * 1400 * @param str Pointer to string pointer (which should be later disposed 1401 * by free()). If the operation fails, the pointer is not 1402 * touched. 1403 * @param max_size Maximum size (in bytes) of the string to receive. 0 means 1404 * no limit. 1405 * 1406 * @return Zero on success or a value from @ref errno.h on failure. 1407 * 1408 */ 1409 int async_data_string_receive(char **str, const size_t max_size) 1461 /** Wrapper for voiding any data that is about to be received 1462 * 1463 * This wrapper can be used to void any pending data 1464 * 1465 * @param retval Error value from @ref errno.h to be returned to the caller. 1466 * 1467 */ 1468 void async_data_write_void(const int retval) 1410 1469 { 1411 1470 ipc_callid_t callid; 1412 size_t size; 1413 if (!async_data_write_receive(&callid, &size)) { 1471 async_data_write_receive(&callid, NULL); 1472 ipc_answer_0(callid, retval); 1473 } 1474 1475 /** Wrapper for forwarding any data that is about to be received 1476 * 1477 * 1478 */ 1479 int async_data_write_forward_fast(int phoneid, ipcarg_t method, ipcarg_t arg1, 1480 ipcarg_t arg2, ipcarg_t arg3, ipcarg_t arg4, ipc_call_t *dataptr) 1481 { 1482 ipc_callid_t callid; 1483 if (!async_data_write_receive(&callid, NULL)) { 1414 1484 ipc_answer_0(callid, EINVAL); 1415 1485 return EINVAL; 1416 1486 } 1417 1487 1418 if ((max_size > 0) && (size > max_size)) { 1488 aid_t msg = async_send_fast(phoneid, method, arg1, arg2, arg3, arg4, 1489 dataptr); 1490 if (msg == 0) { 1419 1491 ipc_answer_0(callid, EINVAL); 1420 1492 return EINVAL; 1421 1493 } 1422 1494 1423 char *data = (char *) malloc(size + 1); 1424 if (data == NULL) { 1425 ipc_answer_0(callid, ENOMEM); 1426 return ENOMEM; 1427 } 1428 1429 int rc = async_data_write_finalize(callid, data, size); 1430 if (rc != EOK) { 1431 free(data); 1432 return rc; 1433 } 1434 1435 data[size] = 0; 1436 *str = data; 1437 return EOK; 1495 int retval = ipc_forward_fast(callid, phoneid, 0, 0, 0, 1496 IPC_FF_ROUTE_FROM_ME); 1497 if (retval != EOK) { 1498 async_wait_for(msg, NULL); 1499 ipc_answer_0(callid, retval); 1500 return retval; 1501 } 1502 1503 ipcarg_t rc; 1504 async_wait_for(msg, &rc); 1505 1506 return (int) rc; 1438 1507 } 1439 1508 -
uspace/lib/libc/generic/clipboard.c
r918e9910 r827d73f 84 84 clip_connect(); 85 85 86 aid_t req = async_send_1(clip_phone, CLIPBOARD_PUT_DATA, CLIPBOARD_TAG_ BLOB, NULL);86 aid_t req = async_send_1(clip_phone, CLIPBOARD_PUT_DATA, CLIPBOARD_TAG_DATA, NULL); 87 87 ipcarg_t rc = async_data_write_start(clip_phone, (void *) str, size); 88 88 if (rc != EOK) { … … 139 139 *str = sbuf; 140 140 return EOK; 141 case CLIPBOARD_TAG_ BLOB:141 case CLIPBOARD_TAG_DATA: 142 142 sbuf = malloc(size + 1); 143 143 if (sbuf == NULL) … … 148 148 aid_t req = async_send_1(clip_phone, CLIPBOARD_GET_DATA, tag, NULL); 149 149 rc = async_data_read_start(clip_phone, (void *) sbuf, size); 150 if ( rc == EOVERFLOW) {150 if ((int) rc == EOVERFLOW) { 151 151 /* 152 152 * The data in the clipboard has changed since -
uspace/lib/libc/generic/fibril.c
r918e9910 r827d73f 41 41 #include <unistd.h> 42 42 #include <stdio.h> 43 #include <arch/barrier.h> 43 44 #include <libarch/faddr.h> 44 45 #include <futex.h> … … 133 134 int fibril_switch(fibril_switch_type_t stype) 134 135 { 135 fibril_t *srcf, *dstf;136 136 int retval = 0; 137 137 138 138 futex_down(&fibril_futex); 139 139 140 140 if (stype == FIBRIL_PREEMPT && list_empty(&ready_list)) 141 141 goto ret_0; 142 142 143 143 if (stype == FIBRIL_FROM_MANAGER) { 144 if ( list_empty(&ready_list) && list_empty(&serialized_list))144 if ((list_empty(&ready_list)) && (list_empty(&serialized_list))) 145 145 goto ret_0; 146 146 147 /* 147 148 * Do not preempt if there is not enough threads to run the 148 149 * ready fibrils which are not serialized. 149 150 */ 150 if ( list_empty(&serialized_list) &&151 threads_in_manager <= serialized_threads) {151 if ((list_empty(&serialized_list)) && 152 (threads_in_manager <= serialized_threads)) { 152 153 goto ret_0; 153 154 } 154 155 } 156 155 157 /* If we are going to manager and none exists, create it */ 156 if ( stype == FIBRIL_TO_MANAGER || stype == FIBRIL_FROM_DEAD) {158 if ((stype == FIBRIL_TO_MANAGER) || (stype == FIBRIL_FROM_DEAD)) { 157 159 while (list_empty(&manager_list)) { 158 160 futex_up(&fibril_futex); … … 162 164 } 163 165 164 srcf = __tcb_get()->fibril_data;166 fibril_t *srcf = __tcb_get()->fibril_data; 165 167 if (stype != FIBRIL_FROM_DEAD) { 168 166 169 /* Save current state */ 167 170 if (!context_save(&srcf->ctx)) { 168 171 if (serialization_count) 169 172 srcf->flags &= ~FIBRIL_SERIALIZED; 173 170 174 if (srcf->clean_after_me) { 171 175 /* … … 173 177 * restored context here. 174 178 */ 175 void *stack = srcf->clean_after_me->stack; 179 void *stack = srcf->clean_after_me->stack; 176 180 if (stack) { 177 181 /* … … 188 192 srcf->clean_after_me = NULL; 189 193 } 194 190 195 return 1; /* futex_up already done here */ 191 196 } 192 197 193 198 /* Save myself to the correct run list */ 194 199 if (stype == FIBRIL_PREEMPT) … … 197 202 list_append(&srcf->link, &manager_list); 198 203 threads_in_manager--; 199 } else { 204 } else { 200 205 /* 201 206 * If stype == FIBRIL_TO_MANAGER, don't put ourselves to … … 206 211 } 207 212 213 /* Avoid srcf being clobbered by context_save() */ 214 srcf = __tcb_get()->fibril_data; 215 208 216 /* Choose a new fibril to run */ 209 if (stype == FIBRIL_TO_MANAGER || stype == FIBRIL_FROM_DEAD) { 217 fibril_t *dstf; 218 if ((stype == FIBRIL_TO_MANAGER) || (stype == FIBRIL_FROM_DEAD)) { 210 219 dstf = list_get_instance(manager_list.next, fibril_t, link); 211 220 if (serialization_count && stype == FIBRIL_TO_MANAGER) { … … 214 223 } 215 224 threads_in_manager++; 216 225 217 226 if (stype == FIBRIL_FROM_DEAD) 218 227 dstf->clean_after_me = srcf; … … 228 237 } 229 238 list_remove(&dstf->link); 230 239 231 240 futex_up(&fibril_futex); 232 241 context_restore(&dstf->ctx); 233 242 /* not reached */ 234 243 235 244 ret_0: 236 245 futex_up(&fibril_futex); -
uspace/lib/libc/generic/io/io.c
r918e9910 r827d73f 541 541 } 542 542 543 int fseek(FILE *stream, long offset, int origin)544 { 545 off _t rc = lseek(stream->fd, offset, origin);546 if (rc == (off _t) (-1)) {547 /* errno has been set by lseek . */543 int fseek(FILE *stream, off64_t offset, int whence) 544 { 545 off64_t rc = lseek(stream->fd, offset, whence); 546 if (rc == (off64_t) (-1)) { 547 /* errno has been set by lseek64. */ 548 548 return -1; 549 549 } … … 552 552 553 553 return 0; 554 } 555 556 off64_t ftell(FILE *stream) 557 { 558 return lseek(stream->fd, 0, SEEK_CUR); 554 559 } 555 560 … … 584 589 } 585 590 591 void clearerr(FILE *stream) 592 { 593 stream->eof = false; 594 stream->error = false; 595 } 596 586 597 int fphone(FILE *stream) 587 598 { -
uspace/lib/libc/generic/ipc.c
r918e9910 r827d73f 728 728 int *flags) 729 729 { 730 int res; 731 sysarg_t tmp_flags; 732 res = ipc_call_sync_3_2(phoneid, IPC_M_SHARE_IN, (ipcarg_t) dst, 730 sysarg_t tmp_flags = 0; 731 int res = ipc_call_sync_3_2(phoneid, IPC_M_SHARE_IN, (ipcarg_t) dst, 733 732 (ipcarg_t) size, arg, NULL, &tmp_flags); 733 734 734 if (flags) 735 735 *flags = tmp_flags; 736 736 737 return res; 737 738 } -
uspace/lib/libc/generic/malloc.c
r918e9910 r827d73f 164 164 { 165 165 if (size == 0) 166 return false; 167 168 if ((heap_start + size < heap_start) || (heap_end + size < heap_end)) 166 169 return false; 167 170 -
uspace/lib/libc/generic/mman.c
r918e9910 r827d73f 39 39 40 40 void *mmap(void *start, size_t length, int prot, int flags, int fd, 41 off_t offset)41 aoff64_t offset) 42 42 { 43 43 if (!start) -
uspace/lib/libc/generic/stacktrace.c
r918e9910 r827d73f 1 1 /* 2 2 * Copyright (c) 2009 Jakub Jermar 3 * Copyright (c) 2010 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 36 37 #include <stdio.h> 37 38 #include <sys/types.h> 39 #include <errno.h> 38 40 39 void stack_trace_fp_pc(uintptr_t fp, uintptr_t pc) 41 static int stacktrace_read_uintptr(void *arg, uintptr_t addr, uintptr_t *data); 42 43 void stacktrace_print_fp_pc(uintptr_t fp, uintptr_t pc) 40 44 { 41 printf("Printing stack trace:\n"); 42 printf("=====================\n"); 43 while (frame_pointer_validate(fp)) { 45 stacktrace_t st; 46 uintptr_t nfp; 47 48 st.op_arg = NULL; 49 st.read_uintptr = stacktrace_read_uintptr; 50 51 while (stacktrace_fp_valid(&st, fp)) { 44 52 printf("%p: %p()\n", fp, pc); 45 pc = return_address_get(fp); 46 fp = frame_pointer_prev(fp); 53 (void) stacktrace_ra_get(&st, fp, &pc); 54 (void) stacktrace_fp_prev(&st, fp, &nfp); 55 fp = nfp; 47 56 } 48 printf("=====================\n");49 57 } 50 58 51 void stack _trace(void)59 void stacktrace_print(void) 52 60 { 53 stack_trace_fp_pc(frame_pointer_get(), program_counter_get()); 61 stacktrace_prepare(); 62 stacktrace_print_fp_pc(stacktrace_fp_get(), stacktrace_pc_get()); 63 /* 64 * Prevent the tail call optimization of the previous call by 65 * making it a non-tail call. 66 */ 67 (void) stacktrace_fp_get(); 68 } 69 70 static int stacktrace_read_uintptr(void *arg, uintptr_t addr, uintptr_t *data) 71 { 72 (void) arg; 73 *data = *((uintptr_t *) addr); 74 return EOK; 54 75 } 55 76 -
uspace/lib/libc/generic/udebug.c
r918e9910 r827d73f 69 69 } 70 70 71 int udebug_name_read(int phoneid, void *buffer, size_t n, 72 size_t *copied, size_t *needed) 73 { 74 ipcarg_t a_copied, a_needed; 75 int rc; 76 77 rc = async_req_3_3(phoneid, IPC_M_DEBUG_ALL, UDEBUG_M_NAME_READ, 78 (sysarg_t)buffer, n, NULL, &a_copied, &a_needed); 79 80 *copied = (size_t)a_copied; 81 *needed = (size_t)a_needed; 82 83 return rc; 84 } 85 86 int udebug_areas_read(int phoneid, void *buffer, size_t n, 87 size_t *copied, size_t *needed) 88 { 89 ipcarg_t a_copied, a_needed; 90 int rc; 91 92 rc = async_req_3_3(phoneid, IPC_M_DEBUG_ALL, UDEBUG_M_AREAS_READ, 93 (sysarg_t)buffer, n, NULL, &a_copied, &a_needed); 94 95 *copied = (size_t)a_copied; 96 *needed = (size_t)a_needed; 97 98 return rc; 99 } 100 71 101 int udebug_mem_read(int phoneid, void *buffer, uintptr_t addr, size_t n) 72 102 { … … 78 108 { 79 109 return async_req_3_0(phoneid, IPC_M_DEBUG_ALL, UDEBUG_M_ARGS_READ, 110 tid, (sysarg_t)buffer); 111 } 112 113 int udebug_regs_read(int phoneid, thash_t tid, void *buffer) 114 { 115 return async_req_3_0(phoneid, IPC_M_DEBUG_ALL, UDEBUG_M_REGS_READ, 80 116 tid, (sysarg_t)buffer); 81 117 } -
uspace/lib/libc/generic/vfs/vfs.c
r918e9910 r827d73f 35 35 #include <vfs/vfs.h> 36 36 #include <vfs/canonify.h> 37 #include <macros.h> 37 38 #include <stdlib.h> 38 39 #include <unistd.h> … … 120 121 const char *opts, unsigned int flags) 121 122 { 122 int res; 123 int null_id = -1; 124 char null[DEVMAP_NAME_MAXLEN]; 125 126 if (str_cmp(fqdn, "") == 0) { 127 /* No device specified, create a fresh 128 null/%d device instead */ 129 null_id = devmap_null_create(); 130 131 if (null_id == -1) 132 return ENOMEM; 133 134 snprintf(null, DEVMAP_NAME_MAXLEN, "null/%d", null_id); 135 fqdn = null; 136 } 137 138 dev_handle_t dev_handle; 139 int res = devmap_device_get_handle(fqdn, &dev_handle, flags); 140 if (res != EOK) { 141 if (null_id != -1) 142 devmap_null_destroy(null_id); 143 144 return res; 145 } 146 147 size_t mpa_size; 148 char *mpa = absolutize(mp, &mpa_size); 149 if (!mpa) { 150 if (null_id != -1) 151 devmap_null_destroy(null_id); 152 153 return ENOMEM; 154 } 155 156 futex_down(&vfs_phone_futex); 157 async_serialize_start(); 158 vfs_connect(); 159 160 ipcarg_t rc_orig; 161 aid_t req = async_send_2(vfs_phone, VFS_IN_MOUNT, dev_handle, flags, NULL); 162 ipcarg_t rc = async_data_write_start(vfs_phone, (void *) mpa, mpa_size); 163 if (rc != EOK) { 164 async_wait_for(req, &rc_orig); 165 async_serialize_end(); 166 futex_up(&vfs_phone_futex); 167 free(mpa); 168 169 if (null_id != -1) 170 devmap_null_destroy(null_id); 171 172 if (rc_orig == EOK) 173 return (int) rc; 174 else 175 return (int) rc_orig; 176 } 177 178 rc = async_data_write_start(vfs_phone, (void *) opts, str_size(opts)); 179 if (rc != EOK) { 180 async_wait_for(req, &rc_orig); 181 async_serialize_end(); 182 futex_up(&vfs_phone_futex); 183 free(mpa); 184 185 if (null_id != -1) 186 devmap_null_destroy(null_id); 187 188 if (rc_orig == EOK) 189 return (int) rc; 190 else 191 return (int) rc_orig; 192 } 193 194 rc = async_data_write_start(vfs_phone, (void *) fs_name, str_size(fs_name)); 195 if (rc != EOK) { 196 async_wait_for(req, &rc_orig); 197 async_serialize_end(); 198 futex_up(&vfs_phone_futex); 199 free(mpa); 200 201 if (null_id != -1) 202 devmap_null_destroy(null_id); 203 204 if (rc_orig == EOK) 205 return (int) rc; 206 else 207 return (int) rc_orig; 208 } 209 210 /* Ask VFS whether it likes fs_name. */ 211 rc = async_req_0_0(vfs_phone, IPC_M_PING); 212 if (rc != EOK) { 213 async_wait_for(req, &rc_orig); 214 async_serialize_end(); 215 futex_up(&vfs_phone_futex); 216 free(mpa); 217 218 if (null_id != -1) 219 devmap_null_destroy(null_id); 220 221 if (rc_orig == EOK) 222 return (int) rc; 223 else 224 return (int) rc_orig; 225 } 226 227 async_wait_for(req, &rc); 228 async_serialize_end(); 229 futex_up(&vfs_phone_futex); 230 free(mpa); 231 232 if ((rc != EOK) && (null_id != -1)) 233 devmap_null_destroy(null_id); 234 235 return (int) rc; 236 } 237 238 int unmount(const char *mp) 239 { 123 240 ipcarg_t rc; 124 241 ipcarg_t rc_orig; 125 242 aid_t req; 126 dev_handle_t dev_handle;127 128 res = devmap_device_get_handle(fqdn, &dev_handle, flags);129 if (res != EOK)130 return res;131 132 243 size_t mpa_size; 133 char *mpa = absolutize(mp, &mpa_size); 244 char *mpa; 245 246 mpa = absolutize(mp, &mpa_size); 134 247 if (!mpa) 135 248 return ENOMEM; … … 139 252 vfs_connect(); 140 253 141 req = async_send_ 2(vfs_phone, VFS_IN_MOUNT, dev_handle, flags, NULL);254 req = async_send_0(vfs_phone, VFS_IN_UNMOUNT, NULL); 142 255 rc = async_data_write_start(vfs_phone, (void *) mpa, mpa_size); 143 256 if (rc != EOK) { … … 152 265 } 153 266 154 rc = async_data_write_start(vfs_phone, (void *) opts, str_size(opts)); 155 if (rc != EOK) { 156 async_wait_for(req, &rc_orig); 157 async_serialize_end(); 158 futex_up(&vfs_phone_futex); 159 free(mpa); 160 if (rc_orig == EOK) 161 return (int) rc; 162 else 163 return (int) rc_orig; 164 } 165 166 rc = async_data_write_start(vfs_phone, (void *) fs_name, str_size(fs_name)); 167 if (rc != EOK) { 168 async_wait_for(req, &rc_orig); 169 async_serialize_end(); 170 futex_up(&vfs_phone_futex); 171 free(mpa); 172 if (rc_orig == EOK) 173 return (int) rc; 174 else 175 return (int) rc_orig; 176 } 177 178 /* Ask VFS whether it likes fs_name. */ 179 rc = async_req_0_0(vfs_phone, IPC_M_PING); 180 if (rc != EOK) { 181 async_wait_for(req, &rc_orig); 182 async_serialize_end(); 183 futex_up(&vfs_phone_futex); 184 free(mpa); 185 if (rc_orig == EOK) 186 return (int) rc; 187 else 188 return (int) rc_orig; 189 } 190 267 191 268 async_wait_for(req, &rc); 192 269 async_serialize_end(); … … 358 435 } 359 436 360 off _t lseek(int fildes, off_t offset, int whence)361 { 362 ipcarg_t rc;363 364 futex_down(&vfs_phone_futex);365 async_serialize_start();366 vfs_connect();367 368 ipcarg_t newoffs;369 rc = async_req_3_1(vfs_phone, VFS_IN_SEEK, fildes, offset, whence,370 &newoff s);371 372 async_serialize_end(); 373 futex_up(&vfs_phone_futex); 374 437 off64_t lseek(int fildes, off64_t offset, int whence) 438 { 439 futex_down(&vfs_phone_futex); 440 async_serialize_start(); 441 vfs_connect(); 442 443 ipcarg_t newoff_lo; 444 ipcarg_t newoff_hi; 445 ipcarg_t rc = async_req_4_2(vfs_phone, VFS_IN_SEEK, fildes, 446 LOWER32(offset), UPPER32(offset), whence, 447 &newoff_lo, &newoff_hi); 448 449 async_serialize_end(); 450 futex_up(&vfs_phone_futex); 451 375 452 if (rc != EOK) 376 return (off_t) -1; 377 378 return (off_t) newoffs; 379 } 380 381 int ftruncate(int fildes, off_t length) 382 { 383 ipcarg_t rc; 384 385 futex_down(&vfs_phone_futex); 386 async_serialize_start(); 387 vfs_connect(); 388 389 rc = async_req_2_0(vfs_phone, VFS_IN_TRUNCATE, fildes, length); 390 async_serialize_end(); 391 futex_up(&vfs_phone_futex); 453 return (off64_t) -1; 454 455 return (off64_t) MERGE_LOUP32(newoff_lo, newoff_hi); 456 } 457 458 int ftruncate(int fildes, aoff64_t length) 459 { 460 ipcarg_t rc; 461 462 futex_down(&vfs_phone_futex); 463 async_serialize_start(); 464 vfs_connect(); 465 466 rc = async_req_3_0(vfs_phone, VFS_IN_TRUNCATE, fildes, 467 LOWER32(length), UPPER32(length)); 468 async_serialize_end(); 469 futex_up(&vfs_phone_futex); 470 392 471 return (int) rc; 393 472 } … … 403 482 404 483 req = async_send_1(vfs_phone, VFS_IN_FSTAT, fildes, NULL); 405 rc = async_data_read_start(vfs_phone, (void *) stat, sizeof(struct stat));484 rc = async_data_read_start(vfs_phone, (void *) stat, sizeof(struct stat)); 406 485 if (rc != EOK) { 407 486 ipcarg_t rc_orig; … … 477 556 if (!abs) { 478 557 free(dirp); 479 return ENOMEM;558 return NULL; 480 559 } 481 560 -
uspace/lib/libc/include/adt/hash_table.h
r918e9910 r827d73f 88 88 extern void hash_table_remove(hash_table_t *, unsigned long [], hash_count_t); 89 89 extern void hash_table_destroy(hash_table_t *); 90 extern void hash_table_apply(hash_table_t *, void (*)(link_t *, void *), 91 void *); 90 92 91 93 #endif -
uspace/lib/libc/include/assert.h
r918e9910 r827d73f 51 51 52 52 #ifndef NDEBUG 53 # define assert(expr) if (!(expr)) { printf("Assertion failed (%s) at file '%s', line %d.\n", #expr, __FILE__, __LINE__); abort();} 53 # define assert(expr) \ 54 do { \ 55 if (!(expr)) { \ 56 printf("Assertion failed (%s) at file '%s', " \ 57 "line %d.\n", #expr, __FILE__, __LINE__); \ 58 abort(); \ 59 } \ 60 } while (0) 54 61 #else 55 62 # define assert(expr) -
uspace/lib/libc/include/async.h
r918e9910 r827d73f 277 277 extern int async_share_out_receive(ipc_callid_t *, size_t *, int *); 278 278 extern int async_share_out_finalize(ipc_callid_t, void *); 279 280 /* 281 * User-friendly wrappers for async_data_read_forward_fast(). 282 */ 283 #define async_data_read_forward_0_0(phoneid, method, answer) \ 284 async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) 285 #define async_data_read_forward_0_1(phoneid, method, answer) \ 286 async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) 287 #define async_data_read_forward_1_0(phoneid, method, arg1, answer) \ 288 async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) 289 #define async_data_read_forward_1_1(phoneid, method, arg1, answer) \ 290 async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, (answer)) 291 #define async_data_read_forward_2_0(phoneid, method, arg1, arg2, answer) \ 292 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, NULL) 293 #define async_data_read_forward_2_1(phoneid, method, arg1, arg2, answer) \ 294 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 295 (answer)) 296 #define async_data_read_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) \ 297 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, \ 298 NULL) 299 #define async_data_read_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) \ 300 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, \ 301 (answer)) 302 #define async_data_read_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 303 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 304 (arg4), NULL) 305 #define async_data_read_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 306 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 307 (arg4), (answer)) 308 279 309 extern int async_data_read_start(int, void *, size_t); 280 310 extern int async_data_read_receive(ipc_callid_t *, size_t *); 281 311 extern int async_data_read_finalize(ipc_callid_t, const void *, size_t); 312 313 extern int async_data_read_forward_fast(int, ipcarg_t, ipcarg_t, ipcarg_t, 314 ipcarg_t, ipcarg_t, ipc_call_t *); 315 316 /* 317 * User-friendly wrappers for async_data_write_forward_fast(). 318 */ 319 #define async_data_write_forward_0_0(phoneid, method, answer) \ 320 async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) 321 #define async_data_write_forward_0_1(phoneid, method, answer) \ 322 async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) 323 #define async_data_write_forward_1_0(phoneid, method, arg1, answer) \ 324 async_data_write_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) 325 #define async_data_write_forward_1_1(phoneid, method, arg1, answer) \ 326 async_data_write_forward_fast((phoneid), (method), (arg1), 0, 0, 0, \ 327 (answer)) 328 #define async_data_write_forward_2_0(phoneid, method, arg1, arg2, answer) \ 329 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 330 NULL) 331 #define async_data_write_forward_2_1(phoneid, method, arg1, arg2, answer) \ 332 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 333 (answer)) 334 #define async_data_write_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) \ 335 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 336 0, NULL) 337 #define async_data_write_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) \ 338 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 339 0, (answer)) 340 #define async_data_write_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 341 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 342 (arg4), NULL) 343 #define async_data_write_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 344 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 345 (arg4), (answer)) 346 282 347 extern int async_data_write_start(int, const void *, size_t); 283 348 extern int async_data_write_receive(ipc_callid_t *, size_t *); 284 349 extern int async_data_write_finalize(ipc_callid_t, void *, size_t); 285 350 286 extern int async_data_blob_receive(char **, const size_t, size_t *); 287 extern int async_data_string_receive(char **, const size_t); 351 extern int async_data_write_accept(void **, const bool, const size_t, 352 const size_t, const size_t, size_t *); 353 extern void async_data_write_void(const int); 354 355 extern int async_data_write_forward_fast(int, ipcarg_t, ipcarg_t, ipcarg_t, 356 ipcarg_t, ipcarg_t, ipc_call_t *); 288 357 289 358 #endif -
uspace/lib/libc/include/fibril.h
r918e9910 r827d73f 40 40 #include <libarch/tls.h> 41 41 42 #ifndef context_set 43 #define context_set(c, _pc, stack, size, ptls) \ 42 #define context_set_generic(c, _pc, stack, size, ptls) \ 44 43 (c)->pc = (sysarg_t) (_pc); \ 45 44 (c)->sp = ((sysarg_t) (stack)) + (size) - SP_DELTA; \ 46 45 (c)->tls = (sysarg_t) (ptls); 47 #endif /* context_set */48 46 49 #define FIBRIL_SERIALIZED 150 #define FIBRIL_WRITER 247 #define FIBRIL_SERIALIZED 1 48 #define FIBRIL_WRITER 2 51 49 52 50 typedef enum { … … 59 57 typedef sysarg_t fid_t; 60 58 61 struct fibril {59 typedef struct fibril { 62 60 link_t link; 63 61 context_t ctx; … … 70 68 int retval; 71 69 int flags; 72 }; 73 typedef struct fibril fibril_t; 70 } fibril_t; 74 71 75 72 /** Fibril-local variable specifier */ 76 73 #define fibril_local __thread 77 74 78 extern int context_save(context_t *c ) __attribute__((returns_twice));79 extern void context_restore(context_t *c ) __attribute__((noreturn));75 extern int context_save(context_t *ctx) __attribute__((returns_twice)); 76 extern void context_restore(context_t *ctx) __attribute__((noreturn)); 80 77 81 78 extern fid_t fibril_create(int (*func)(void *), void *arg); … … 90 87 extern void fibril_dec_sercount(void); 91 88 92 static inline int fibril_yield(void) { 89 static inline int fibril_yield(void) 90 { 93 91 return fibril_switch(FIBRIL_PREEMPT); 94 92 } -
uspace/lib/libc/include/ipc/bd.h
r918e9910 r827d73f 40 40 typedef enum { 41 41 BD_GET_BLOCK_SIZE = IPC_FIRST_USER_METHOD, 42 BD_GET_NUM_BLOCKS, 42 43 BD_READ_BLOCKS, 43 44 BD_WRITE_BLOCKS -
uspace/lib/libc/include/ipc/clipboard.h
r918e9910 r827d73f 46 46 typedef enum { 47 47 CLIPBOARD_TAG_NONE, 48 CLIPBOARD_TAG_ BLOB48 CLIPBOARD_TAG_DATA 49 49 } clipboard_tag_t; 50 50 -
uspace/lib/libc/include/ipc/vfs.h
r918e9910 r827d73f 86 86 VFS_OUT_MOUNTED, 87 87 VFS_OUT_UNMOUNT, 88 VFS_OUT_UNMOUNTED, 88 89 VFS_OUT_SYNC, 89 90 VFS_OUT_STAT, … … 100 101 * No lookup flags used. 101 102 */ 102 #define L_NONE 0103 #define L_NONE 0 103 104 104 105 /** … … 107 108 * with L_DIRECTORY. 108 109 */ 109 #define L_FILE 1110 #define L_FILE 1 110 111 111 112 /** 112 * Lookup wil succeed only if the object is a directory. If L_CREATE is113 * Lookup will succeed only if the object is a directory. If L_CREATE is 113 114 * specified, an empty directory will be created. This flag is mutually 114 115 * exclusive with L_FILE. 115 116 */ 116 #define L_DIRECTORY 2 117 #define L_DIRECTORY 2 118 119 /** 120 * Lookup will succeed only if the object is a root directory. The flag is 121 * mutually exclusive with L_FILE and L_MP. 122 */ 123 #define L_ROOT 4 124 125 /** 126 * Lookup will succeed only if the object is a mount point. The flag is mutually 127 * exclusive with L_FILE and L_ROOT. 128 */ 129 #define L_MP 8 130 117 131 118 132 /** … … 120 134 * object already exists. L_EXCLUSIVE is implied when L_DIRECTORY is used. 121 135 */ 122 #define L_EXCLUSIVE 4136 #define L_EXCLUSIVE 16 123 137 124 138 /** 125 139 * L_CREATE is used for creating both regular files and directories. 126 140 */ 127 #define L_CREATE 8141 #define L_CREATE 32 128 142 129 143 /** 130 144 * L_LINK is used for linking to an already existing nodes. 131 145 */ 132 #define L_LINK 16146 #define L_LINK 64 133 147 134 148 /** … … 137 151 * VFS_UNLINK. 138 152 */ 139 #define L_UNLINK 32153 #define L_UNLINK 128 140 154 141 155 /** 142 * L_OPEN is used to indicate that the lookup operation is a part of VFS_ OPEN156 * L_OPEN is used to indicate that the lookup operation is a part of VFS_IN_OPEN 143 157 * call from the client. This means that the server might allocate some 144 158 * resources for the opened file. This flag cannot be passed directly by the 145 159 * client. 146 160 */ 147 #define L_OPEN 64161 #define L_OPEN 256 148 162 149 163 #endif -
uspace/lib/libc/include/limits.h
r918e9910 r827d73f 46 46 47 47 #ifdef __CHAR_UNSIGNED__ 48 #define CHAR_MIN UCHAR_MIN49 #define CHAR_MAX UCHAR_MAX48 #define CHAR_MIN UCHAR_MIN 49 #define CHAR_MAX UCHAR_MAX 50 50 #else 51 #define CHAR_MIN SCHAR_MIN52 #define CHAR_MAX SCHAR_MAX51 #define CHAR_MIN SCHAR_MIN 52 #define CHAR_MAX SCHAR_MAX 53 53 #endif 54 54 … … 59 59 #define USHRT_MAX MAX_UINT16 60 60 61 /* int */ 61 62 #define INT_MIN MIN_INT32 62 63 #define INT_MAX MAX_INT32 … … 64 65 #define UINT_MAX MAX_UINT32 65 66 67 /* long long int */ 66 68 #define LLONG_MIN MIN_INT64 67 69 #define LLONG_MAX MAX_INT64 … … 69 71 #define ULLONG_MAX MAX_UINT64 70 72 73 /* off64_t */ 74 #define OFF64_MIN MIN_INT64 75 #define OFF64_MAX MAX_INT64 76 77 /* aoff64_t */ 78 #define AOFF64_MIN MIN_UINT64 79 #define AOFF64_MAX MAX_UINT64 80 71 81 #endif 72 82 -
uspace/lib/libc/include/macros.h
r918e9910 r827d73f 48 48 #define STRING_ARG(arg) #arg 49 49 50 #define LOWER32(arg) (( arg) & 0xffffffff)51 #define UPPER32(arg) ((( arg) >> 32) & 0xffffffff)50 #define LOWER32(arg) (((uint64_t) (arg)) & 0xffffffff) 51 #define UPPER32(arg) (((((uint64_t) arg)) >> 32) & 0xffffffff) 52 52 53 53 #define MERGE_LOUP32(lo, up) \ -
uspace/lib/libc/include/stacktrace.h
r918e9910 r827d73f 1 1 /* 2 2 * Copyright (c) 2009 Jakub Jermar 3 * Copyright (c) 2010 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 39 40 #include <bool.h> 40 41 41 extern void stack_trace(void); 42 extern void stack_trace_fp_pc(uintptr_t, uintptr_t); 42 typedef struct { 43 void *op_arg; 44 int (*read_uintptr)(void *, uintptr_t, uintptr_t *); 45 } stacktrace_t; 46 47 extern void stacktrace_print(void); 48 extern void stacktrace_print_fp_pc(uintptr_t, uintptr_t); 43 49 44 50 /* 45 51 * The following interface is to be implemented by each architecture. 46 52 */ 47 extern bool frame_pointer_validate(uintptr_t); 48 extern uintptr_t frame_pointer_get(void); 49 extern uintptr_t frame_pointer_prev(uintptr_t); 50 extern uintptr_t return_address_get(uintptr_t); 51 extern uintptr_t program_counter_get(); 53 extern bool stacktrace_fp_valid(stacktrace_t *, uintptr_t); 54 extern int stacktrace_fp_prev(stacktrace_t *, uintptr_t, uintptr_t *); 55 extern int stacktrace_ra_get(stacktrace_t *, uintptr_t, uintptr_t *); 56 57 extern void stacktrace_prepare(void); 58 extern uintptr_t stacktrace_fp_get(void); 59 extern uintptr_t stacktrace_pc_get(); 52 60 53 61 #endif -
uspace/lib/libc/include/stdio.h
r918e9910 r827d73f 46 46 #define BUFSIZ 4096 47 47 48 #define DEBUG(fmt, ...) \48 #define DEBUG(fmt, ...)se\ 49 49 { \ 50 50 char _buf[256]; \ … … 56 56 #ifndef SEEK_SET 57 57 #define SEEK_SET 0 58 #endif 59 60 #ifndef SEEK_CUR 58 61 #define SEEK_CUR 1 62 #endif 63 64 #ifndef SEEK_END 59 65 #define SEEK_END 2 60 66 #endif … … 135 141 extern size_t fwrite(const void *, size_t, size_t, FILE *); 136 142 137 extern int fseek(FILE *, long, int);143 extern int fseek(FILE *, off64_t, int); 138 144 extern void rewind(FILE *); 139 extern int ftell(FILE *);145 extern off64_t ftell(FILE *); 140 146 extern int feof(FILE *); 141 147 -
uspace/lib/libc/include/stdlib.h
r918e9910 r827d73f 42 42 #define abort() \ 43 43 do { \ 44 stack _trace(); \44 stacktrace_print(); \ 45 45 _exit(1); \ 46 46 } while (0) -
uspace/lib/libc/include/sys/mman.h
r918e9910 r827d73f 41 41 #define MAP_FAILED ((void *) -1) 42 42 43 #define MAP_SHARED (1 << 0)44 #define MAP_PRIVATE (1 << 1)45 #define MAP_FIXED (1 << 2)46 #define MAP_ANONYMOUS (1 << 3)43 #define MAP_SHARED (1 << 0) 44 #define MAP_PRIVATE (1 << 1) 45 #define MAP_FIXED (1 << 2) 46 #define MAP_ANONYMOUS (1 << 3) 47 47 48 48 #define PROTO_READ AS_AREA_READ … … 50 50 #define PROTO_EXEC AS_AREA_EXEC 51 51 52 extern void *mmap(void *start, size_t length, int prot, int flags, int fd,53 off_t offset);52 extern void *mmap(void *start, size_t length, int prot, int flags, int fd, 53 aoff64_t offset); 54 54 extern int munmap(void *start, size_t length); 55 55 -
uspace/lib/libc/include/sys/stat.h
r918e9910 r827d73f 31 31 */ 32 32 /** @file 33 */ 33 */ 34 34 35 35 #ifndef LIBC_SYS_STAT_H_ … … 48 48 bool is_file; 49 49 bool is_directory; 50 off_t size;50 aoff64_t size; 51 51 dev_handle_t device; 52 52 }; -
uspace/lib/libc/include/sys/time.h
r918e9910 r827d73f 31 31 */ 32 32 /** @file 33 */ 33 */ 34 34 35 35 #ifndef LIBC_SYS_TIME_H_ … … 44 44 45 45 struct timeval { 46 time_t tv_sec; /* seconds */47 suseconds_t tv_usec; /* microseconds */46 time_t tv_sec; /* seconds */ 47 suseconds_t tv_usec; /* microseconds */ 48 48 }; 49 49 50 50 struct timezone { 51 int tz_minuteswest;/* minutes W of Greenwich */52 int tz_dsttime;/* type of dst correction */51 int tz_minuteswest; /* minutes W of Greenwich */ 52 int tz_dsttime; /* type of dst correction */ 53 53 }; 54 54 -
uspace/lib/libc/include/sys/types.h
r918e9910 r827d73f 38 38 #include <libarch/types.h> 39 39 40 typedef long off_t; 41 typedef int mode_t; 40 typedef unsigned int mode_t; 42 41 42 /** Relative offset */ 43 typedef int64_t off64_t; 44 45 /** Absolute offset */ 46 typedef uint64_t aoff64_t; 47 48 /** Unicode code point */ 43 49 typedef int32_t wchar_t; 44 50 -
uspace/lib/libc/include/udebug.h
r918e9910 r827d73f 47 47 int udebug_thread_read(int phoneid, void *buffer, size_t n, 48 48 size_t *copied, size_t *needed); 49 int udebug_name_read(int phoneid, void *buffer, size_t n, 50 size_t *copied, size_t *needed); 51 int udebug_areas_read(int phoneid, void *buffer, size_t n, 52 size_t *copied, size_t *needed); 49 53 int udebug_mem_read(int phoneid, void *buffer, uintptr_t addr, size_t n); 50 54 int udebug_args_read(int phoneid, thash_t tid, sysarg_t *buffer); 55 int udebug_regs_read(int phoneid, thash_t tid, void *buffer); 51 56 int udebug_go(int phoneid, thash_t tid, udebug_event_t *ev_type, 52 57 sysarg_t *val0, sysarg_t *val1); -
uspace/lib/libc/include/unistd.h
r918e9910 r827d73f 47 47 #ifndef SEEK_SET 48 48 #define SEEK_SET 0 49 #endif 50 51 #ifndef SEEK_CUR 49 52 #define SEEK_CUR 1 53 #endif 54 55 #ifndef SEEK_END 50 56 #define SEEK_END 2 51 57 #endif … … 58 64 extern ssize_t read(int, void *, size_t); 59 65 60 extern off _t lseek(int, off_t, int);61 extern int ftruncate(int, off_t);66 extern off64_t lseek(int, off64_t, int); 67 extern int ftruncate(int, aoff64_t); 62 68 63 69 extern int close(int); … … 69 75 extern int chdir(const char *); 70 76 71 extern void _exit(int status) __attribute__((noreturn));72 extern int usleep(useconds_t uses);73 extern unsigned int sleep(unsigned int se);77 extern void _exit(int) __attribute__((noreturn)); 78 extern int usleep(useconds_t); 79 extern unsigned int sleep(unsigned int); 74 80 75 81 #endif -
uspace/lib/libc/include/vfs/vfs.h
r918e9910 r827d73f 55 55 extern int mount(const char *, const char *, const char *, const char *, 56 56 unsigned int); 57 extern int unmount(const char *); 57 58 58 59 extern void __stdio_init(int filc, fdi_node_t *filv[]);
Note:
See TracChangeset
for help on using the changeset viewer.
