Changeset b183ce0a in mainline for uspace/lib/c
- Timestamp:
- 2013-03-24T15:34:29Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8a26f82
- Parents:
- b92a0ee (diff), 119b46e (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:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/mips32/Makefile.common
rb92a0ee rb183ce0a 27 27 # 28 28 29 GCC_CFLAGS += -msoft-float -m ips3 -mabi=3229 GCC_CFLAGS += -msoft-float -mabi=32 30 30 BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a 31 31 … … 34 34 BFD_ARCH = mips 35 35 BFD_NAME = elf32-tradlittlemips 36 37 ifeq ($(MACHINE),msim) 38 GCC_CFLAGS += -march=r4000 39 endif 40 41 ifeq ($(MACHINE),lmalta) 42 GCC_CFLAGS += -march=4kc 43 endif 44 -
uspace/lib/c/arch/mips32eb/Makefile.common
rb92a0ee rb183ce0a 27 27 # 28 28 29 GCC_CFLAGS += -msoft-float -m ips3 -mabi=3229 GCC_CFLAGS += -msoft-float -mabi=32 30 30 BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a 31 31 … … 34 34 BFD_ARCH = mips 35 35 BFD_NAME = elf32-tradbigmips 36 37 ifeq ($(MACHINE),bmalta) 38 GCC_CFLAGS += -march=4kc 39 endif 40 -
uspace/lib/c/generic/async.c
rb92a0ee rb183ce0a 350 350 static async_client_conn_t client_connection = default_client_connection; 351 351 static async_interrupt_handler_t interrupt_received = default_interrupt_received; 352 static size_t interrupt_handler_stksz = (size_t) -1;352 static size_t interrupt_handler_stksz = FIBRIL_DFLT_STK_SIZE; 353 353 354 354 /** Setter for client_connection function pointer. … … 375 375 /** Set the stack size for the interrupt handler notification fibrils. 376 376 * 377 * @param size Stack size . Use -1 to use the system default stack size.377 * @param size Stack size in bytes. 378 378 */ 379 379 void async_set_interrupt_handler_stack_size(size_t size) … … 2068 2068 2069 2069 async_sess_t *sess = exch->sess; 2070 assert(sess != NULL); 2070 2071 2071 2072 atomic_dec(&sess->refcnt); -
uspace/lib/c/generic/fibril.c
rb92a0ee rb183ce0a 256 256 * @param func Implementing function of the new fibril. 257 257 * @param arg Argument to pass to func. 258 * @param stksz Stack size , -1 for the system default stack size.258 * @param stksz Stack size in bytes. 259 259 * 260 260 * @return 0 on failure or TLS of the new fibril. … … 269 269 return 0; 270 270 271 size_t stack_size = (stksz == (size_t) -1) ? stack_size_get() : stksz; 271 size_t stack_size = (stksz == FIBRIL_DFLT_STK_SIZE) ? 272 stack_size_get() : stksz; 272 273 fibril->stack = as_area_create((void *) -1, stack_size, 273 274 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD | -
uspace/lib/c/generic/net/socket_client.c
rb92a0ee rb183ce0a 192 192 /** Default thread for new connections. 193 193 * 194 * @param[in] iid The initial message identifier. 195 * @param[in] icall The initial message call structure. 196 * @param[in] arg Local argument. 194 * @param[in] iid The initial message identifier. 195 * @param[in] icall The initial message call structure. 196 * @param[in] arg Local argument. 197 * 197 198 */ 198 199 static void socket_connection(ipc_callid_t iid, ipc_call_t * icall, void *arg) 199 200 { 200 ipc_callid_t callid; 201 ipc_call_t call; 202 socket_t *socket; 203 int rc; 204 205 loop: 206 callid = async_get_call(&call); 207 208 switch (IPC_GET_IMETHOD(call)) { 209 case NET_SOCKET_RECEIVED: 210 case NET_SOCKET_ACCEPTED: 211 case NET_SOCKET_DATA_FRAGMENT_SIZE: 212 fibril_rwlock_read_lock(&socket_globals.lock); 213 214 /* Find the socket */ 215 socket = sockets_find(socket_get_sockets(), 216 SOCKET_GET_SOCKET_ID(call)); 217 if (!socket) { 218 rc = ENOTSOCK; 219 fibril_rwlock_read_unlock(&socket_globals.lock); 220 break; 201 while (true) { 202 ipc_call_t call; 203 ipc_callid_t callid = async_get_call(&call); 204 205 if (!IPC_GET_IMETHOD(call)) { 206 async_answer_0(callid, 0); 207 return; 221 208 } 209 210 int rc; 222 211 223 212 switch (IPC_GET_IMETHOD(call)) { 224 213 case NET_SOCKET_RECEIVED: 225 fibril_mutex_lock(&socket->receive_lock); 226 /* Push the number of received packet fragments */ 227 rc = dyn_fifo_push(&socket->received, 228 SOCKET_GET_DATA_FRAGMENTS(call), 229 SOCKET_MAX_RECEIVED_SIZE); 230 if (rc == EOK) { 231 /* Signal the received packet */ 232 fibril_condvar_signal(&socket->receive_signal); 214 case NET_SOCKET_ACCEPTED: 215 case NET_SOCKET_DATA_FRAGMENT_SIZE: 216 fibril_rwlock_read_lock(&socket_globals.lock); 217 218 /* Find the socket */ 219 socket_t *socket = sockets_find(socket_get_sockets(), 220 SOCKET_GET_SOCKET_ID(call)); 221 if (!socket) { 222 rc = ENOTSOCK; 223 fibril_rwlock_read_unlock(&socket_globals.lock); 224 break; 233 225 } 234 fibril_mutex_unlock(&socket->receive_lock); 226 227 switch (IPC_GET_IMETHOD(call)) { 228 case NET_SOCKET_RECEIVED: 229 fibril_mutex_lock(&socket->receive_lock); 230 /* Push the number of received packet fragments */ 231 rc = dyn_fifo_push(&socket->received, 232 SOCKET_GET_DATA_FRAGMENTS(call), 233 SOCKET_MAX_RECEIVED_SIZE); 234 if (rc == EOK) { 235 /* Signal the received packet */ 236 fibril_condvar_signal(&socket->receive_signal); 237 } 238 fibril_mutex_unlock(&socket->receive_lock); 239 break; 240 241 case NET_SOCKET_ACCEPTED: 242 /* Push the new socket identifier */ 243 fibril_mutex_lock(&socket->accept_lock); 244 rc = dyn_fifo_push(&socket->accepted, 1, 245 SOCKET_MAX_ACCEPTED_SIZE); 246 if (rc == EOK) { 247 /* Signal the accepted socket */ 248 fibril_condvar_signal(&socket->accept_signal); 249 } 250 fibril_mutex_unlock(&socket->accept_lock); 251 break; 252 253 default: 254 rc = ENOTSUP; 255 } 256 257 if ((SOCKET_GET_DATA_FRAGMENT_SIZE(call) > 0) && 258 (SOCKET_GET_DATA_FRAGMENT_SIZE(call) != 259 socket->data_fragment_size)) { 260 fibril_rwlock_write_lock(&socket->sending_lock); 261 262 /* Set the data fragment size */ 263 socket->data_fragment_size = 264 SOCKET_GET_DATA_FRAGMENT_SIZE(call); 265 266 fibril_rwlock_write_unlock(&socket->sending_lock); 267 } 268 269 fibril_rwlock_read_unlock(&socket_globals.lock); 235 270 break; 236 237 case NET_SOCKET_ACCEPTED: 238 /* Push the new socket identifier */ 239 fibril_mutex_lock(&socket->accept_lock); 240 rc = dyn_fifo_push(&socket->accepted, 1, 241 SOCKET_MAX_ACCEPTED_SIZE); 242 if (rc == EOK) { 243 /* Signal the accepted socket */ 244 fibril_condvar_signal(&socket->accept_signal); 245 } 246 fibril_mutex_unlock(&socket->accept_lock); 247 break; 248 271 249 272 default: 250 273 rc = ENOTSUP; 251 274 } 252 253 if ((SOCKET_GET_DATA_FRAGMENT_SIZE(call) > 0) && 254 (SOCKET_GET_DATA_FRAGMENT_SIZE(call) != 255 socket->data_fragment_size)) { 256 fibril_rwlock_write_lock(&socket->sending_lock); 257 258 /* Set the data fragment size */ 259 socket->data_fragment_size = 260 SOCKET_GET_DATA_FRAGMENT_SIZE(call); 261 262 fibril_rwlock_write_unlock(&socket->sending_lock); 263 } 264 265 fibril_rwlock_read_unlock(&socket_globals.lock); 266 break; 267 268 default: 269 rc = ENOTSUP; 270 } 271 272 async_answer_0(callid, (sysarg_t) rc); 273 goto loop; 275 276 async_answer_0(callid, (sysarg_t) rc); 277 } 274 278 } 275 279 -
uspace/lib/c/include/fibril.h
rb92a0ee rb183ce0a 86 86 extern void context_restore(context_t *ctx) __attribute__((noreturn)); 87 87 88 #define FIBRIL_DFLT_STK_SIZE 0 89 88 90 #define fibril_create(func, arg) \ 89 fibril_create_generic((func), (arg), (size_t) -1)91 fibril_create_generic((func), (arg), FIBRIL_DFLT_STK_SIZE) 90 92 extern fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t); 91 93 extern void fibril_destroy(fid_t fid);
Note:
See TracChangeset
for help on using the changeset viewer.