Changeset b4df8db in mainline
- Timestamp:
- 2013-03-11T19:48:41Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 623bab8f
- Parents:
- e4d96e9
- Location:
- uspace
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/char/i8042/main.c
re4d96e9 rb4df8db 36 36 37 37 #include <libarch/inttypes.h> 38 #include <libarch/config.h> 38 39 #include <ddf/driver.h> 39 40 #include <device/hw_res_parsed.h> … … 42 43 #include <ddf/log.h> 43 44 #include <stdio.h> 45 #include <async.h> 44 46 #include "i8042.h" 45 47 … … 152 154 printf("%s: HelenOS PS/2 driver.\n", NAME); 153 155 ddf_log_init(NAME); 156 157 /* 158 * Alleviate the virtual memory / page table pressure caused by 159 * interrupt storms when the default large stacks are used. 160 */ 161 async_set_interrupt_handler_stack_size(PAGE_SIZE); 162 154 163 return ddf_driver_main(&i8042_driver); 155 164 } -
uspace/lib/c/generic/async.c
re4d96e9 rb4df8db 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 353 353 354 /** Setter for client_connection function pointer. … … 370 371 { 371 372 interrupt_received = intr; 373 } 374 375 /** Set the stack size for the interrupt handler notification fibrils. 376 * 377 * @param size Stack size. Use -1 to use the system default stack size. 378 */ 379 void async_set_interrupt_handler_stack_size(size_t size) 380 { 381 interrupt_handler_stksz = size; 372 382 } 373 383 … … 587 597 msg->call = *call; 588 598 589 fid_t fid = fibril_create(notification_fibril, msg); 599 fid_t fid = fibril_create_generic(notification_fibril, msg, 600 interrupt_handler_stksz); 590 601 if (fid == 0) { 591 602 free(msg); -
uspace/lib/c/generic/fibril.c
re4d96e9 rb4df8db 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 259 * 259 260 * @return 0 on failure or TLS of the new fibril. 260 261 * 261 262 */ 262 fid_t fibril_create (int (*func)(void *), void *arg)263 fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t stksz) 263 264 { 264 265 fibril_t *fibril; … … 268 269 return 0; 269 270 270 size_t stack_size = stack_size_get();271 size_t stack_size = (stksz == (size_t) -1) ? stack_size_get() : stksz; 271 272 fibril->stack = as_area_create((void *) -1, stack_size, 272 273 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD | -
uspace/lib/c/include/async.h
re4d96e9 rb4df8db 156 156 extern void async_set_client_connection(async_client_conn_t); 157 157 extern void async_set_interrupt_received(async_interrupt_handler_t); 158 extern void async_set_interrupt_handler_stack_size(size_t); 158 159 159 160 /* -
uspace/lib/c/include/fibril.h
re4d96e9 rb4df8db 86 86 extern void context_restore(context_t *ctx) __attribute__((noreturn)); 87 87 88 extern fid_t fibril_create(int (*func)(void *), void *arg); 88 #define fibril_create(func, arg) \ 89 fibril_create_generic((func), (arg), (size_t) -1) 90 extern fid_t fibril_create_generic(int (*func)(void *), void *arg, size_t); 89 91 extern void fibril_destroy(fid_t fid); 90 92 extern fibril_t *fibril_setup(void);
Note:
See TracChangeset
for help on using the changeset viewer.