[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

This is because switch_threads() takes arguments on the stack and the 80x86 SVR4 calling convention requires the caller, not the called function, to remove them when the call is complete. See [ SysV-i386] chapter 3 for details.

(2)

gdb might tell you that schedule() doesn't exist, which is arguably a gdb bug. You can work around this by setting the breakpoint by filename and line number, e.g. break thread.c:ln where ln is the line number of the first declaration in schedule().

(3)

We will treat these terms as synonymous. There is no standard distinction between them, although Intel processor manuals define them slightly differently on 80x86.

(4)

Actually, virtual to physical translation on the 80x86 architecture occurs via an intermediate "linear address," but Pintos (and most other 80x86 OSes) set up the CPU so that linear and virtual addresses are one and the same. Thus, you can effectively ignore this CPU feature.

(5)

This rule is common but not universal. One modern exception is the x86-64 System V ABI, which designates 128 bytes below the stack pointer as a "red zone" that may not be modified by signal or interrupt handlers.

(6)

Because we are working in binary, the "decimal" point might more correctly be called the "binary" point, but the meaning should be clear.



This document was generated by CS3204 on February, 2 2006 using texi2html