Changeset 908bb96 in mainline
- Timestamp:
- 2012-11-22T21:42:36Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e32720ff
- Parents:
- 1dbc43f
- Location:
- kernel/generic
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/mm/as.h
r1dbc43f r908bb96 68 68 #define AS_AREA_ATTR_PARTIAL 1 /**< Not fully initialized area. */ 69 69 70 /** The page fault was resolved by as_page_fault(). */ 71 #define AS_PF_OK 0 72 73 /** The page fault was caused by memcpy_from_uspace() or memcpy_to_uspace(). */ 74 #define AS_PF_DEFER 1 75 70 76 /** The page fault was not resolved by as_page_fault(). */ 71 #define AS_PF_FAULT 0 72 73 /** The page fault was resolved by as_page_fault(). */ 74 #define AS_PF_OK 1 75 76 /** The page fault was caused by memcpy_from_uspace() or memcpy_to_uspace(). */ 77 #define AS_PF_DEFER 2 77 #define AS_PF_FAULT 2 78 79 /** The page fault was not resolved by as_page_fault(). Non-verbose version. */ 80 #define AS_PF_SILENT 3 78 81 79 82 /** Address space structure. -
kernel/generic/include/proc/task.h
r1dbc43f r908bb96 134 134 uint64_t ucycles; 135 135 uint64_t kcycles; 136 137 /** If true, do not attempt to print a verbose kill message. */138 bool silent_kill;139 136 } task_t; 140 137 -
kernel/generic/src/interrupt/interrupt.c
r1dbc43f r908bb96 166 166 } 167 167 168 static NO_TRACE void fault_from_uspace_core(istate_t *istate, const char *fmt, va_list args) 169 { 170 if (!TASK->silent_kill) { 171 printf("Task %s (%" PRIu64 ") killed due to an exception at " 172 "program counter %p.\n", TASK->name, TASK->taskid, 173 (void *) istate_get_pc(istate)); 174 175 istate_decode(istate); 176 stack_trace_istate(istate); 177 178 printf("Kill message: "); 179 vprintf(fmt, args); 180 printf("\n"); 181 } 168 static NO_TRACE 169 void fault_from_uspace_core(istate_t *istate, const char *fmt, va_list args) 170 { 171 printf("Task %s (%" PRIu64 ") killed due to an exception at " 172 "program counter %p.\n", TASK->name, TASK->taskid, 173 (void *) istate_get_pc(istate)); 174 175 istate_decode(istate); 176 stack_trace_istate(istate); 177 178 printf("Kill message: "); 179 vprintf(fmt, args); 180 printf("\n"); 182 181 183 182 task_kill_self(true); -
kernel/generic/src/mm/as.c
r1dbc43f r908bb96 1363 1363 int as_page_fault(uintptr_t page, pf_access_t access, istate_t *istate) 1364 1364 { 1365 int rc = AS_PF_FAULT; 1366 1365 1367 if (!THREAD) 1366 1368 goto page_fault; … … 1423 1425 * Resort to the backend page fault handler. 1424 1426 */ 1425 if (area->backend->page_fault(area, page, access) != AS_PF_OK) { 1427 rc = area->backend->page_fault(area, page, access); 1428 if (rc != AS_PF_OK) { 1426 1429 page_table_unlock(AS, false); 1427 1430 mutex_unlock(&area->lock); … … 1444 1447 istate_set_retaddr(istate, 1445 1448 (uintptr_t) &memcpy_to_uspace_failover_address); 1449 } else if (rc == AS_PF_SILENT) { 1450 printf("Killing task %" PRIu64 " due to a " 1451 "failed late reservation request.\n", TASK->taskid); 1452 task_kill_self(true); 1446 1453 } else { 1447 1454 fault_if_from_uspace(istate, "Page fault: %p.", (void *) page); -
kernel/generic/src/mm/backend_anon.c
r1dbc43f r908bb96 255 255 * Reserve the memory for this page now. 256 256 */ 257 if (!reserve_try_alloc(1)) { 258 printf("Killing task %" PRIu64 " due to a " 259 "failed late reservation request.\n", 260 TASK->taskid); 261 TASK->silent_kill = true; 262 return AS_PF_FAULT; 263 } 257 if (!reserve_try_alloc(1)) 258 return AS_PF_SILENT; 264 259 } 265 260 -
kernel/generic/src/proc/task.c
r1dbc43f r908bb96 197 197 task->kcycles = 0; 198 198 199 task->silent_kill = false;200 201 199 task->ipc_info.call_sent = 0; 202 200 task->ipc_info.call_received = 0;
Note:
See TracChangeset
for help on using the changeset viewer.