RPL?
-
Tach
Hab ich das richtig verstanden, dass das RPL in den Segmentregistern dazu da ist, dass ring0-code die Datensegmente aus Sicht des usercodes zu 'erleben'? Gibt es da noch irgendwas dazu zu beachten, besonders in Bezug auf z.B. ring3-tasks?
-
http://de.wikipedia.org/wiki/Ring_(CPU)
Bei der Task-Programmierung muss man bei user-code auf Feinheiten achten, z.B.:
if (newTask->type != VM86) { if (newTask->privilege == 0) { *(--kernelStack) = (uintptr_t)&exit; // When a ring0-task is finished, exit is automatically called } else if (newTask->privilege == 3) { // General information: Intel 3A Chapter 5.12 *(--kernelStack) = 0x23; // ss *(--kernelStack) = USER_STACK; // esp code_segment = 0x1B; // 0x18|0x3=0x1B } *(--kernelStack) = 0x0202; // eflags: interrupts activated, iopl = 0 }
siehe auch: http://blog.codinghorror.com/understanding-user-and-kernel-mode/