Changeset 69146b93 in mainline for uspace/lib/c
- Timestamp:
- 2012-11-26T19:02:45Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 04552324
- Parents:
- 5d230a30 (diff), 7462674 (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/c
- Files:
-
- 1 added
- 17 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/Makefile
r5d230a30 r69146b93 141 141 generic/net/socket_client.c \ 142 142 generic/net/socket_parse.c \ 143 generic/stack.c \ 143 144 generic/stacktrace.c \ 144 145 generic/arg_parse.c \ 145 146 generic/sort.c \ 146 147 generic/stats.c \ 147 generic/assert.c 148 generic/assert.c \ 149 generic/pio_trace.c 148 150 149 151 ifeq ($(CONFIG_RTLD),y) -
uspace/lib/c/arch/abs32le/include/ddi.h
r5d230a30 r69146b93 36 36 #include <libarch/types.h> 37 37 38 static inline void pio_write_8(ioport8_t *port, uint8_t v)38 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 39 39 { 40 40 *port = v; 41 41 } 42 42 43 static inline void pio_write_16(ioport16_t *port, uint16_t v)43 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 44 44 { 45 45 *port = v; 46 46 } 47 47 48 static inline void pio_write_32(ioport32_t *port, uint32_t v)48 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 49 49 { 50 50 *port = v; 51 51 } 52 52 53 static inline uint8_t pio_read_8(ioport8_t *port)53 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 54 54 { 55 55 return *port; 56 56 } 57 57 58 static inline uint16_t pio_read_16(ioport16_t *port)58 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 59 59 { 60 60 return *port; 61 61 } 62 62 63 static inline uint32_t pio_read_32(ioport32_t *port)63 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 64 64 { 65 65 return *port; -
uspace/lib/c/arch/arm32/Makefile.common
r5d230a30 r69146b93 29 29 30 30 BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a 31 GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -ma rch=armv4 -mapcs-frame31 GCC_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame -march=$(subst _,-,$(PROCESSOR)) 32 32 33 33 ENDIANESS = LE -
uspace/lib/c/arch/arm32/include/ddi.h
r5d230a30 r69146b93 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/ia32/include/ddi.h
r5d230a30 r69146b93 39 39 #define IO_SPACE_BOUNDARY ((void *) (64 * 1024)) 40 40 41 static inline uint8_t pio_read_8(ioport8_t *port)41 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 42 42 { 43 43 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 55 55 } 56 56 57 static inline uint16_t pio_read_16(ioport16_t *port)57 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 58 58 { 59 59 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 71 71 } 72 72 73 static inline uint32_t pio_read_32(ioport32_t *port)73 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 74 74 { 75 75 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { … … 87 87 } 88 88 89 static inline void pio_write_8(ioport8_t *port, uint8_t val)89 static inline void arch_pio_write_8(ioport8_t *port, uint8_t val) 90 90 { 91 91 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 98 98 } 99 99 100 static inline void pio_write_16(ioport16_t *port, uint16_t val)100 static inline void arch_pio_write_16(ioport16_t *port, uint16_t val) 101 101 { 102 102 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 109 109 } 110 110 111 static inline void pio_write_32(ioport32_t *port, uint32_t val)111 static inline void arch_pio_write_32(ioport32_t *port, uint32_t val) 112 112 { 113 113 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { -
uspace/lib/c/arch/ia64/include/ddi.h
r5d230a30 r69146b93 50 50 (ia64_iospace_address = get_ia64_iospace_address())) 51 51 52 static inline void pio_write_8(ioport8_t *port, uint8_t v)52 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 53 53 { 54 54 if (port < (ioport8_t *) IO_SPACE_BOUNDARY) { … … 65 65 } 66 66 67 static inline void pio_write_16(ioport16_t *port, uint16_t v)67 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 68 68 { 69 69 if (port < (ioport16_t *) IO_SPACE_BOUNDARY) { … … 80 80 } 81 81 82 static inline void pio_write_32(ioport32_t *port, uint32_t v)82 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 83 83 { 84 84 if (port < (ioport32_t *) IO_SPACE_BOUNDARY) { … … 95 95 } 96 96 97 static inline uint8_t pio_read_8(ioport8_t *port)97 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 98 98 { 99 99 uint8_t v; … … 115 115 } 116 116 117 static inline uint16_t pio_read_16(ioport16_t *port)117 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 118 118 { 119 119 uint16_t v; … … 135 135 } 136 136 137 static inline uint32_t pio_read_32(ioport32_t *port)137 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 138 138 { 139 139 uint32_t v; -
uspace/lib/c/arch/ia64/src/ddi.c
r5d230a30 r69146b93 1 /* 2 * Copyright (c) 2006 Martin Decky 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * - The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 1 28 #include <libarch/ddi.h> 2 29 #include <sysinfo.h> … … 12 39 return addr; 13 40 } 14 -
uspace/lib/c/arch/mips32/include/ddi.h
r5d230a30 r69146b93 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/mips64/include/ddi.h
r5d230a30 r69146b93 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/ppc32/include/ddi.h
r5d230a30 r69146b93 37 37 #include <libarch/types.h> 38 38 39 static inline void pio_write_8(ioport8_t *port, uint8_t v)39 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 40 40 { 41 41 *port = v; 42 42 } 43 43 44 static inline void pio_write_16(ioport16_t *port, uint16_t v)44 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 45 45 { 46 46 *port = v; 47 47 } 48 48 49 static inline void pio_write_32(ioport32_t *port, uint32_t v)49 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 50 50 { 51 51 *port = v; 52 52 } 53 53 54 static inline uint8_t pio_read_8(ioport8_t *port)54 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 55 55 { 56 56 return *port; 57 57 } 58 58 59 static inline uint16_t pio_read_16(ioport16_t *port)59 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 60 60 { 61 61 return *port; 62 62 } 63 63 64 static inline uint32_t pio_read_32(ioport32_t *port)64 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 65 65 { 66 66 return *port; -
uspace/lib/c/arch/sparc64/include/ddi.h
r5d230a30 r69146b93 45 45 } 46 46 47 static inline void pio_write_8(ioport8_t *port, uint8_t v)47 static inline void arch_pio_write_8(ioport8_t *port, uint8_t v) 48 48 { 49 49 *port = v; … … 51 51 } 52 52 53 static inline void pio_write_16(ioport16_t *port, uint16_t v)53 static inline void arch_pio_write_16(ioport16_t *port, uint16_t v) 54 54 { 55 55 *port = v; … … 57 57 } 58 58 59 static inline void pio_write_32(ioport32_t *port, uint32_t v)59 static inline void arch_pio_write_32(ioport32_t *port, uint32_t v) 60 60 { 61 61 *port = v; … … 63 63 } 64 64 65 static inline uint8_t pio_read_8(ioport8_t *port)65 static inline uint8_t arch_pio_read_8(const ioport8_t *port) 66 66 { 67 67 uint8_t rv; … … 73 73 } 74 74 75 static inline uint16_t pio_read_16(ioport16_t *port)75 static inline uint16_t arch_pio_read_16(const ioport16_t *port) 76 76 { 77 77 uint16_t rv; … … 83 83 } 84 84 85 static inline uint32_t pio_read_32(ioport32_t *port)85 static inline uint32_t arch_pio_read_32(const ioport32_t *port) 86 86 { 87 87 uint32_t rv; -
uspace/lib/c/generic/ddi.c
r5d230a30 r69146b93 34 34 35 35 #include <assert.h> 36 #include <atomic.h> 36 37 #include <unistd.h> 38 #include <stdio.h> 37 39 #include <errno.h> 38 40 #include <sys/types.h> … … 47 49 #include "private/libc.h" 48 50 51 49 52 /** Return unique device number. 50 53 * … … 120 123 * 121 124 */ 122 int iospace_enable(task_id_t id, void *ioaddr, unsigned longsize)123 { 124 ddi_ioarg_t arg;125 126 arg.task_id = id;127 arg.ioaddr = ioaddr;128 arg.size = size;125 static int iospace_enable(task_id_t id, void *ioaddr, size_t size) 126 { 127 const ddi_ioarg_t arg = { 128 .task_id = id, 129 .ioaddr = ioaddr, 130 .size = size 131 }; 129 132 130 133 return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg); … … 136 139 * @param size Size of the I/O region. 137 140 * @param virt Virtual address for application's 138 * PIO operations. 141 * PIO operations. Can be NULL for PMIO. 139 142 * 140 143 * @return EOK on success. … … 146 149 #ifdef IO_SPACE_BOUNDARY 147 150 if (pio_addr < IO_SPACE_BOUNDARY) { 148 *virt = pio_addr; 151 if (virt) 152 *virt = pio_addr; 149 153 return iospace_enable(task_get_id(), pio_addr, size); 150 154 } 155 #else 156 (void) iospace_enable; 151 157 #endif 152 158 if (!virt) 159 return EINVAL; 160 153 161 void *phys_frame = 154 162 (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE); … … 166 174 } 167 175 176 void pio_write_8(ioport8_t *reg, uint8_t val) 177 { 178 pio_trace_log(reg, val, true); 179 arch_pio_write_8(reg, val); 180 } 181 182 void pio_write_16(ioport16_t *reg, uint16_t val) 183 { 184 pio_trace_log(reg, val, true); 185 arch_pio_write_16(reg, val); 186 } 187 188 void pio_write_32(ioport32_t *reg, uint32_t val) 189 { 190 pio_trace_log(reg, val, true); 191 arch_pio_write_32(reg, val); 192 } 193 194 uint8_t pio_read_8(const ioport8_t *reg) 195 { 196 const uint8_t val = arch_pio_read_8(reg); 197 pio_trace_log(reg, val, false); 198 return val; 199 } 200 201 uint16_t pio_read_16(const ioport16_t *reg) 202 { 203 const uint16_t val = arch_pio_read_16(reg); 204 pio_trace_log(reg, val, false); 205 return val; 206 } 207 208 uint32_t pio_read_32(const ioport32_t *reg) 209 { 210 const uint32_t val = arch_pio_read_32(reg); 211 pio_trace_log(reg, val, false); 212 return val; 213 } 214 168 215 /** Register IRQ notification. 169 216 * -
uspace/lib/c/generic/fibril.c
r5d230a30 r69146b93 37 37 #include <fibril.h> 38 38 #include <thread.h> 39 #include <stack.h> 39 40 #include <tls.h> 40 41 #include <malloc.h> 42 #include <abi/mm/as.h> 43 #include <as.h> 41 44 #include <unistd.h> 42 45 #include <stdio.h> … … 46 49 #include <assert.h> 47 50 #include <async.h> 48 49 #ifndef FIBRIL_INITIAL_STACK_PAGES_NO50 #define FIBRIL_INITIAL_STACK_PAGES_NO 151 #endif52 51 53 52 /** … … 195 194 * stack member filled. 196 195 */ 197 free(stack);196 as_area_destroy(stack); 198 197 } 199 198 fibril_teardown(srcf->clean_after_me); … … 269 268 return 0; 270 269 271 fibril->stack = 272 (char *) malloc(FIBRIL_INITIAL_STACK_PAGES_NO * getpagesize()); 273 if (!fibril->stack) { 270 size_t stack_size = stack_size_get(); 271 fibril->stack = as_area_create((void *) -1, stack_size, 272 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD | 273 AS_AREA_LATE_RESERVE); 274 if (fibril->stack == (void *) -1) { 274 275 fibril_teardown(fibril); 275 276 return 0; … … 281 282 context_save(&fibril->ctx); 282 283 context_set(&fibril->ctx, FADDR(fibril_main), fibril->stack, 283 FIBRIL_INITIAL_STACK_PAGES_NO * getpagesize(), fibril->tcb);284 stack_size, fibril->tcb); 284 285 285 286 return (fid_t) fibril; … … 298 299 fibril_t *fibril = (fibril_t *) fid; 299 300 300 free(fibril->stack);301 as_area_destroy(fibril->stack); 301 302 fibril_teardown(fibril); 302 303 } -
uspace/lib/c/generic/malloc.c
r5d230a30 r69146b93 289 289 size_t asize = ALIGN_UP(size, PAGE_SIZE); 290 290 void *astart = as_area_create(AS_AREA_ANY, asize, 291 AS_AREA_WRITE | AS_AREA_READ );291 AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE); 292 292 if (astart == AS_MAP_FAILED) 293 293 return false; -
uspace/lib/c/generic/stack.c
r5d230a30 r69146b93 1 1 /* 2 * Copyright (c) 201 1 Martin Sucha2 * Copyright (c) 2012 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup lib ext229 /** @addtogroup libc 30 30 * @{ 31 31 */ 32 /** 33 * @file 32 /** @file 34 33 */ 35 34 36 #i fndef LIBEXT2_LIBEXT2_BLOCK_GROUP_H_37 # define LIBEXT2_LIBEXT2_BLOCK_GROUP_H_35 #include <stack.h> 36 #include <sysinfo.h> 38 37 39 #include <block.h> 38 size_t stack_size_get(void) 39 { 40 static sysarg_t stack_size = 0; 40 41 41 typedef struct ext2_block_group { 42 uint32_t block_bitmap_block; // Block ID for block bitmap 43 uint32_t inode_bitmap_block; // Block ID for inode bitmap 44 uint32_t inode_table_first_block; // Block ID of first block of inode table 45 uint16_t free_block_count; // Count of free blocks 46 uint16_t free_inode_count; // Count of free inodes 47 uint16_t directory_inode_count; // Number of inodes allocated to directories 48 } ext2_block_group_t; 42 if (!stack_size) 43 sysinfo_get_value("default.stack_size", &stack_size); 49 44 50 typedef struct ext2_block_group_ref { 51 block_t *block; // Reference to a block containing this block group descr 52 ext2_block_group_t *block_group; 53 } ext2_block_group_ref_t; 54 55 #define EXT2_BLOCK_GROUP_DESCRIPTOR_SIZE 32 56 57 extern uint32_t ext2_block_group_get_block_bitmap_block(ext2_block_group_t *); 58 extern uint32_t ext2_block_group_get_inode_bitmap_block(ext2_block_group_t *); 59 extern uint32_t ext2_block_group_get_inode_table_first_block(ext2_block_group_t *); 60 extern uint16_t ext2_block_group_get_free_block_count(ext2_block_group_t *); 61 extern uint16_t ext2_block_group_get_free_inode_count(ext2_block_group_t *); 62 extern uint16_t ext2_block_group_get_directory_inode_count(ext2_block_group_t *); 63 64 extern void ext2_block_group_set_free_block_count(ext2_block_group_t *, uint16_t); 65 66 #endif 45 return (size_t) stack_size; 46 } 67 47 68 48 /** @} -
uspace/lib/c/generic/thread.c
r5d230a30 r69146b93 39 39 #include <abi/proc/uarg.h> 40 40 #include <fibril.h> 41 #include <stack.h> 41 42 #include <str.h> 42 43 #include <async.h> … … 44 45 #include <as.h> 45 46 #include "private/thread.h" 46 47 #ifndef THREAD_INITIAL_STACK_PAGES48 #define THREAD_INITIAL_STACK_PAGES 249 #endif50 47 51 48 /** Main thread function. … … 101 98 return ENOMEM; 102 99 103 size_t stack_size = getpagesize() * THREAD_INITIAL_STACK_PAGES;100 size_t stack_size = stack_size_get(); 104 101 void *stack = as_area_create(AS_AREA_ANY, stack_size, 105 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE); 102 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD | 103 AS_AREA_LATE_RESERVE); 106 104 if (stack == AS_MAP_FAILED) { 107 105 free(uarg); -
uspace/lib/c/include/ddi.h
r5d230a30 r69146b93 36 36 #define LIBC_DDI_H_ 37 37 38 #include <bool.h> 38 39 #include <sys/types.h> 40 #include <sys/time.h> 39 41 #include <abi/ddi/irq.h> 40 42 #include <task.h> … … 50 52 extern int dmamem_unmap_anonymous(void *); 51 53 52 extern int iospace_enable(task_id_t, void *, unsigned long);53 54 extern int pio_enable(void *, size_t, void **); 55 56 typedef void (*trace_fnc)(const volatile void *place, uint32_t val, 57 volatile void* base, size_t size, void *data, bool write); 58 59 extern int pio_trace_enable(void *, size_t, trace_fnc, void *); 60 extern void pio_trace_log(const volatile void *, uint32_t val, bool write); 61 extern void pio_trace_disable(void *); 62 63 extern void pio_write_8(ioport8_t *, uint8_t); 64 extern void pio_write_16(ioport16_t *, uint16_t); 65 extern void pio_write_32(ioport32_t *, uint32_t); 66 67 extern uint8_t pio_read_8(const ioport8_t *); 68 extern uint16_t pio_read_16(const ioport16_t *); 69 extern uint32_t pio_read_32(const ioport32_t *); 70 71 static inline uint8_t pio_change_8( 72 ioport8_t *reg, uint8_t val, uint8_t mask, useconds_t delay) 73 { 74 uint8_t v = pio_read_8(reg); 75 udelay(delay); 76 pio_write_8(reg, (v & ~mask) | val); 77 return v; 78 } 79 80 static inline uint16_t pio_change_16( 81 ioport16_t *reg, uint16_t val, uint16_t mask, useconds_t delay) 82 { 83 uint16_t v = pio_read_16(reg); 84 udelay(delay); 85 pio_write_16(reg, (v & ~mask) | val); 86 return v; 87 } 88 89 static inline uint32_t pio_change_32( 90 ioport32_t *reg, uint32_t val, uint32_t mask, useconds_t delay) 91 { 92 uint32_t v = pio_read_32(reg); 93 udelay(delay); 94 pio_write_32(reg, (v & ~mask) | val); 95 return v; 96 } 97 98 static inline uint8_t pio_set_8(ioport8_t *r, uint8_t v, useconds_t d) 99 { 100 return pio_change_8(r, v, 0, d); 101 } 102 static inline uint16_t pio_set_16(ioport16_t *r, uint16_t v, useconds_t d) 103 { 104 return pio_change_16(r, v, 0, d); 105 } 106 static inline uint32_t pio_set_32(ioport32_t *r, uint32_t v, useconds_t d) 107 { 108 return pio_change_32(r, v, 0, d); 109 } 110 111 static inline uint8_t pio_clear_8(ioport8_t *r, uint8_t v, useconds_t d) 112 { 113 return pio_change_8(r, 0, v, d); 114 } 115 static inline uint16_t pio_clear_16(ioport16_t *r, uint16_t v, useconds_t d) 116 { 117 return pio_change_16(r, 0, v, d); 118 } 119 static inline uint32_t pio_clear_32(ioport32_t *r, uint32_t v, useconds_t d) 120 { 121 return pio_change_32(r, 0, v, d); 122 } 54 123 55 124 extern int irq_register(int, int, int, irq_code_t *); -
uspace/lib/c/include/macros.h
r5d230a30 r69146b93 62 62 #endif 63 63 64 #define _paddname(line) PADD_ ## line ## __ 65 #define _padd(width, line) uint ## width ## _t _paddname(line) 66 #define PADD32 _padd(32, __LINE__) 67 #define PADD16 _padd(16, __LINE__) 68 #define PADD8 _padd(8, __LINE__) 69 64 70 /** @} 65 71 */ -
uspace/lib/c/include/stack.h
r5d230a30 r69146b93 1 1 /* 2 * Copyright (c) 201 1 Martin Sucha2 * Copyright (c) 2012 Jakub Jermar 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /** @addtogroup lib ext229 /** @addtogroup libc 30 30 * @{ 31 31 */ 32 /** 33 * @file 32 /** @file 34 33 */ 35 34 36 #ifndef LIB EXT2_LIBEXT2_H_37 #define LIB EXT2_LIBEXT2_H_35 #ifndef LIBC_STACK_H_ 36 #define LIBC_STACK_H_ 38 37 39 #include "libext2_superblock.h" 40 #include "libext2_block_group.h" 41 #include "libext2_inode.h" 42 #include "libext2_filesystem.h" 43 #include "libext2_directory.h" 38 #include <libarch/types.h> 39 40 extern size_t stack_size_get(void); 44 41 45 42 #endif
Note:
See TracChangeset
for help on using the changeset viewer.