From 48755214c9a02d6249caf3126d3b41d67eda4730 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 30 Aug 2009 23:02:08 -0700 Subject: [PATCH] assorted fixes: * rename c/cp to cpu/proc * rename cpu.context to cpu.scheduler * fix some comments * formatting for printout --- Makefile | 2 +- console.c | 6 +- defs.h | 2 +- exec.c | 14 +- fs.c | 4 +- ide.c | 2 +- lapic.c | 2 +- main.c | 20 +- mmu.h | 16 +- mp.c | 11 +- pipe.c | 4 +- proc.c | 115 +- proc.h | 10 +- runoff.list | 2 + spinlock.c | 19 +- spinlock.h | 10 +- syscall.c | 16 +- sysfile.c | 18 +- sysproc.c | 6 +- toc.ftr | 8 +- trap.c | 24 +- xv6.pdf | Bin 147038 -> 147374 bytes xv6.ps | 4505 ++++++++++++++++++++++++++------------------------- 23 files changed, 2437 insertions(+), 2379 deletions(-) diff --git a/Makefile b/Makefile index fe091db..84c5cd0 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ AS = $(TOOLPREFIX)gas LD = $(TOOLPREFIX)ld OBJCOPY = $(TOOLPREFIX)objcopy OBJDUMP = $(TOOLPREFIX)objdump -CFLAGS = -fno-builtin -O2 -Wall -MD -ggdb -m32 +CFLAGS = -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector) ASFLAGS = -m32 # FreeBSD ld wants ``elf_i386_fbsd'' diff --git a/console.c b/console.c index 9d2ef60..0613a47 100644 --- a/console.c +++ b/console.c @@ -59,7 +59,7 @@ cprintf(char *fmt, ...) if(locking) acquire(&cons.lock); - argp = (uint*)(void*)&fmt + 1; + argp = (uint*)(void*)(&fmt + 1); state = 0; for(i = 0; (c = fmt[i] & 0xff) != 0; i++){ if(c != '%'){ @@ -106,7 +106,7 @@ panic(char *s) cli(); cons.locking = 0; - cprintf("cpu%d: panic: ", cpu()); + cprintf("cpu%d: panic: ", cpu->id); cprintf(s); cprintf("\n"); getcallerpcs(&s, pcs); @@ -229,7 +229,7 @@ consoleread(struct inode *ip, char *dst, int n) acquire(&input.lock); while(n > 0){ while(input.r == input.w){ - if(cp->killed){ + if(proc->killed){ release(&input.lock); ilock(ip); return -1; diff --git a/defs.h b/defs.h index 12d04aa..bcfab55 100644 --- a/defs.h +++ b/defs.h @@ -68,7 +68,7 @@ void kinit(void); void kbdintr(void); // lapic.c -int cpu(void); +int cpunum(void); extern volatile uint* lapic; void lapiceoi(void); void lapicinit(int); diff --git a/exec.c b/exec.c index bee960e..17fab01 100644 --- a/exec.c +++ b/exec.c @@ -11,7 +11,7 @@ exec(char *path, char **argv) { char *mem, *s, *last; int i, argc, arglen, len, off; - uint sz, sp, argp, x; + uint sz, sp, argp; struct elfhdr elf; struct inode *ip; struct proghdr ph; @@ -103,14 +103,14 @@ exec(char *path, char **argv) for(last=s=path; *s; s++) if(*s == '/') last = s+1; - safestrcpy(cp->name, last, sizeof(cp->name)); + safestrcpy(proc->name, last, sizeof(proc->name)); // Commit to the new image. - kfree(cp->mem, cp->sz); - cp->mem = mem; - cp->sz = sz; - cp->tf->eip = elf.entry; // main - cp->tf->esp = sp; + kfree(proc->mem, proc->sz); + proc->mem = mem; + proc->sz = sz; + proc->tf->eip = elf.entry; // main + proc->tf->esp = sp; usegment(); return 0; diff --git a/fs.c b/fs.c index 15b0bfe..19843e6 100644 --- a/fs.c +++ b/fs.c @@ -109,7 +109,7 @@ bfree(int dev, uint b) // to inodes shared between multiple processes. // // ip->ref counts the number of pointer references to this cached -// inode; references are typically kept in struct file and in cp->cwd. +// inode; references are typically kept in struct file and in proc->cwd. // When ip->ref falls to zero, the inode is no longer cached. // It is an error to use an inode without holding a reference to it. // @@ -578,7 +578,7 @@ namex(char *path, int nameiparent, char *name) if(*path == '/') ip = iget(ROOTDEV, ROOTINO); else - ip = idup(cp->cwd); + ip = idup(proc->cwd); while((path = skipelem(path, name)) != 0){ ilock(ip); diff --git a/ide.c b/ide.c index 1f19833..c0eb80a 100644 --- a/ide.c +++ b/ide.c @@ -146,7 +146,7 @@ iderw(struct buf *b) idestart(b); // Wait for request to finish. - // Assuming will not sleep too long: ignore cp->killed. + // Assuming will not sleep too long: ignore proc->killed. while((b->flags & (B_VALID|B_DIRTY)) != B_VALID) sleep(b, &idelock); diff --git a/lapic.c b/lapic.c index 500844a..d143e80 100644 --- a/lapic.c +++ b/lapic.c @@ -92,7 +92,7 @@ lapicinit(int c) } int -cpu(void) +cpunum(void) { // Cannot call cpu when interrupts are enabled: // result not guaranteed to last long enough to be used! diff --git a/main.c b/main.c index 18e1790..57af27c 100644 --- a/main.c +++ b/main.c @@ -5,8 +5,8 @@ #include "proc.h" #include "x86.h" -__thread struct cpu *c; -__thread struct proc *cp; +__thread struct cpu *cpu; +__thread struct proc *proc; static void bootothers(void); static void mpmain(void) __attribute__((noreturn)); @@ -22,7 +22,7 @@ main(void) ioapicinit(); // another interrupt controller consoleinit(); // I/O devices & their interrupts uartinit(); // serial port - cprintf("\ncpu%d: starting xv6\n\n", cpu()); + cprintf("\ncpu%d: starting xv6\n\n", cpu->id); kinit(); // physical memory allocator pinit(); // process table @@ -45,14 +45,14 @@ main(void) static void mpmain(void) { - if(cpu() != mpbcpu()) - lapicinit(cpu()); + if(cpunum() != mpbcpu()) + lapicinit(cpunum()); ksegment(); - cprintf("cpu%d: mpmain\n", cpu()); + cprintf("cpu%d: mpmain\n", cpu->id); idtinit(); - xchg(&c->booted, 1); + xchg(&cpu->booted, 1); - cprintf("cpu%d: scheduling\n", cpu()); + cprintf("cpu%d: scheduling\n", cpu->id); scheduler(); } @@ -69,14 +69,14 @@ bootothers(void) memmove(code, _binary_bootother_start, (uint)_binary_bootother_size); for(c = cpus; c < cpus+ncpu; c++){ - if(c == cpus+cpu()) // We've started already. + if(c == cpus+cpunum()) // We've started already. continue; // Fill in %esp, %eip and start code on cpu. stack = kalloc(KSTACKSIZE); *(void**)(code-4) = stack + KSTACKSIZE; *(void**)(code-8) = mpmain; - lapicstartap(c->apicid, (uint)code); + lapicstartap(c->id, (uint)code); // Wait for cpu to get through bootstrap. while(c->booted == 0) diff --git a/mmu.h b/mmu.h index 923ffde..364d05b 100644 --- a/mmu.h +++ b/mmu.h @@ -42,15 +42,15 @@ struct segdesc { }; // Normal segment -#define SEG(type, base, lim, dpl) (struct segdesc) \ -{ ((lim) >> 12) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \ - type, 1, dpl, 1, (uint) (lim) >> 28, 0, 0, 1, 1, \ - (uint) (base) >> 24 } +#define SEG(type, base, lim, dpl) (struct segdesc) \ +{ ((lim) >> 12) & 0xffff, (uint)(base) & 0xffff, \ + ((uint)(base) >> 16) & 0xff, type, 1, dpl, 1, \ + (uint)(lim) >> 28, 0, 0, 1, 1, (uint)(base) >> 24 } -#define SEG16(type, base, lim, dpl) (struct segdesc) \ -{ (lim) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff, \ - type, 1, dpl, 1, (uint) (lim) >> 16, 0, 0, 1, 0, \ - (uint) (base) >> 24 } +#define SEG16(type, base, lim, dpl) (struct segdesc) \ +{ (lim) & 0xffff, (uint)(base) & 0xffff, \ + ((uint)(base) >> 16) & 0xff, type, 1, dpl, 1, \ + (uint)(lim) >> 16, 0, 0, 1, 0, (uint)(base) >> 24 } #define DPL_USER 0x3 // User DPL diff --git a/mp.c b/mp.c index 393119d..e1edf24 100644 --- a/mp.c +++ b/mp.c @@ -103,20 +103,22 @@ mpinit(void) struct mpproc *proc; struct mpioapic *ioapic; - bcpu = &cpus[ncpu]; + bcpu = &cpus[0]; if((conf = mpconfig(&mp)) == 0) return; - ismp = 1; lapic = (uint*)conf->lapicaddr; - for(p=(uchar*)(conf+1), e=(uchar*)conf+conf->length; papicid; + if(ncpu != proc->apicid) { + cprintf("mpinit: ncpu=%d apicpid=%d", ncpu, proc->apicid); + panic("mpinit"); + } if(proc->flags & MPBOOT) bcpu = &cpus[ncpu]; + cpus[ncpu].id = ncpu; ncpu++; p += sizeof(struct mpproc); continue; @@ -135,7 +137,6 @@ mpinit(void) panic("mpinit"); } } - if(mp->imcrp){ // Bochs doesn't support IMCR, so this doesn't run on Bochs. // But it would on real hardware. diff --git a/pipe.c b/pipe.c index 29c01b2..4a1857c 100644 --- a/pipe.c +++ b/pipe.c @@ -82,7 +82,7 @@ pipewrite(struct pipe *p, char *addr, int n) acquire(&p->lock); for(i = 0; i < n; i++){ while(p->nwrite == p->nread + PIPESIZE) { //DOC: pipewrite-full - if(p->readopen == 0 || cp->killed){ + if(p->readopen == 0 || proc->killed){ release(&p->lock); return -1; } @@ -103,7 +103,7 @@ piperead(struct pipe *p, char *addr, int n) acquire(&p->lock); while(p->nread == p->nwrite && p->writeopen){ //DOC: pipe-empty - if(cp->killed){ + if(proc->killed){ release(&p->lock); return -1; } diff --git a/proc.c b/proc.c index d111008..6829b46 100644 --- a/proc.c +++ b/proc.c @@ -65,32 +65,31 @@ procdump(void) void ksegment(void) { - struct cpu *c1; + struct cpu *c; - c1 = &cpus[cpu()]; - c1->gdt[SEG_KCODE] = SEG(STA_X|STA_R, 0, 0x100000 + 64*1024-1, 0); - c1->gdt[SEG_KDATA] = SEG(STA_W, 0, 0xffffffff, 0); - c1->gdt[SEG_KCPU] = SEG(STA_W, (uint)(&c1->tls+1), 0xffffffff, 0); - lgdt(c1->gdt, sizeof(c1->gdt)); + c = &cpus[cpunum()]; + c->gdt[SEG_KCODE] = SEG(STA_X|STA_R, 0, 0x100000 + 64*1024-1, 0); + c->gdt[SEG_KDATA] = SEG(STA_W, 0, 0xffffffff, 0); + c->gdt[SEG_KCPU] = SEG(STA_W, (uint)(&c->tls+1), 0xffffffff, 0); + lgdt(c->gdt, sizeof(c->gdt)); loadfsgs(SEG_KCPU << 3); // Initialize cpu-local variables. - c = c1; - cp = 0; + cpu = c; + proc = 0; } // Set up CPU's segment descriptors and current process task state. -// If cp==0, set up for "idle" state for when scheduler() is running. void usegment(void) { pushcli(); - c->gdt[SEG_UCODE] = SEG(STA_X|STA_R, (uint)cp->mem, cp->sz-1, DPL_USER); - c->gdt[SEG_UDATA] = SEG(STA_W, (uint)cp->mem, cp->sz-1, DPL_USER); - c->gdt[SEG_TSS] = SEG16(STS_T32A, (uint)&c->ts, sizeof(c->ts)-1, 0); - c->gdt[SEG_TSS].s = 0; - c->ts.ss0 = SEG_KDATA << 3; - c->ts.esp0 = (uint)cp->kstack + KSTACKSIZE; + cpu->gdt[SEG_UCODE] = SEG(STA_X|STA_R, proc->mem, proc->sz-1, DPL_USER); + cpu->gdt[SEG_UDATA] = SEG(STA_W, proc->mem, proc->sz-1, DPL_USER); + cpu->gdt[SEG_TSS] = SEG16(STS_T32A, &cpu->ts, sizeof(cpu->ts)-1, 0); + cpu->gdt[SEG_TSS].s = 0; + cpu->ts.ss0 = SEG_KDATA << 3; + cpu->ts.esp0 = (uint)proc->kstack + KSTACKSIZE; ltr(SEG_TSS << 3); popcli(); } @@ -178,14 +177,14 @@ growproc(int n) { char *newmem; - newmem = kalloc(cp->sz + n); + newmem = kalloc(proc->sz + n); if(newmem == 0) return -1; - memmove(newmem, cp->mem, cp->sz); - memset(newmem + cp->sz, 0, n); - kfree(cp->mem, cp->sz); - cp->mem = newmem; - cp->sz += n; + memmove(newmem, proc->mem, proc->sz); + memset(newmem + proc->sz, 0, n); + kfree(proc->mem, proc->sz); + proc->mem = newmem; + proc->sz += n; usegment(); return 0; } @@ -204,24 +203,24 @@ fork(void) return -1; // Copy process state from p. - np->sz = cp->sz; + np->sz = proc->sz; if((np->mem = kalloc(np->sz)) == 0){ kfree(np->kstack, KSTACKSIZE); np->kstack = 0; np->state = UNUSED; return -1; } - memmove(np->mem, cp->mem, np->sz); - np->parent = cp; - *np->tf = *cp->tf; + memmove(np->mem, proc->mem, np->sz); + np->parent = proc; + *np->tf = *proc->tf; // Clear %eax so that fork returns 0 in the child. np->tf->eax = 0; for(i = 0; i < NOFILE; i++) - if(cp->ofile[i]) - np->ofile[i] = filedup(cp->ofile[i]); - np->cwd = idup(cp->cwd); + if(proc->ofile[i]) + np->ofile[i] = filedup(proc->ofile[i]); + np->cwd = idup(proc->cwd); pid = np->pid; np->state = RUNNABLE; @@ -255,14 +254,14 @@ scheduler(void) // Switch to chosen process. It is the process's job // to release ptable.lock and then reacquire it // before jumping back to us. - cp = p; + proc = p; usegment(); p->state = RUNNING; - swtch(&c->context, p->context); + swtch(&cpu->scheduler, proc->context); // Process is done running for now. // It should have changed its p->state before coming back. - cp = 0; + proc = 0; } release(&ptable.lock); @@ -270,7 +269,7 @@ scheduler(void) } // Enter scheduler. Must hold only ptable.lock -// and have changed cp->state. +// and have changed proc->state. void sched(void) { @@ -278,16 +277,16 @@ sched(void) if(!holding(&ptable.lock)) panic("sched ptable.lock"); - if(c->ncli != 1) + if(cpu->ncli != 1) panic("sched locks"); - if(cp->state == RUNNING) + if(proc->state == RUNNING) panic("sched running"); if(readeflags()&FL_IF) panic("sched interruptible"); - intena = c->intena; - swtch(&cp->context, c->context); - c->intena = intena; + intena = cpu->intena; + swtch(&proc->context, cpu->scheduler); + cpu->intena = intena; } // Give up the CPU for one scheduling round. @@ -295,7 +294,7 @@ void yield(void) { acquire(&ptable.lock); //DOC: yieldlock - cp->state = RUNNABLE; + proc->state = RUNNABLE; sched(); release(&ptable.lock); } @@ -312,11 +311,11 @@ forkret(void) } // Atomically release lock and sleep on chan. -// Reacquires lock when reawakened. +// Reacquires lock when awakened. void sleep(void *chan, struct spinlock *lk) { - if(cp == 0) + if(proc == 0) panic("sleep"); if(lk == 0) @@ -334,12 +333,12 @@ sleep(void *chan, struct spinlock *lk) } // Go to sleep. - cp->chan = chan; - cp->state = SLEEPING; + proc->chan = chan; + proc->state = SLEEPING; sched(); // Tidy up. - cp->chan = 0; + proc->chan = 0; // Reacquire original lock. if(lk != &ptable.lock){ //DOC: sleeplock2 @@ -371,7 +370,7 @@ wakeup(void *chan) } // Kill the process with the given pid. -// Process won't actually exit until it returns +// Process won't exit until it returns // to user space (see trap in trap.c). int kill(int pid) @@ -394,36 +393,36 @@ kill(int pid) } // Exit the current process. Does not return. -// Exited processes remain in the zombie state -// until their parent calls wait() to find out they exited. +// An exited process remains in the zombie state +// until its parent calls wait() to find out it exited. void exit(void) { struct proc *p; int fd; - if(cp == initproc) + if(proc == initproc) panic("init exiting"); // Close all open files. for(fd = 0; fd < NOFILE; fd++){ - if(cp->ofile[fd]){ - fileclose(cp->ofile[fd]); - cp->ofile[fd] = 0; + if(proc->ofile[fd]){ + fileclose(proc->ofile[fd]); + proc->ofile[fd] = 0; } } - iput(cp->cwd); - cp->cwd = 0; + iput(proc->cwd); + proc->cwd = 0; acquire(&ptable.lock); // Parent might be sleeping in wait(). - wakeup1(cp->parent); + wakeup1(proc->parent); // Pass abandoned children to init. for(p = ptable.proc; p < &ptable.proc[NPROC]; p++){ - if(p->parent == cp){ + if(p->parent == proc){ p->parent = initproc; if(p->state == ZOMBIE) wakeup1(initproc); @@ -431,7 +430,7 @@ exit(void) } // Jump into the scheduler, never to return. - cp->state = ZOMBIE; + proc->state = ZOMBIE; sched(); panic("zombie exit"); } @@ -449,7 +448,7 @@ wait(void) // Scan through table looking for zombie children. havekids = 0; for(p = ptable.proc; p < &ptable.proc[NPROC]; p++){ - if(p->parent != cp) + if(p->parent != proc) continue; havekids = 1; if(p->state == ZOMBIE){ @@ -468,13 +467,13 @@ wait(void) } // No point waiting if we don't have any children. - if(!havekids || cp->killed){ + if(!havekids || proc->killed){ release(&ptable.lock); return -1; } // Wait for children to exit. (See wakeup1 call in proc_exit.) - sleep(cp, &ptable.lock); //DOC: wait-sleep + sleep(proc, &ptable.lock); //DOC: wait-sleep } } diff --git a/proc.h b/proc.h index 2c7fade..c099dbf 100644 --- a/proc.h +++ b/proc.h @@ -31,7 +31,7 @@ struct proc { char *mem; // Start of process memory (kernel address) uint sz; // Size of process memory (bytes) char *kstack; // Bottom of kernel stack for this process - enum procstate state; // Process state + enum procstate state; // Process state volatile int pid; // Process ID struct proc *parent; // Parent process struct trapframe *tf; // Trap frame for current syscall @@ -51,8 +51,8 @@ struct proc { // Per-CPU state struct cpu { - uchar apicid; // Local APIC ID - struct context *context; // Switch here to enter scheduler + uchar id; // Local APIC ID; index into cpus[] below + struct context *scheduler; // Switch here to enter scheduler struct taskstate ts; // Used by x86 to find stack for interrupt struct segdesc gdt[NSEGS]; // x86 global descriptor table volatile uint booted; // Has the CPU started? @@ -70,5 +70,5 @@ extern int ncpu; // pointed at by gs; the name __thread derives from the use // of the same mechanism to provide per-thread storage in // multithreaded user programs. -extern __thread struct cpu *c; // This cpu. -extern __thread struct proc *cp; // Current process on this cpu. +extern __thread struct cpu *cpu; // This cpu. +extern __thread struct proc *proc; // Current process on this cpu. diff --git a/runoff.list b/runoff.list index 3bf6c87..76a6449 100644 --- a/runoff.list +++ b/runoff.list @@ -45,6 +45,8 @@ file.c sysfile.c exec.c + + # pipes pipe.c diff --git a/spinlock.c b/spinlock.c index a48e395..c3ea730 100644 --- a/spinlock.c +++ b/spinlock.c @@ -13,7 +13,7 @@ initlock(struct spinlock *lk, char *name) { lk->name = name; lk->locked = 0; - lk->cpu = 0xffffffff; + lk->cpu = 0; } // Acquire the lock. @@ -34,10 +34,7 @@ acquire(struct spinlock *lk) ; // Record info about lock acquisition for debugging. - // The +10 is only so that we can tell the difference - // between forgetting to initialize lock->cpu - // and holding a lock on cpu 0. - lk->cpu = cpu() + 10; + lk->cpu = cpu; getcallerpcs(&lk, lk->pcs); } @@ -49,7 +46,7 @@ release(struct spinlock *lk) panic("release"); lk->pcs[0] = 0; - lk->cpu = 0xffffffff; + lk->cpu = 0; // The xchg serializes, so that reads before release are // not reordered after it. The 1996 PentiumPro manual (Volume 3, @@ -87,7 +84,7 @@ getcallerpcs(void *v, uint pcs[]) int holding(struct spinlock *lock) { - return lock->locked && lock->cpu == cpu() + 10; + return lock->locked && lock->cpu == cpu; } @@ -102,8 +99,8 @@ pushcli(void) eflags = readeflags(); cli(); - if(c->ncli++ == 0) - c->intena = eflags & FL_IF; + if(cpu->ncli++ == 0) + cpu->intena = eflags & FL_IF; } void @@ -111,9 +108,9 @@ popcli(void) { if(readeflags()&FL_IF) panic("popcli - interruptible"); - if(--c->ncli < 0) + if(--cpu->ncli < 0) panic("popcli"); - if(c->ncli == 0 && c->intena) + if(cpu->ncli == 0 && cpu->intena) sti(); } diff --git a/spinlock.h b/spinlock.h index a9242b6..fdda016 100644 --- a/spinlock.h +++ b/spinlock.h @@ -1,11 +1,11 @@ // Mutual exclusion lock. struct spinlock { - uint locked; // Is the lock held? + uint locked; // Is the lock held? // For debugging: - char *name; // Name of lock. - int cpu; // The number of the cpu holding the lock. - uint pcs[10]; // The call stack (an array of program counters) - // that locked the lock. + char *name; // Name of lock. + struct cpu *cpu; // The cpu holding the lock. + uint pcs[10]; // The call stack (an array of program counters) + // that locked the lock. }; diff --git a/syscall.c b/syscall.c index 2a037d1..110a872 100644 --- a/syscall.c +++ b/syscall.c @@ -44,7 +44,7 @@ fetchstr(struct proc *p, uint addr, char **pp) int argint(int n, int *ip) { - return fetchint(cp, cp->tf->esp + 4 + 4*n, ip); + return fetchint(proc, proc->tf->esp + 4 + 4*n, ip); } // Fetch the nth word-sized system call argument as a pointer @@ -57,9 +57,9 @@ argptr(int n, char **pp, int size) if(argint(n, &i) < 0) return -1; - if((uint)i >= cp->sz || (uint)i+size >= cp->sz) + if((uint)i >= proc->sz || (uint)i+size >= proc->sz) return -1; - *pp = cp->mem + i; + *pp = proc->mem + i; return 0; } @@ -73,7 +73,7 @@ argstr(int n, char **pp) int addr; if(argint(n, &addr) < 0) return -1; - return fetchstr(cp, addr, pp); + return fetchstr(proc, addr, pp); } extern int sys_chdir(void); @@ -125,12 +125,12 @@ syscall(void) { int num; - num = cp->tf->eax; + num = proc->tf->eax; if(num >= 0 && num < NELEM(syscalls) && syscalls[num]) - cp->tf->eax = syscalls[num](); + proc->tf->eax = syscalls[num](); else { cprintf("%d %s: unknown sys call %d\n", - cp->pid, cp->name, num); - cp->tf->eax = -1; + proc->pid, proc->name, num); + proc->tf->eax = -1; } } diff --git a/sysfile.c b/sysfile.c index ae7d07c..3eec766 100644 --- a/sysfile.c +++ b/sysfile.c @@ -18,7 +18,7 @@ argfd(int n, int *pfd, struct file **pf) if(argint(n, &fd) < 0) return -1; - if(fd < 0 || fd >= NOFILE || (f=cp->ofile[fd]) == 0) + if(fd < 0 || fd >= NOFILE || (f=proc->ofile[fd]) == 0) return -1; if(pfd) *pfd = fd; @@ -35,8 +35,8 @@ fdalloc(struct file *f) int fd; for(fd = 0; fd < NOFILE; fd++){ - if(cp->ofile[fd] == 0){ - cp->ofile[fd] = f; + if(proc->ofile[fd] == 0){ + proc->ofile[fd] = f; return fd; } } @@ -89,7 +89,7 @@ sys_close(void) if(argfd(0, &fd, &f) < 0) return -1; - cp->ofile[fd] = 0; + proc->ofile[fd] = 0; fileclose(f); return 0; } @@ -338,8 +338,8 @@ sys_chdir(void) return -1; } iunlock(ip); - iput(cp->cwd); - cp->cwd = ip; + iput(proc->cwd); + proc->cwd = ip; return 0; } @@ -356,13 +356,13 @@ sys_exec(void) for(i=0;; i++){ if(i >= NELEM(argv)) return -1; - if(fetchint(cp, uargv+4*i, (int*)&uarg) < 0) + if(fetchint(proc, uargv+4*i, (int*)&uarg) < 0) return -1; if(uarg == 0){ argv[i] = 0; break; } - if(fetchstr(cp, uarg, &argv[i]) < 0) + if(fetchstr(proc, uarg, &argv[i]) < 0) return -1; } return exec(path, argv); @@ -382,7 +382,7 @@ sys_pipe(void) fd0 = -1; if((fd0 = fdalloc(rf)) < 0 || (fd1 = fdalloc(wf)) < 0){ if(fd0 >= 0) - cp->ofile[fd0] = 0; + proc->ofile[fd0] = 0; fileclose(rf); fileclose(wf); return -1; diff --git a/sysproc.c b/sysproc.c index 5ecbf2b..11770ff 100644 --- a/sysproc.c +++ b/sysproc.c @@ -37,7 +37,7 @@ sys_kill(void) int sys_getpid(void) { - return cp->pid; + return proc->pid; } int @@ -48,7 +48,7 @@ sys_sbrk(void) if(argint(0, &n) < 0) return -1; - addr = cp->sz; + addr = proc->sz; if(growproc(n) < 0) return -1; return addr; @@ -64,7 +64,7 @@ sys_sleep(void) acquire(&tickslock); ticks0 = ticks; while(ticks - ticks0 < n){ - if(cp->killed){ + if(proc->killed){ release(&tickslock); return -1; } diff --git a/toc.ftr b/toc.ftr index 466e028..6ed7fe0 100644 --- a/toc.ftr +++ b/toc.ftr @@ -6,9 +6,9 @@ on the same line as the name, the line number (or, in a few cases, numbers) where the name is defined. Successive lines in an entry list the line numbers where the name is used. For example, this entry: - swtch 2256 - 0311 1928 1962 2255 - 2256 + swtch 2208 + 0318 1928 1967 2207 + 2208 -indicates that swtch is defined on line 2256 and is mentioned on five lines +indicates that swtch is defined on line 2208 and is mentioned on five lines on sheets 03, 19, and 22. diff --git a/trap.c b/trap.c index 651a9d6..446ebaa 100644 --- a/trap.c +++ b/trap.c @@ -36,18 +36,18 @@ void trap(struct trapframe *tf) { if(tf->trapno == T_SYSCALL){ - if(cp->killed) + if(proc->killed) exit(); - cp->tf = tf; + proc->tf = tf; syscall(); - if(cp->killed) + if(proc->killed) exit(); return; } switch(tf->trapno){ case T_IRQ0 + IRQ_TIMER: - if(cpu() == 0){ + if(cpu->id == 0){ acquire(&tickslock); ticks++; wakeup(&ticks); @@ -70,35 +70,35 @@ trap(struct trapframe *tf) case T_IRQ0 + 7: case T_IRQ0 + IRQ_SPURIOUS: cprintf("cpu%d: spurious interrupt at %x:%x\n", - cpu(), tf->cs, tf->eip); + cpu->id, tf->cs, tf->eip); lapiceoi(); break; default: - if(cp == 0 || (tf->cs&3) == 0){ + if(proc == 0 || (tf->cs&3) == 0){ // In kernel, it must be our mistake. cprintf("unexpected trap %d from cpu %d eip %x\n", - tf->trapno, cpu(), tf->eip); + tf->trapno, cpu->id, tf->eip); panic("trap"); } // In user space, assume process misbehaved. cprintf("pid %d %s: trap %d err %d on cpu %d eip %x -- kill proc\n", - cp->pid, cp->name, tf->trapno, tf->err, cpu(), tf->eip); - cp->killed = 1; + proc->pid, proc->name, tf->trapno, tf->err, cpu->id, tf->eip); + proc->killed = 1; } // Force process exit if it has been killed and is in user space. // (If it is still executing in the kernel, let it keep running // until it gets to the regular system call return.) - if(cp && cp->killed && (tf->cs&3) == DPL_USER) + if(proc && proc->killed && (tf->cs&3) == DPL_USER) exit(); // Force process to give up CPU on clock tick. // If interrupts were on while locks held, would need to check nlock. - if(cp && cp->state == RUNNING && tf->trapno == T_IRQ0+IRQ_TIMER) + if(proc && proc->state == RUNNING && tf->trapno == T_IRQ0+IRQ_TIMER) yield(); // Check if the process has been killed since we yielded - if(cp && cp->killed && (tf->cs&3) == DPL_USER) + if(proc && proc->killed && (tf->cs&3) == DPL_USER) exit(); } diff --git a/xv6.pdf b/xv6.pdf index fd4efdecc405868277f8a9664e8b66297dd60676..bcf7b169d32685bd509fe1bb9be5356b87f859a2 100644 GIT binary patch delta 111679 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 z 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∈d4qq5KI7x4FmN*pHn!#s7>_zydlR6PHeTm z7a+KPF?HV)cTN6Ag1Q$s_)3*$pinB1koCbpA!^uhL0lkB)3!n5P_QjU1&g)_K5WGh zemp1Agy1q870OZA(ltqct{Pd0QbTHfeDY(kSHoKnhYra?(T*n zL5Qa)>@XC~i10?z3URo25XDk7!fr?@IR-l< zMY9yCDwe8KRRf(;h{yGZ08okRisD!f6D=^2zn`Iju4GlQU`-f}LL#H4D$pqcKmh|p z6wfKu7JdUHb;Z)8u0YP16l6Sske0x6s=sd?K$;oL zG@@v>PSFjOK(S0CfJ$6GG!jJ2Q$gTtBbsJ$rGlp^)n(QZlt3eq!T=EsDpXZapgkfLAYjUCCy{&fC<-#ra4m6 zAYC=QCLkbHhLtP`_=X=c=IdAxeSuO{Rqbs8qu^+uW6|+tx>d+$5jo0gk~6!B*qxdCp4mJLBvghqU9T_ z9S}(j4Iu<0G7PQ6H`8omA{6oL2GSBK%uEpA;dvY}EKdOsT}=F<30?49C3Dr!i@-+FdVj5rir*4QY=LGh60z> z3$+XASeA3WrXk+rH2?rY-c?^G)9^G-Q7rhd`Z}miU^7kw0ZQ0H84%YX(3G-^G&~?M z0WRt^xyI(yZU;NSyK3#Y!R2H;wvMm#-L_>SAy%kw@OoMX#GML3+!3)*3wRtJPh=Xa zE@=rWOqR!W2Y|Ifq2Y}YD++iLlmU5C?>rHHDF|AGWJE!rBus?h%w!T$@?`C& z((r(g{Gsw!r$PLoaCIW3TsYRPlfJhza@fc83AYnyLhs<7*g6@I!PX%q^ftH~10HUe zlFWoiB$SfHZ!81y>bgTn$#Qjm{KInqPsDo$nWn_{g0wh9VQE(eB#cW5e*9fr_0kgY ztN=A6#7TAW0~4O`2r&NoG+vi>Asi~n(wl?OfB^y%`N!=sy^DAhmGOw^sN{(lKuI)5 zk%a+A;rax#B-SAS#Elh#vPi@V;DOiIAT6k-&1%zIz3wQEDD7lGJf=f^(@5vTLHCVG zhUP$C7!7(7w%%o>+Gbt`#7_u~8IRY^aB8S3FhH7PXhQEC5qxAkEchVANerdlHp$7B zWAJPz({O!)N_Zakca8x?sUHw=5PWbc(A+m8^ao3-55XWB%#VQyw8A7HkxV#_7D!`d zRWs}r@N|Pm0uU`;v>*v4jeg-t6{R5p6r5oU>i&0MUoX8{GaRCtbADJ-`ZJ@;^N;kkG@-GiPILU*jB}}Zq z1UwhJ9mNyVB?N%@I>gg79-C!6^|q?kiiPj)Q=jB1NHUm}$bfjCh9Kb)u@uTeT-3l= zz-voLcobI0f&2jwKQ#nWvV*2M5ue8Z6A?FeU;>?&x&&oBBLDJG)gUa%%YbAD%R{ZC z4hT$GJYOOJ#3K;mW#_~8LihQjxvNj|(Bcw$7l_tb2E;`TBP4JWk_moe=YHUi+-9JK1UFG%C*$E!RHoG$rY!&O;s+*Vngu}oFfcSEhBN@ky?&Hn(9sIf!_qBU_79=8u*B2c)$!}Os+A@{A06QPxEz_`}$MOLDT4g&!3%`y`* z!hv^VHX}ba;D>=c$rG&-4bi9eFmV5R@k1cQ<2+1gi9!wlak0Wnl1McBzyx<=xCmHl z1F6dLhnz^%%rYPz7mz4`{WsWLyH|keC`lvZ0tMx)`Z^g;BBGfnvbYE#Yhbex`OuKd z3B6M+ZZq&0MLqyQ%~hA|>gzul5O45g8ZnZip-sT_P5~fcNAM;<)(ZlyE(MT3FoAiw zx@bTp0^v>oh!-mI3l$ku8dVcaY6%{qK-7N#NZc5~`x~iarZE~ZpM%_qmv!(^^J6Ak zU;iN(k~YGG9MB1k)crJ!h_TxN9&UPB7EN z4+DVTM{@O{N@(QOTlT7k7cr7;8?pzU`Wc>5wdtvF_Umft3wm>l_6gNLFk&3; u=;s^iOEa8rkoEsuFt(+$bIY0GfnniMVZk9S;pLr!AELIjboK1l^8Wzh#UhCS diff --git a/xv6.ps b/xv6.ps index 8a4868e..46268e4 100644 --- a/xv6.ps +++ b/xv6.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 % Produced by xpdf/pdftops 3.02 -%%Creator: mpage 2.5.6 Januari 2008 +%%Creator: mpage 2.5.5 November 2006 %%Title: (mpage) %%LanguageLevel: 2 %%DocumentSuppliedResources: (atend) @@ -413,8 +413,8 @@ end %%EndProlog %%BeginSetup xpdf begin -%%BeginResource: font YLWBJI+LucidaSans-Typewriter83 -%!FontType1-1.0: YLWBJI+LucidaSans-Typewriter83 +%%BeginResource: font APYGPQ+LucidaSans-Typewriter83 +%!FontType1-1.0: APYGPQ+LucidaSans-Typewriter83 12 dict begin /FontInfo 10 dict dup begin /Notice (Copyright (c) 1991 Bigelow & Holmes Inc. and Y&Y, Inc. (508) 371-3286. All Rights Reserved.) readonly def @@ -425,11 +425,11 @@ xpdf begin /UnderlinePosition 0 def /UnderlineThickness 0 def end readonly def -/FontName /YLWBJI+LucidaSans-Typewriter83 def +/FontName /APYGPQ+LucidaSans-Typewriter83 def /PaintType 0 def /FontType 1 def /FontMatrix [0.00083333 0 0 0.00083333 0 0] readonly def -/FontBBox [0 -205 602 783] readonly def +/FontBBox [0 -170 501 652] readonly def /StrokeWidth 0 def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for @@ -446,7 +446,7 @@ dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put -dup 45 /minus put +dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put @@ -716,159 +716,159 @@ FBF7023F2C0B36348145F92EF66D292BE48545C5555E670B5EFB973B29FFE465 8C8BB6F6742B14CD5F3E837A636DB41DD9C109E9771A2F8C7D7A7D12BBCF650A BB131F547A894CC90508A936EA97154E81443C052AD474592314BE31FBAB4A79 4C1992A35BAAE07F6816D542463726930BF25F75AD69AA44E90F55EC8A1AB06B -232EE37734835402F80EBD4E69C375D3E704B272CC7E2E6C812092E964D2A78D -A0CF906468847818EFD8E672B97CC730EB2436FF83DAD46F833D95A0EABC3AFE -7951E829846CB4CB8B2A64A31B86A1E8CF37AC69DC3E43914D73F3559AD19ED5 -5DE7A9BBE5372B8D7F6C06E28FE1363B1B77174F7E97497E98E495EE2F86CED7 -A22F0865DCEAC76FD32BD07072F6636C889A39B646AE1641CF717C70BE57EDB8 -24DB4F1D9C6B4453EF20711E2C33D6D51D7603D9E27999EBEE31BBBB96099D35 -1ED28E3D77B5028CB8245F9F1F085BD495985F61B6CE8CED485AB27FC2D794FC -5EECBE80BD5052927A9C7BB0E22741016FD77C05161A42984226ACE328CD7491 -878CE3F6D6134629AE55F1F8AAF5E8EC88B121D2F1850103485FFBD67C1F125B -60EBA8FAF5F8F6BCD056A2050EBC8A9BE882E51A12BA0EB984DDA5F036C74D9C -46BFE98DFD5AE9DF43DC7D2E6034F977B02D913B54B1F8CB7FA8EF3CB50FC5EC -4CED60F5F3A3424A0FBE73DFD2ACBA8BAE6EA148B2FEBE28FF278CD323C07AC9 -A2B110E495B78830DD0AB7DF1F59F2625F152434C463082FC4A8024A3EA832EF -CCDC136026BE3535624BF9388F6DAA69211BA803D28DD7F682316BE640B5DC60 -4F1C17CB2BED14D0E2D976BA9AD98D4A4BB32A5F4E0A4608F779D322AB69C0E0 -D3D946BC374AB7E58129F3C8F4139F41864A6F6B028489EECC5CF08B48B64AC8 -CDA15F607C46D0C84C338301118A1909C41EF10FDE679A3FF3BD43EAE0266C52 -55B90327121EAA3BFC28718549B69464C2A327B412B11A6A6226B4E71067F2E9 -D9AEBE4EE4197BCF55D79E09767680934D4E91F59007698152E26E47CD595996 -FA0C868118EB44D0EDFE8FDE630E0A7EAA32728840543C884A6CEC7CFED9A4FA -B438669A347B7E8F33CA026BE9D7DE3214DD7A8A9C2B721E6F8074A778294EE2 -D26BBF18385183D9BA7935BDC4920B39DB2A62377E236BB83A0937919F2EC120 -FEE0835B708352C7DED25FA895E667253C32335DED00EC040D75A28ED6B50076 -E4FC37CB853DD6A988348B0E9ECE5EBAA941647B11E99D449C4B367305B25E5F -875808BB6FA323998593B76EC7596969BA37E9CD0017B9FDBBDD1CAB935B6896 -423D6BAAC8110C443EF8BBC71F839CF4077C2B816B81940A04B07FA1A86021A2 -9D97745C980651014B2D879612549744F8F60C975B0AEA4F58DB91AEDABF590D -F3565AEE2A42881D52EAAF61A1E0258E529F7192B00005BA29E8DCABAF23CE64 -85B43F3EE8ED421A430295022518E77C7876B9398FC9228A53C5332AC36D7576 -4DEF2E02509C00A50CAEA4B2C22B4F316E85DC0F3B6B1BE11568005E8DC6B4F5 -CD4A74ED1A740B0B79873B6294B3053CC3B4588CD338F3BA38181DA87D50ED1E -8AE949573B74E2831223FC295196A0AFF9E374ADD0AB7C740AE433E22D5259CF -D42FC59A1AC0B9B807BAE8B4B5B85178F5DB5B5FA55F15E78F968DBAABEDA411 -815CB3299D75837957E10A294FB8755CF1639F25459242E9D9959549AE6FF26C -E7D0F8C9D157DE5567F74545FBBDDA11C66C308E823522CA56889D77DFF786D4 -8FA6EF10FCABB728E5EA13518E3738CC5D401253E62EA343D4C263D6C0E140EE -8069D3786BCD1282699A819FC230F4DD9AD1B7F6583456ED9BB16B27AF6C6BF5 -7533C843529343EB6AAE897F72AC8AD3AC2B86861F184DBA5954287DC6BDD479 -D609146AC26EA9CD5E6FA2D31AAB09E86BC096DC387C5113D372B0E229E59862 -D6E2C4CDF2CFD3493D615F554E3FCCB2D380B807A84285C79E824E8B01115B68 -90A7AD75B40659CF1E00C5C89DDE723311DB89F20582CC9488FE05753E4C0AF8 -F967AC02AED325221AFC0ADF26031746ED14017D1CCAA7876623B24B5574E821 -EBDB7D28D01E41207AE960B7074180257020E4DFE6E154C6CBCF4B0F76D4527D -F9AEE2796870D0CAD98E1C4C8E1812819CBD41DC23AFBB05590D99960F6A1FE4 -158C92ADE602291F10711FFDA3096574BEA51746F1912B3168BB8487C0D56AA7 -2E29F56BC39ADE17BB04FB5EDBADD1B1FDA28D94A25B6591868279CAD0EC57DC -EE6D87F27BE4CC137636F020CB67BB3FD49E81FF7A1BC743C34552A2225CAAD4 -F24DCCC5937AB1088F5971C626BEDD244187C6E502DBCF9AF99A8E94D70BFF34 -8DF971DD3D588095607654A4C68E294765B0ABF60CAF606C5820C15ABC981948 -0DEAF345D9512BED22C680297524FEF661F7631F411F49F7CBB1438CD638BAC9 -3DFD95364CF6B5A86866B71DB469BCBE84F4B18C58B83F3DB42F6DE0CDBE79AD -51B67782C26D2AA1EEDE9298B06B3DB501D69EA70ED1BBD458D56304D4977A90 -537C09A1315CDD3F05CD533C25BEBFA2C3A24120438259A1E6C852696D32B546 -0E5FC8730038DE7261DC9B68BF3B52420FE09212AC0F403992D3476F6B7EF59D -CD643F03DF57DEF1CEF074F9E2591753EE143ED8F8F0B2E42C7000855F7F06CA -8AC95D2985028298134EF9ED6035D9E300F78637A0C905000C6E1B7F0F1F681B -6B5EA55E69C078DF37BB9819B6E1807D241D167D6C2086D4367879E552416576 -6DB68C501F1C9DFFA32640B8DCA7CD767C3BD1703532428B7400BC8C38D5BC4D -7EF7F908220CCB7C67255AF40B184059175275B8F0FE08D28D82B32B99865863 -D2866C688C927FA70B00878DD16F529DB491D1D6456434BA54883D2EA1C81931 -7C4D71C8A29DC490307C2D9FC709BDAA0B1C07D096AB99B37ED474E510922002 -C0A1EDC4D0F790918E36929A23C2D47AE922520F844122220F0A25743E91CA91 -33933D5041151AA61D1ECCCA11CDA91861AB793A171B7F4F76D913626DCEC3A2 -A1F4F9D8B83D80B0BA340D7DEE1BDCB03291724468B4B6D2037791DC0ADD2090 -0A68AA2EFA4BA42C4F4C6E5FDA61981B12964259ACD12C6FD61B0FB34A5B1A53 -166CA665B5E11D1DC3F0C256B2A59C1E968825144DD00E6A635C26C8EFDC1C57 -D8A6A0D7EA6D94159DC424CDF940B98969F61A5B8D06FF6C0B5369FF0219DEEB -BB4AB771858F5201D7E1E1F3C2B029A6D4914718212CF04F9F9A8B5D64A39C50 -CFEB0683AA4B13EC31CFE436B07E3942DFCE3FF9D79A403B2B1CA5500D87302F -3F7320A9E3E584FA56DBB5E1BFAE1A5A8E46874EDD30F815670A8932B3A713F8 -750922840D0384FEBD43826CA3C4A907333E672DF7A83E56209BA1B29A792A0D -8FD3802E1865A520CD01412513CD3DB48B520BF6EF96619DB2EBDAB56E0C747D -54028E8D82838CA10605A47AA07512802E28E9474CAD997ED0F5073568F8FECB -52FEB3794DAED679953A1E09066783C3DB54BFB90615583E298E2BE6C789FE07 -6DD80318DD40D3EDD5D63CFD5E945380760572E5D05BA60538CFA1C824E67B62 -2A52ED82DEF28FD2C15BA114629652C549C371C6CDD4AC9744DEE55CFACC79D6 -FB4AEEDEF908689F10FB78BBF26AFF4C30F016D6EE7F12D93A99C5ABE16B5BFB -ED7E99BD8824CCE90EE8D79060FA838002DC4BDE312EB540805055294F581E02 -17EA11C2FEFFBF924842805C007060C5F8BDAA97986ADC70A1C2C767B8F8AA3D -513DE9316C366CC20FCC147DC28A9A4431378995456FEA61BCBAC8F4814EF566 -A09C20A97B44DC85FF402F6356FF4D41FBBC4B9E281F2558BC876E880F1D6E00 -EEBFE74389BD8DDA4DEB3EBABC1134B3A33084AE278F5A0958A94A9885184021 -C1687D37A0EE6D609E1C6F599237AFE90C0B662A26F7B77A49FC006669D147B2 -3E15E8168AEC8FC613A8AA4905C08049556B324EE55DABFDFAD2750C087752EE -4CEA95F9037DCFED7E65181A40FFC34E578235D6BFD6CFBBA7DB07C42FCF5A70 -4CC0AB4267076DF7C26FFF943856C47C181FECE3C71242FF486E90AAD89838B2 -5FD811C488BE6F554697C09F7A3689C4B70D34F659B6E83B3CFC4FC310C00D22 -E07ECCC0C2313AF5E00E0F905B943D241BA1804D89AA2359A1B69D765F99A475 -78B435E7E97542347D6088CB2E254E2B504D7A238D4E943E5656E0D07AA42D96 -B2AAAA498859DAA8FDDD2E466C43A86CA892EEA228DCFB9620E8B38C6DBC9090 -0C12A9B74005570FE9B3BABCC90E937F08783CA81177ABDFD50B26C7546B760D -70D725D0E6E84A4076DE94679D13FAA5E0A59048D9445C6E5C880E89BB629811 -7995A190396E414A191AE14796E0DD37E5F55DF3EEA519357E55126C0AB57F65 -AC1541A44701986EFC037029846B0908BCF35E50C8CE64150D39F6F9E766B244 -068625F647C3A821828623458BF1CC290D59409DDBC7F14497F3234119725A34 -E338EE9AF8F1D6367EAC19CFF7D0C9FF9D26222F3680DF6E5FE11683B099152D -1CE55AC55E8A5C66F9616B09835451595DA23F0B5685D56DCAAE57A91FEDBBD3 -32A021048E7B5F27B33E01C296E8376EACC74D544777205361165F04B9AC80E8 -A3842D72E54A2E3DCCE846DF8852B22F3F6D635E91EE25FF4BE11FC732BCEC3F -E512C9CEA9827CC632964ECFB6159E736D5F483D58F1380A6D6B5B69DA06957C -7C6050F7E9FCED0676749563321CC8B024059230018A038765C1C42E665B168C -850A919D5BFD33D25DE9097F073D0D20B41352D6A173DA87D3F14F622E856ECC -951CC137475D537A04BF0573DF6E7A4BE31B6936A22AB1CA29408EBAF1818333 -62D68005DD3C96BA2514CC0D7FF7CE7DC70E46E37FC4342999CBF2DBB3AFF11E -31BD273D3AD3C6CB2FEA548A412505B6B57C3A01D86DE68B4A6B38D8FA9D7257 -6AA9BB5F6928F5FC2170A92C029F270BFF0465E163FA9567A01B0343A6A26DCD -C572A7CAB93627D42053EC752209F724F249974C10DB889E56FE84CAD479758A -1877543B4BDA880D90A0D39CC1D681C87F3E2350EF7C088226E680E59DAC2C7C -70C67AD1584221C01444C6986A7C5D17C8FA8B941151957335DF4F3487A7C935 -E657A16D9C7FCBAF80FA2D18950E9B8EEF27B19F3CA257E5E45DC20EB505A5C5 -47904A5A11BFCDE407DC80B8E7465856F771945A4C131C1891CAED172711E435 -B2D4CD03AEEBFA6CD512DB3410F1762CAF16211CF33A63DEAEC9C5BC55EC0360 -C1B06C072EA39AAC802501E1A30BF2CFC7472A24A59FBA0215A2310101E3D950 -1EA78E3A2CA04F75D08CFA838A5A9C793EDECEBEBAF36F8B5ECBE66B4E47DFBD -7632C94EFE94689135735A05E1009EDA2C4EEAAD08673A98EEC613F9EE587150 -81AF6FC123FF11CDDCC075897DEB65DB03A2DE5615D456B4222864285C2046DD -3A06A64BDC38F1802E9AB386A1DCA85F69F82FBDC30854BD69748E1C948CC905 -DDF341CBBCD21E17F15028EDE13BE832A95DFD19E8B006B363B2C8F889395FBA -4E4ED0D676243ED8C5F26A94A56B6500668BA9D4DB4FC121F28ABF71A3D392D5 -CC5D51845ADA136BAEF21E3E7E02174E93C01816261A5410F874362DE48E4B32 -F74BB7C970D652694253CD5DDC1A060A0D29E555C2A3F29314D298834EDF8C2E -CE1035AF37E649349AE8BC6C1B5D0B19DCAD2603D66FE3AB30CBC811B66B9E56 -04B6FBB323D3DA968630C2662E3B137A0B693E684ED42BE64BBEB455349ABE08 -B3B7556E0D90E0ADE7A1FD0F0D895CF57CB54F4598D15DD9C2F75BF9FD6433D6 -FB2E4C9393E3D8CF42FEC2C252F0CDC7123187C8F66122E0AC10728BF126BE2B -21B195C31A4B6B0A3EBE4036253D256890A1FA7FEB8BDDF8F0BC9B37FF609D45 -5F8F1BA00182478950C72F5DA14772494BD08E238BB4B628F4493DFF40DEF43E -5CC7F61FBA102574E20FEEFB1850889888CCEC3FFF0FD03A6E4FEC28C79C91CA -C8E0B9EEB8DA1A9C39B58409E809BBD1F6B626072BA54AA0642F01E562BE8231 -94958F8D428C1719C8C6163172BCE32D608E93492F54E40CFFCC3C7582F62E54 -43D580BC1AB42DC235278A2E6F9E8E281D2AEABC2888E879F733B1AC8D466E40 -8CED3A3C8D73E07877EC615DE2FBC6BC2B332EA52AF1E509F93CA26EF5CAD8D4 -359C1CAA4A9270115F0BCCE07C86B0CFA6F55FE621B5949051149D8FF0583584 -ABD5008F5180BE8422A81DAF2D7226FCD1CA3BAE922669229680935F87D0F7B4 -E501C33178090AD11471DBC0B960760315DB6B312147C3157B20741AED4106C6 -A1642AAE9990CEE3E3BB497C0D23E647CA537AA40E9C5C880883E50A48346CCA -B032C7B217C4709CF7C26FFF94337E9A749558838CFD111E7B2E9FA34907BC32 -038B356AA9388B9641D5DEB451F7E957A2CD4A3F1230CAECF936CE32349D0844 -EF57831E02A4BE13B27F987F975B4952E2E5CC5FAAFC2C623CFDDD60FFEC32B4 -9E57654FA5B0F31B8728B8115A7702115D7B0BF53737D571F991B20FE46CA502 -B9323E2DD21F2389015052FB877A4043247B705E2FA82BEED78F7B52E14F50C2 -4254828740FED6168308368917434BF7DA33839246111EAD470C8ECB2C9E7501 -CAD9F27832AA2004697C5593C6DAF3A359EDD270F843360BA5C670D084B3E5DB -39CDD47C32D657B2AF8214CCEA7E6DF470DC95A394D66CCDB446F007DC234BAD -71164B048DCAA6C3E1FEA76177709E661008771D292F9A102D0B0848A7870AC1 -95D65AC6B097EDE74A2487D1A55609530E113F79DD25FEAB12A9789F6789FB5F -DBA76F13498A1B07E8209BEA2AF45682794A413C6A60096B84E7F3CBE8E13E18 -29A55F67CE95CB76E44FECCEC65A0D801EAB734480209EF74FA4833CF53EB82F -93D2C94C4BA8AFE4D52890BAFB5435EEC131BE98FB9149E0D9915E18BB8D74A3 -6F7EAEF4392F8546D9630016379AFE4287CA5FBBB48639C114E01D32C4967A53 -CE8F219B1EB0419128EEF2611866A956F9884A5C8334856848443AD43BD5A2DB -8309558159385D73B973F1094972A03E81B830420832ECAC15CC3DB3200BEC0D -7AF3A9FB61FCBCAB6B8C5F20065BC6F0 +232EE37734835402F80EBD4E69C375D3E704A38A6DCC903119A7E23217250899 +FA9F1F37773894E24C7054D4B736742FBB054CA11BA2D3F4C3BADC74A84C904D +6A83ED9B0BEA6694C35AE8CCB0D36B92DDFC9962D2C110D99C53CD82B57C855A +B7DB749998FF87F09C6DE41CC2302131B0876A2559E4C24FB292BB477839BD18 +05028C9D217AEFF5FA65147FE25C45E9AB9503C0C90DE3F6FB98284B41192882 +21572BD89F5E970D9ECFAC501145CD0FD0ABC38DA574C0E634B14149F3A80995 +2F6CEBA40F796D7765E629C7020A5F2E5F50ECA761629A52507344F027284E93 +97F9361949AE79D2F7D911AB1F4BA65168A682D09BBDB02979B71223175EC6DD +3FFD963B5D061B59181FCFA92434BA11A578CB8442AFCBA65580C69849A6EADD +8F1D2613362869F8E16D26770C001C1F55B93EA982B6C5CAC6BA6E92A95C03B3 +A8276A01E6FBDCADF623A538CEA34178B6690DF25563B350C18B816A724E2F7D +EB84ECDABF1C2D8AA75437368AA7041E02BFA94446AFD657B423AC4DAD19B2A1 +BDEE4F3A4BBCCE651986FC707BD35922488EC1F354A05EF6497B51277E75FCEE +92177CF4CEC6FCDAF8F899B9B9A71719493D537B7DC78B384487F6D4B898D2EF +99B796B4BED49575CBE63FE809B385FC6CC84AF3AA9F87121CF7D8BEA3C6E986 +A0781F7C920943F43C3F01981C13688F7904CA925A57C527149975371BE9AB45 +FBDB098AA2C62BDA5F44BB282D022DD64CB3FE1568AB770058E372A132456331 +71FDE3E5EA752F47931DD50BD2DC54E52C69EB63E21095DC53C056CBCC05A162 +B4950FFD705C1CE37BFB3E7426260469A80204CE9B68D1C127433ACE8C3FDB27 +FD6F9C6AD71662DA823259BC1B073F829750CB8C2A50E69799F1D58DA0CCBAA8 +EC92AF28104003E13AAEEA0BEEE540696613808D91319FB12E7812FBB2CAAEB3 +A2D3EC0E6D78E720176FD3938D4C62AE1678681E98B6F82F2772356DA8FB9D82 +EB298D383F7D0C3BE5D219DD0AC897B8A2E705F15B2F9AC9306BF39AB6F50BB1 +DADA17AB813BA25513DCA43E685D04D0B44CFC212366D3A1AFC58B4B18D3D4A9 +ECD8D864890F8C03A37E4BEA20866DEF9877065A2C3F666C2862922DC4A021AD +A75DB963BF97B8AFF3D63B89707C86B4E0E5B93BFCA9407021848444ED229F16 +0B2E8889AE97BD4AC2194546FF3555245087A98FEE7B2A38401C8BE18E9D7224 +5437ED0E4E2A8876E0C8633323A2E9A7CD8C704C858FD25311262EFC6534D7A8 +9E0857B5C6282E98938B5D8E216923B0A0A75D84B1807CDFEF19D33A15C47D2A +6DF303E5A179C1752489A9A5FBAF7F00077047551702CD0C08C30E79BAB4BBCA +10AD85AA96D1EC193E05C68B9D46E44B844CA8216A9F535B737606703F07EDEE +B3825E3473244C3F2C5EA13AFD2927C769E48B6A90B41A77D57ED5D1DE504461 +C6D373489B465F0F70F107EE46D5DCABDA14BEFDAA37CE0AF78D5F416AA1456E +3DA7E189860395CFF6236CEDBBC2E0189D3BB92FC5C958A63A641CBD415D2EAF +BC219AD89CA3A17DD335495FF452FBAF85BE0293D9E5E9927196192FE3CD25C2 +C461C62B001A3723A322AF77250B8AB1D83C16858E3FC30EFE7E338663AD9F84 +EC41DCC80171C45D187E8D5C2E7E431E899C4E0644E66958EBADA5F0F6E64D21 +B2539F89570D2C1F17CDBCF5F6CB16A9787C9A4834B2F2A516D909A141F2C614 +B4B7698315DEA7CF292A85578A127BD7E0CFC5D92C57B7EBB10111BA4165E32D +162A740EE2D921BD28B8A7300B198297A58C947919A8A64722764632D9390804 +EB5CB88B984E29A580AB26B544965E3143BCDD2EF47C2738364B3F896E76C1A9 +010B624DCB2EF607984D7657ACB93E87A4E5A280745975644ED00326C559570F +C5CF308F470074A121BDCF2CFB73E0B2A872EDDD0CE746B9DA409DEFC535EB20 +5EB9D59C076EBF6F94D31EBA64ED9BF53B69ECEF4AC19B4F9CFC0BC991581179 +94C3190C95E4F261468E0AB12BFC9C20E7B1C522959E7E761F6C5229EBCF3A86 +FCE964B1371DA44FD114FBF539608B82C6B40AF191818F8B9270530914021CCF +A9F233CF6431C7D23AED734BA58A3C5959E5A2F14FCBAEED5866BB194D8CE6CA +39ABC81C4961FAF1F6C8D66998A2861F0C42B5F95D21DE751130274176C6D363 +E832D3F711916611F6F409AA859A323183B4444EA38E79062F77F30C723A3FD9 +EC9D4D27C8C25555769B2226B66601F7DA8A94A02463E541D8352FCBDDBF1297 +BB482169E9C831640C7BA586DCF00125BC2A7448C384BA5EA898F91152FE0848 +70C084B63689E76B656231CE960D4CA628E1C070AD9A1CE3467DC83453D92E34 +2123676178D378B7D234A7280E83DBA97551467C9457BABEE8835FBB594D03F3 +0C7FF2FA6E308FE763C7C894259FA5D3C66814F6A4C3EFA30A7A4C3E081373EE +3C2EA9F831EA2A7BDDB473401CEFE0DF0EA110ECB4DDC952C05F74461BD3D9C6 +80E3BB0E6E1B6D0AAFBD5A524A3732940CB4854CDEFEC572FEEE79120D436E84 +4186D94ED3B9854450097DB09C514BFBF558BCE425003F6CEF7A5417C8960126 +BC49E6FE3CE87834CC68D540D8E12F502BD63972C802D9715ED49C7B52DE87DA +AA4710B679718F9A71C0A39085D972BE32596C509D27CE809F02960FA7560D66 +678BA0AF4D0A19CA679033B1217D852DB0B6768A6821C72321FA7194E5A62D99 +AF7AE2958947C9965A1838DB932444D886247EE953A1C8A7ED765BF1DE6CD137 +7C749F346437471DD0F0DCCE249D368608BDE06D1FBC1C0236AE40135687A8EC +6D084CDC52FB99D2963FCEF40DC6E0D23AD138F38813DB0AE9B7F731312B7831 +D84A6BA2AA09637C743F686AC572B97D8D72F825E522AD2E3B943476F664A8E9 +63313AE3DAF935EC8CA6B4FC9D396270D24D5705AD16564CBF21A9AA234B6C01 +C5B6C8CDAFF4E3462B74369FB0A63B1EB1DF9696EC7860B3F6E573E34D5E953A +0B25044729B9B19854EF5A3CABAA30D2A62F60588D7171A7732171EAF9EED5D5 +B9DB771F1AEEA1F8F658BBF35E31D88FE3511B9860154DC2A96C1C3FB233A716 +516F36767EBF1D6FECE4DDE153B4E538004E0B66FF827D52A72DDF4699D4EEED +960F974C6ED54F50D9608DEA1785164C73D0B25CA313B3630171177B8EA6A2DC +3D5704DF7A0CD5098BEE074480E862F18D47FBE0F6964125DF29C23D087D0F9A +25292369A7335F33210A4660F425EFD0FD0C3F6534A12ED913697ED4444FC93B +51CF9FFFC2AB8256303E690A71E9EA8B7766E282847681497B52C297F25E60A3 +79B1D70FE503F87E9EBB5FCF1FED71321A2D21B3BFAC5A17F66A2A5CC5BD6D0F +E968A013C33EFC735A161F340F56237CAC1B347F88A4D62249023F6763111497 +4A6F068F4A49B55791D039667EC08BEEECF3E919C4F29FAE5DECE224856FD035 +999318F9B69125586FE6972508505DDE0F129687AB056E5322C1D967FE606151 +71DC9FF6098CE976C0F7BEBD4A5B16E18C1E085894C43C4A1E311B1FA34B75AC +1F444AD9912718855B50CA02AE362D66643EBFF19EA6BE2C8EA4D4339D59C52B +BCBAC2375DF2219D9D56BAA08C4577FB159143886605FC91A09885F9C2E44064 +943BC2B9040E0031BC0744B89782BCDB129A4DDAE418A03FE6EE8705089CD7B3 +C87B18939CCE4361A4C1FFD24072E620D121EBEE435489E8907DF63FF2BD505B +FF50E33DD3B3258F32D96823BCFE4519C7B77C20D2AFE9D00036EFFCE8E586E9 +667891E4D513C3BDC4615AE8369FADF56829F68139416A40C65D736601E47B0C +793C8A7493FC11C9461685966FC974DE827E81ABBC881EAE43712C3DBA1AE5CE +BB1E7FDB696C3221681D75DD419972E6AAA0AF20F8B3826AACBD3B808BEBA198 +D90A5B27CB07C2F753AF493D1863BE77EC132A394F3DAF1F9E3DD07B6BC23765 +6A392A8611D16434BDA4CE27DE4BAA3DBF95BAA05C873CA0A36177F502F87E94 +75662F5368EC605F1E00A98F6B50FB7F522A26C1C9E73D025C3A6428DB735344 +64F704E272CC268798D13D0D93B619E550F1B80562A440E7F2462D9907AEC25F +F3A6E0A4D95B253E3144404DE918C1C40D79B578D8A2C85F943DDC9DB69727CB +957ACF72D67F50D228219C582C434B24C6E3AA6BF2A8194A85D775086929A82B +F0528989A483CE5C7723A2570529C1BDF292FDD988F59D80187A25C47501C2E3 +84C702FE7F4D6C4C6B41F778367897EC91D5A4F8A3FCF300FFA584127C3BC171 +730BCCBB51AD8A85A3810F846797476EA45C4E7A250215A79CD055BBF8B97BAE +DBEB87DA404BAE058875D793264C15010DDC6F6DBD9C45BC5307F6DB4AF867DF +236EBE6CECAA1CFD3CE15FE3EB91ACBDF5433AD03CB971E78823FABF2B3C3BA7 +8ADA62C7B4FB2E65F0D7D4411634645764E198861B589F8529DC2CB6B180889A +E35B5B1BAC735866A4C49A386C1A98A59343060D7995E7C86C3380E65670E94E +4B7C2D2FB94EBDE96773547CFA5053B3B31188BAA0B57A12A2FF6EE7945D5A17 +ED1FE90E30859D3E14EA58A9FD90D5514A115EF7B11C94ADEC8608F60F06D2B0 +46DC9861614ADBD91032A92543BDDF359DA8073FD08E64F9B4D0A7B1DFD6F52A +168E09CD5E2BF9EDA46E77AEA46C25BAC9E0D8220E30D92892426B964E894015 +2F0240EFB5D931EB16EE2423B659D360433A7DCEBA96C031FDA734F0C6E89ED3 +B00946763285821FD3A63D5E0153A4B02E5CC633F6979385C908E73DB718E004 +92105D0F71028D2CD5C0A3E3F06614716B2D48B4A51E9E9D77B058F38B0F7855 +EEC100CF05536D9AC7433A3BF58D4B068E923D4B471B9A0FDA85EECEC3ED9158 +389A10E55F4DE52D2EB5B3CB5D9CC1C24B51F1A19C2F629122B05C03FC8B2A57 +18B06EBDE41C4871BFB1E6A24A85535DF5E088B94EAD6222E07DE110F1B51DB0 +8C1586F7C9711317DF20336D6DE4A2C04A4A1B121F09A2C340B22CA9F26AE7A8 +616DDE1A2D87F9729F82E20BA099D1EAC7F726CCA9D5FA93092DC3886D2529A9 +41B75B58FF112B5F97BD4301627CB3DEE6DEFC44E0392874FB86C51CE77C1969 +2A66E623BF9A64265EF5A68C3B86EFEFEB04C920D16D9F9E037E9FCC621726D5 +69449BBCB0330CAC67F0597509316FE77395FD3ACA40FFDE9CF1976DDF047674 +93683ADF1B1EF9977B03DBF04B2D213C5A67FBA1F99F752C217D672117B9087A +6A5DDA70150BF9988514E786D28336B903B3C96A746E911D7155E49470DC2F37 +41D47249C723DC2E1846A35A67820DEFCCC9462B67B26201EA4D5625CE2DE401 +D186126A214ADCB090CA7D8DAED3A1D8FABCDD8DFE1F0837CCC087A486622C2C +281CC8260608D0896A49019EDF7FDF57D5CE0279E7F491E8370B4954779B4B53 +C6D7B6E2F349283AA0467D9BB06FDDD321BA05F988C5518DA8E48D66D24136BC +271123C27D43408927F0DCBC5DB8D8CAD7E61C46BEEE70F137B087A6899EB040 +145D9AD63C840BC5D030ACDBE4B87A23AF641A64E796336FB31B00B0674AA9CD +B19BDFF46C93DDBA27ED0D8BBF5E6DD642736D594B616C3B26A59C463FB4253A +136DDD4592D6223940C98E4BCE603CCD05D30B3A26B1A4B2C8BEEC799E61907B +855B2CE81549AF2EA116F9DD3A35446CD662EFF77C49DB0BF7B3BBF496D750B6 +E2025B2F041092F322ECF8CD037C5829568CCDE9823BF7F37756DFB7F6D05CC0 +E5B6B6F95A839DF60F9CA9E03AE4E9944ECC2957141606326763789EE4B4D7FC +154A7C3C509362E80D9D2E84967E60B2A14940B08805625EA09988A68BE7AACB +6770F8C05B472FF649514CB7DADE001B7B85E5A849ABC018F34E59292A527A99 +1E2734A3D8D3EF87CDD665814A7CFCB663ACEE51E9E61BF232FFD8F917A5AE70 +57ACF846460F772202A834BE3DB233E117DCFC0A039E04AE30EB0AA3C773CE6A +9EA4E2686283660E068FF095BC780A6F1D4857D7C0789D599798AAF9C71AB082 +6555100BC97C54577AD82D5E063017207922DBE0BF744D51E31A921B27954B60 +95B3695098C47CD0996438CC0F89198ABCA22FEEC261BD0C0B617DC02F553837 +4DD1EC502C935A8DDAF7C73791D7DA2764AA3863D43A5E3EF39AB099CA249A7C +D4CAE2FB83851EFE6863256E432D5F0DC898029C3A069C6EFB8C342B8507182A +44292E6F4E75397621A3DF4F94557AA746C9049B5B86ECE49BFA031F30B3D505 +D42215F78BD2D50E86142B28C2B06A2FD427E5F1C569E58587BB3B531AD4E8AD +10065410A4B3BFEF97070CC87FCAB12C9F0FCB5F1716E00975B2EBE522586123 +A7C33B060079D22EF11DD55A719819AF9CA90B587A11C56F8F9A846BCDB3C930 +AD1E3A490DA0643CB34758E109DD6C91B22C2AD4859101DB53723D3C9C48CC41 +7FF3D9FE1FE57922335D28EC50F0CEE33DCF55A87A0FD383EBDC3D33C8FFFBC7 +05D658873D655635A841C5D8A52294A060DA01A586F63E3EACF1AC7941CDAA7A +1A4DDF5DC5018186B40713A69B759150B3BC3561CA963516783A7BF2D182CFD6 +2529AC360ABDD6863B33C84B3DE527E64E5F1C0B72BAF23B1FF7276773FC2951 +523ACE4D620FC9A1FC5966ABC74D421DAA156B9955B579C781AD87124687BBA2 +DD1116F80D7F6980E10CC387AFF901B19F6CD0667C82932D9123287301A5FD9E +660D5F9E5ABB4A42936BC6DDAE92198CF969FB3D397BA6B1DFE1233752272225 +2B8F0BF0765ED694D50D0BE4F8C09F85713E37E85A3BFD559DAF869E3B6ECF7E +080D71A25B2FF6E38D966C75233D12E3C15A8B4002A985DE92DACB4AD2F6D9C9 +69B09914EC2719A160CDF0BD16E56898B0BD07C1B7747D1C6E591FD66DE00A64 +C5ACDE5D0488D9AAC392DAD684B5F681A554CD6EA6159B6807D861E2FAB69482 +DDB29C8D046AD8A6707BC19DD9494B8E44 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -879,13 +879,13 @@ CE8F219B1EB0419128EEF2611866A956F9884A5C8334856848443AD43BD5A2DB 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource -/F8_0 /YLWBJI+LucidaSans-Typewriter83 1 1 +/F8_0 /APYGPQ+LucidaSans-Typewriter83 1 1 [ /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright - /parenleft/parenright/asterisk/plus/comma/minus/period/slash + /parenleft/parenright/asterisk/plus/comma/hyphen/period/slash /zero/one/two/three/four/five/six/seven /eight/nine/colon/semicolon/less/equal/greater/question /at/A/B/C/D/E/F/G @@ -955,7 +955,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 README Page 1) 144.161 Tj +(Aug 30 21:46 2009 README Page 1) 144.161 Tj 0 -28.4801 Td (xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson\ 's Unix) 305.796 Tj @@ -1059,7 +1059,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 table of contents Page 1) 192.2146 Tj +(Aug 30 21:46 2009 table of contents Page 1) 192.2146 Tj 0 -28.4801 Td (The numbers to the left of the file names in the table are shee\ t numbers.) 318.9016 Tj @@ -1074,148 +1074,148 @@ t numbers.) 318.9016 Tj d sheet numbers.) 345.1126 Tj 0 -85.4403 Td (# basic headers) 65.5277 Tj -209.536 -85.4403 Td -(51 pipe.c) 39.3166 Tj +-4514.2 TJm +(# system calls) 61.1592 Tj +-5015.87 TJm +(# pipes) 30.5796 Tj 0 -94.9336 Td (01 types.h) 43.6851 Tj -7022.54 TJm -(# system calls) 61.1592 Tj +(24 traps.h) 43.6851 Tj +-7022.54 TJm +(51 pipe.c) 39.3166 Tj 0 -104.427 Td (01 param.h) 43.6851 Tj -7022.54 TJm -(24 traps.h) 43.6851 Tj --7022.54 TJm -(# string operations) 83.0018 Tj +(24 vectors.pl) 56.7907 Tj 0 -113.9204 Td (02 defs.h) 39.3166 Tj -7524.2 TJm -(24 vectors.pl) 56.7907 Tj --5517.54 TJm -(53 string.c) 48.0537 Tj +(25 trapasm.S) 52.4222 Tj +-6019.2 TJm +(# string operations) 83.0018 Tj 0 -123.4137 Td (04 x86.h) 34.9481 Tj -8025.87 TJm -(25 trapasm.S) 52.4222 Tj +(25 trap.c) 39.3166 Tj +-7524.2 TJm +(53 string.c) 48.0537 Tj 0 -132.9071 Td (06 asm.h) 34.9481 Tj -8025.87 TJm -(25 trap.c) 39.3166 Tj --7524.2 TJm -(# low-level hardware) 87.3703 Tj +(27 syscall.h) 52.4222 Tj 0 -142.4004 Td (06 mmu.h) 34.9481 Tj -8025.87 TJm -(27 syscall.h) 52.4222 Tj +(27 syscall.c) 52.4222 Tj -6019.2 TJm -(54 mp.h) 30.5796 Tj +(# low-level hardware) 87.3703 Tj 0 -151.8938 Td (08 elf.h) 34.9481 Tj -8025.87 TJm -(27 syscall.c) 52.4222 Tj --6019.2 TJm -(55 mp.c) 30.5796 Tj -104.768 -161.3872 Td (29 sysproc.c) 52.4222 Tj -6019.2 TJm -(56 lapic.c) 43.6851 Tj +(54 mp.h) 30.5796 Tj +209.536 -161.3872 Td +(55 mp.c) 30.5796 Tj 0 -170.8805 Td (# startup) 39.3166 Tj -209.536 -170.8805 Td -(58 ioapic.c) 48.0537 Tj +-7524.2 TJm +(# file system) 56.7907 Tj +-5517.54 TJm +(56 lapic.c) 43.6851 Tj 0 -180.3739 Td (09 bootasm.S) 52.4222 Tj -6019.2 TJm -(# file system) 56.7907 Tj --5517.54 TJm -(59 picirq.c) 48.0537 Tj +(30 buf.h) 34.9481 Tj +-8025.87 TJm +(58 ioapic.c) 48.0537 Tj 0 -189.8672 Td (10 bootother.S) 61.1592 Tj -5015.87 TJm -(30 buf.h) 34.9481 Tj --8025.87 TJm -(61 kbd.h) 34.9481 Tj +(30 fcntl.h) 43.6851 Tj +-7022.54 TJm +(59 picirq.c) 48.0537 Tj 0 -199.3606 Td (11 bootmain.c) 56.7907 Tj -5517.54 TJm -(30 fcntl.h) 43.6851 Tj --7022.54 TJm -(62 kbd.c) 34.9481 Tj +(31 stat.h) 39.3166 Tj +-7524.2 TJm +(61 kbd.h) 34.9481 Tj 0 -208.854 Td (12 main.c) 39.3166 Tj -7524.2 TJm -(31 stat.h) 39.3166 Tj --7524.2 TJm -(63 console.c) 52.4222 Tj -104.768 -218.3473 Td (31 fs.h) 30.5796 Tj -8527.54 TJm -(66 timer.c) 43.6851 Tj +(62 kbd.c) 34.9481 Tj +104.768 -218.3473 Td +(32 file.h) 39.3166 Tj +-7524.2 TJm +(63 console.c) 52.4222 Tj 0 -227.8407 Td (# locks) 30.5796 Tj -8527.54 TJm -(32 file.h) 39.3166 Tj +(33 ide.c) 34.9481 Tj +-8025.87 TJm +(66 timer.c) 43.6851 Tj 0 -237.334 Td (13 spinlock.h) 56.7907 Tj -5517.54 TJm -(33 ide.c) 34.9481 Tj --8025.87 TJm -(# user-level) 52.4222 Tj +(35 bio.c) 34.9481 Tj 0 -246.8274 Td (13 spinlock.c) 56.7907 Tj -5517.54 TJm -(35 bio.c) 34.9481 Tj --8025.87 TJm -(67 initcode.S) 56.7907 Tj -104.768 -256.3208 Td (36 fs.c) 30.5796 Tj -8527.54 TJm -(67 usys.S) 39.3166 Tj +(# user-level) 52.4222 Tj +104.768 -256.3208 Td +(44 file.c) 39.3166 Tj +-7524.2 TJm +(67 initcode.S) 56.7907 Tj 0 -265.8141 Td (# processes) 48.0537 Tj -6520.87 TJm -(44 file.c) 39.3166 Tj --7524.2 TJm -(68 init.c) 39.3166 Tj +(45 sysfile.c) 52.4222 Tj +-6019.2 TJm +(67 usys.S) 39.3166 Tj 0 -275.3075 Td (15 proc.h) 39.3166 Tj -7524.2 TJm -(45 sysfile.c) 52.4222 Tj --6019.2 TJm -(68 sh.c) 30.5796 Tj +(50 exec.c) 39.3166 Tj +-7524.2 TJm +(68 init.c) 39.3166 Tj 0 -284.8008 Td (16 proc.c) 39.3166 Tj --7524.2 TJm -(50 exec.c) 39.3166 Tj +209.536 -284.8008 Td +(68 sh.c) 30.5796 Tj 0 -294.2942 Td (22 swtch.S) 43.6851 Tj 0 -303.7876 Td (22 kalloc.c) 48.0537 Tj --6520.87 TJm -(# pipes) 30.5796 Tj -0 -332.2673 Td +0 -341.7606 Td (The source listing is preceded by a cross-reference that lists \ every defined ) 336.3756 Tj -0 -341.7606 Td +0 -351.2539 Td (constant, struct, global variable, and function in xv6. Each e\ ntry gives,) 323.2701 Tj -0 -351.254 Td +0 -360.7473 Td (on the same line as the name, the line number \(or, in a few ca\ ses, numbers\)) 327.6386 Tj -0 -360.7473 Td +0 -370.2406 Td (where the name is defined. Successive lines in an entry list t\ he line) 305.796 Tj -0 -370.2407 Td +0 -379.734 Td (numbers where the name is used. For example, this entry:) 249.0053 Tj -17.4613 -389.2274 Td -(swtch 2256) 43.6851 Tj -34.9226 -398.7208 Td -(0311 1928 1962 2255) 83.0018 Tj +17.4613 -398.7207 Td +(swtch 2208) 43.6851 Tj 34.9226 -408.2141 Td -(2256) 17.4741 Tj --0 -427.2008 Td -(indicates that swtch is defined on line 2256 and is mentioned o\ +(0318 1928 1967 2207) 83.0018 Tj +34.9226 -417.7074 Td +(2208) 17.4741 Tj +-0 -436.6941 Td +(indicates that swtch is defined on line 2208 and is mentioned o\ n five lines) 327.6386 Tj --0 -436.6942 Td +-0 -446.1875 Td (on sheets 03, 19, and 22.) 109.2129 Tj Q Q @@ -1264,207 +1264,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 1) 187.8461 Tj +(Aug 30 21:46 2009 cross-references Page 1) 187.8461 Tj 0 -28.4801 Td (acquire 1373) 52.4222 Tj --14045.3 TJm -(3460 3479 3618) 61.1592 Tj +-12038.8 TJm +(bmap 4010) 39.3166 Tj 17.4613 -37.9735 Td -(0321 1373 1377 1759) 83.0018 Tj --6520.6 TJm -(bfree 3730) 43.6851 Tj +(0321 1373 1377 1744) 83.0018 Tj +-8527.14 TJm +(4010 4036 4119 4169) 83.0018 Tj 17.4613 -47.4664 Td (1917 1975 2018 2033) 83.0018 Tj -8527.14 TJm -(3730 4062 4072 4075) 83.0018 Tj +(4222) 17.4741 Tj 17.4613 -56.9594 Td (2066 2079 2123 2158) 83.0018 Tj -6520.6 TJm -(bget 3566) 39.3166 Tj +(bootmain 1116) 56.7907 Tj 17.4613 -66.4524 Td (2315 2362 2616 2971) 83.0018 Tj -8527.14 TJm -(3566 3596 3606) 61.1592 Tj +(0976 1116) 39.3166 Tj 17.4613 -75.9453 Td (3407 3465 3570 3629) 83.0018 Tj -6520.6 TJm -(binit 3539) 43.6851 Tj +(bootothers 1267) 65.5277 Tj 17.4613 -85.4383 Td (3857 3890 3910 3939) 83.0018 Tj -8527.14 TJm -(0210 1229 3539) 61.1592 Tj +(1210 1236 1267) 61.1592 Tj 17.4613 -94.9313 Td -(3954 3964 4424 4440) 83.0018 Tj +(3954 3964 4425 4441) 83.0018 Tj -6520.6 TJm -(bmap 4010) 39.3166 Tj +(BPB 3188) 34.9481 Tj 17.4613 -104.4243 Td (4456 5213 5234 5255) 83.0018 Tj -8527.14 TJm -(4010 4036 4119 4169) 83.0018 Tj +(3188 3191 3712 3714) 83.0018 Tj 17.4613 -113.9172 Td (6360 6516 6558 6606) 83.0018 Tj -8527.14 TJm -(4222) 17.4741 Tj +(3740) 17.4741 Tj 0 -123.4106 Td -(allocproc 1754) 61.1592 Tj +(allocproc 1739) 61.1592 Tj -11035.5 TJm -(bootmain 1116) 56.7907 Tj +(bread 3602) 43.6851 Tj 17.4613 -132.9039 Td -(1754 1807 1860) 61.1592 Tj +(1739 1785 1838) 61.1592 Tj -11035.5 TJm -(0976 1116) 39.3166 Tj +(0211 3602 3682 3693) 83.0018 Tj 0 -142.3973 Td (alltraps 2506) 56.7907 Tj --11537.1 TJm -(bootothers 1267) 65.5277 Tj +-13543.7 TJm +(3713 3739 3811 3832) 83.0018 Tj 17.4613 -151.8907 Td (2459 2467 2480 2485) 83.0018 Tj -8527.14 TJm -(1210 1236 1267) 61.1592 Tj +(3917 4026 4068 4119) 83.0018 Tj 17.4613 -161.3836 Td (2505 2506) 39.3166 Tj --11537.3 TJm -(BPB 3188) 34.9481 Tj +-13543.8 TJm +(4169 4222) 39.3166 Tj 0 -170.877 Td (ALT 6110) 34.9481 Tj --16052 TJm -(3188 3191 3712 3714) 83.0018 Tj +-14045.5 TJm +(brelse 3624) 48.0537 Tj 17.4613 -180.3703 Td (6110 6138 6140) 61.1592 Tj -11035.5 TJm -(3740) 17.4741 Tj +(0212 3624 3627 3684) 83.0018 Tj 0 -189.8633 Td (argfd 4563) 43.6851 Tj --13042.1 TJm -(bread 3602) 43.6851 Tj +-15048.7 TJm +(3696 3719 3723 3746) 83.0018 Tj 17.4613 -199.3567 Td (4563 4606 4621 4633) 83.0018 Tj -8527.14 TJm -(0211 3602 3682 3693) 83.0018 Tj +(3817 3820 3841 3925) 83.0018 Tj 17.4613 -208.8497 Td (4644 4656) 39.3166 Tj -13543.8 TJm -(3713 3739 3811 3832) 83.0018 Tj +(4032 4074 4122 4173) 83.0018 Tj 0 -218.343 Td (argint 2794) 48.0537 Tj -14547 TJm -(3917 4026 4068 4119) 83.0018 Tj +(4233 4237) 39.3166 Tj 17.4613 -227.8364 Td (0339 2794 2808 2824) 83.0018 Tj --8527.14 TJm -(4169 4222) 39.3166 Tj +-6520.6 TJm +(BSIZE 3158) 43.6851 Tj 17.4613 -237.3293 Td (2931 2956 2969 4568) 83.0018 Tj --6520.6 TJm -(brelse 3624) 48.0537 Tj +-8527.14 TJm +(3158 3168 3182 3188) 83.0018 Tj 17.4613 -246.8223 Td (4621 4633 4858 4921) 83.0018 Tj -8527.14 TJm -(0212 3624 3627 3684) 83.0018 Tj +(3694 4119 4120 4121) 83.0018 Tj 17.4613 -256.3153 Td (4922 4957) 39.3166 Tj -13543.8 TJm -(3696 3719 3723 3746) 83.0018 Tj +(4165 4166 4169 4170) 83.0018 Tj 0 -265.8086 Td (argptr 2804) 48.0537 Tj -14547 TJm -(3817 3820 3841 3925) 83.0018 Tj +(4171 4221 4222 4224) 83.0018 Tj 17.4613 -275.302 Td (0340 2804 4621 4633) 83.0018 Tj --8527.14 TJm -(4032 4074 4122 4173) 83.0018 Tj +-6520.6 TJm +(buf 3000) 34.9481 Tj 17.4613 -284.795 Td (4656 4982) 39.3166 Tj -13543.8 TJm -(4233 4237) 39.3166 Tj +(0200 0211 0212 0213) 83.0018 Tj 0 -294.2883 Td (argstr 2821) 48.0537 Tj --12540.5 TJm -(BSIZE 3158) 43.6851 Tj +-14547 TJm +(0253 3000 3004 3005) 83.0018 Tj 17.4613 -303.7817 Td (0341 2821 4668 4758) 83.0018 Tj -8527.14 TJm -(3158 3168 3182 3188) 83.0018 Tj +(3006 3310 3325 3328) 83.0018 Tj 17.4613 -313.2747 Td (4858 4906 4920 4935) 83.0018 Tj -8527.14 TJm -(3694 4119 4120 4121) 83.0018 Tj +(3375 3404 3454 3456) 83.0018 Tj 17.4613 -322.7676 Td (4957) 17.4741 Tj -16052.1 TJm -(4165 4166 4169 4170) 83.0018 Tj +(3459 3527 3531 3535) 83.0018 Tj 0 -332.2606 Td (BACK 6861) 39.3166 Tj -15550.3 TJm -(4171 4221 4222 4224) 83.0018 Tj +(3541 3553 3565 3568) 83.0018 Tj 17.4613 -341.754 Td (6861 6974 7120 7389) 83.0018 Tj --6520.6 TJm -(buf 3000) 34.9481 Tj +-8527.14 TJm +(3601 3604 3614 3624) 83.0018 Tj 0 -351.2473 Td (backcmd 6896 7114) 74.2647 Tj -11537 TJm -(0200 0211 0212 0213) 83.0018 Tj +(3669 3680 3691 3707) 83.0018 Tj 17.4613 -360.7407 Td (6896 6909 6975 7114) 83.0018 Tj -8527.14 TJm -(0253 3000 3004 3005) 83.0018 Tj +(3732 3805 3829 3904) 83.0018 Tj 17.4613 -370.2337 Td (7116 7242 7355 7390) 83.0018 Tj -8527.14 TJm -(3006 3310 3325 3328) 83.0018 Tj +(4013 4057 4105 4155) 83.0018 Tj 0 -379.727 Td (BACKSPACE 6450) 61.1592 Tj -13042 TJm -(3375 3404 3454 3456) 83.0018 Tj +(4215 6328 6339 6342) 83.0018 Tj 17.4613 -389.2204 Td (6450 6467 6526 6532) 83.0018 Tj -8527.14 TJm -(3459 3527 3531 3535) 83.0018 Tj +(6345 6503 6524 6537) 83.0018 Tj 0 -398.7137 Td (balloc 3704) 48.0537 Tj -14547 TJm -(3541 3553 3565 3568) 83.0018 Tj +(6568 6601 6608 6984) 83.0018 Tj 17.4613 -408.2071 Td (3704 3725 4017 4025) 83.0018 Tj -8527.14 TJm -(3601 3604 3614 3624) 83.0018 Tj +(6987 6988 6989 7003) 83.0018 Tj 17.4613 -417.7001 Td (4029) 17.4741 Tj -16052.1 TJm -(3669 3680 3691 3707) 83.0018 Tj +(7015 7016 7019 7020) 83.0018 Tj 0 -427.1934 Td (BBLOCK 3191) 48.0537 Tj -14547 TJm -(3732 3805 3829 3904) 83.0018 Tj +(7021 7025) 39.3166 Tj 17.4613 -436.6868 Td (3191 3713 3739) 61.1592 Tj --11035.5 TJm -(4013 4057 4105 4155) 83.0018 Tj +-9028.94 TJm +(bwrite 3614) 48.0537 Tj 0 -446.1801 Td -(B_BUSY 3009) 48.0537 Tj --14547 TJm -(4215 6327 6338 6341) 83.0018 Tj +(bfree 3730) 43.6851 Tj +-15048.7 TJm +(0213 3614 3617 3695) 83.0018 Tj 17.4613 -455.6735 Td -(3009 3458 3576 3577) 83.0018 Tj +(3730 4062 4072 4075) 83.0018 Tj -8527.14 TJm -(6344 6503 6524 6537) 83.0018 Tj -17.4613 -465.1665 Td -(3588 3591 3616 3626) 83.0018 Tj --8527.14 TJm -(6568 6601 6608 6984) 83.0018 Tj -17.4613 -474.6594 Td -(3638) 17.4741 Tj --16052.1 TJm -(6987 6988 6989 7003) 83.0018 Tj -0 -484.1528 Td -(B_DIRTY 3011) 52.4222 Tj --14045.3 TJm -(7015 7016 7019 7020) 83.0018 Tj -17.4613 -493.6462 Td -(3011 3387 3416 3421) 83.0018 Tj --8527.14 TJm -(7021 7025) 39.3166 Tj +(3718 3745 3816 3840) 83.0018 Tj +0 -465.1669 Td +(bget 3566) 39.3166 Tj +-15550.3 TJm +(4030 4172) 39.3166 Tj +17.4613 -474.6598 Td +(3566 3596 3606) 61.1592 Tj +-9028.94 TJm +(bzero 3689) 43.6851 Tj +0 -484.1532 Td +(binit 3539) 43.6851 Tj +-15048.7 TJm +(3689 3736) 39.3166 Tj +17.4613 -493.6466 Td +(0210 1229 3539) 61.1592 Tj +-9028.94 TJm +(B_BUSY 3009) 48.0537 Tj Q Q q @@ -1481,207 +1481,207 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 2) 187.8461 Tj -0 -28.4801 Td -(B_VALID 3010) 52.4222 Tj --14045.3 TJm +(Aug 30 21:46 2009 cross-references Page 2) 187.8461 Tj +17.4613 -28.4801 Td +(3009 3458 3576 3577) 83.0018 Tj +-8527.14 TJm (7394) 17.4741 Tj 17.4613 -37.9735 Td -(3010 3420 3460 3479) 83.0018 Tj +(3588 3591 3616 3626) 83.0018 Tj -6520.6 TJm (CONSOLE 3290) 52.4222 Tj -17.4613 -47.4664 Td -(3607) 17.4741 Tj +17.4613 -47.4668 Td +(3638) 17.4741 Tj -16052.1 TJm (3290 6621 6622) 61.1592 Tj -0 -56.9598 Td -(bwrite 3614) 48.0537 Tj --12540.5 TJm +0 -56.9602 Td +(B_DIRTY 3011) 52.4222 Tj +-12038.8 TJm (consoleinit 6616) 69.8962 Tj -17.4613 -66.4531 Td -(0213 3614 3617 3695) 83.0018 Tj +17.4613 -66.4535 Td +(3011 3387 3416 3421) 83.0018 Tj -8527.14 TJm (0216 1222 6616) 61.1592 Tj -17.4613 -75.9461 Td -(3718 3745 3816 3840) 83.0018 Tj --6520.6 TJm +17.4613 -75.9469 Td +(3460 3479 3618) 61.1592 Tj +-9028.94 TJm (consoleintr 6512) 69.8962 Tj -17.4613 -85.4391 Td -(4030 4172) 39.3166 Tj --13543.8 TJm +0 -85.4403 Td +(B_VALID 3010) 52.4222 Tj +-14045.3 TJm (0218 6298 6512) 61.1592 Tj -0 -94.9324 Td -(bzero 3689) 43.6851 Tj --13042.1 TJm +17.4613 -94.9336 Td +(3010 3420 3460 3479) 83.0018 Tj +-6520.6 TJm (consoleread 6551) 69.8962 Tj -17.4613 -104.4258 Td -(3689 3736) 39.3166 Tj --13543.8 TJm +17.4613 -104.427 Td +(3607) 17.4741 Tj +-16052.1 TJm (6551 6622) 39.3166 Tj -0 -113.9192 Td +0 -113.9203 Td (C 6131 6509) 48.0537 Tj -12540.5 TJm (consolewrite 6601) 74.2647 Tj -17.4613 -123.4125 Td +17.4613 -123.4137 Td (6131 6179 6204 6205) 83.0018 Tj -8527.14 TJm (6601 6621) 39.3166 Tj -17.4613 -132.9055 Td +17.4613 -132.9071 Td (6206 6207 6208 6210) 83.0018 Tj -6520.6 TJm (consputc 6487) 56.7907 Tj -17.4613 -142.3985 Td +17.4613 -142.4004 Td (6509 6519 6522 6529) 83.0018 Tj -8527.14 TJm -(6314 6344 6366 6384) 83.0018 Tj -17.4613 -151.8914 Td +(6315 6345 6366 6384) 83.0018 Tj +17.4613 -151.8938 Td (6539 6569) 39.3166 Tj -13543.8 TJm (6387 6391 6392 6487) 83.0018 Tj -0 -161.3848 Td +0 -161.3871 Td (CAPSLOCK 6112) 56.7907 Tj -13543.7 TJm (6526 6532 6538 6608) 83.0018 Tj -17.4613 -170.8782 Td +17.4613 -170.8805 Td (6112 6145 6286) 61.1592 Tj -9028.94 TJm (context 1518) 52.4222 Tj -0 -180.3715 Td +0 -180.3739 Td (cgaputc 6455) 52.4222 Tj -14045.3 TJm (0201 0318 1518 1537) 83.0018 Tj -17.4613 -189.8645 Td +17.4613 -189.8668 Td (6455 6496) 39.3166 Tj -13543.8 TJm -(1559 1678 1787 1788) 83.0018 Tj -0 -199.3578 Td +(1559 1678 1771 1772) 83.0018 Tj +0 -199.3602 Td (cli 0521) 34.9481 Tj -16052 TJm -(1789 1790 1928 1967) 83.0018 Tj -17.4613 -208.8512 Td +(1773 1774 1928 1967) 83.0018 Tj +17.4613 -208.8535 Td (0521 0523 0915 1029) 83.0018 Tj -6520.6 TJm (cprintf 6352) 52.4222 Tj -17.4613 -218.3442 Td +17.4613 -218.3469 Td (1460 6406 6490) 61.1592 Tj -11035.5 TJm (0217 1224 1258 1262) 83.0018 Tj -0 -227.8375 Td +0 -227.8403 Td (cmd 6865) 34.9481 Tj -16052 TJm (1676 1680 1682 2286) 83.0018 Tj -17.4613 -237.3309 Td +17.4613 -237.3336 Td (6865 6877 6886 6887) 83.0018 Tj -8527.14 TJm (2375 2637 2645 2650) 83.0018 Tj -17.4613 -246.8239 Td +17.4613 -246.827 Td (6892 6893 6898 6902) 83.0018 Tj -8527.14 TJm -(2882 3410 5637 5761) 83.0018 Tj -17.4613 -256.3168 Td +(2882 3410 5619 5639) 83.0018 Tj +17.4613 -256.3203 Td (6906 6915 6918 6923) 83.0018 Tj -8527.14 TJm -(5912 6352 6408 6409) 83.0018 Tj -17.4613 -265.8098 Td +(5761 5912 6352 6408) 83.0018 Tj +17.4613 -265.8137 Td (6931 6937 6941 6951) 83.0018 Tj -8527.14 TJm -(6410 6413) 39.3166 Tj -17.4613 -275.3028 Td +(6409 6410 6413) 61.1592 Tj +17.4613 -275.3071 Td (6975 6977 7052 7055) 83.0018 Tj -6520.6 TJm -(cpu 1557 5751) 56.7907 Tj -17.4613 -284.7958 Td +(cpu 1557) 34.9481 Tj +17.4613 -284.8004 Td (7057 7058 7059 7060) 83.0018 Tj -8527.14 TJm -(0256 0269 1207 1224) 83.0018 Tj -17.4613 -294.2887 Td +(0256 1207 1224 1258) 83.0018 Tj +17.4613 -294.2938 Td (7063 7064 7066 7068) 83.0018 Tj -8527.14 TJm -(1255 1256 1258 1262) 83.0018 Tj -17.4613 -303.7817 Td +(1260 1262 1271 1306) 83.0018 Tj +17.4613 -303.7871 Td (7069 7070 7071 7072) 83.0018 Tj -8527.14 TJm -(1271 1279 1306 1365) 83.0018 Tj -17.4613 -313.2747 Td +(1365 1386 1408 1446) 83.0018 Tj +17.4613 -313.2805 Td (7073 7074 7075 7076) 83.0018 Tj -8527.14 TJm -(1389 1408 1446 1557) 83.0018 Tj -17.4613 -322.7676 Td +(1461 1462 1470 1472) 83.0018 Tj +17.4613 -322.7739 Td (7079 7080 7082 7084) 83.0018 Tj -8527.14 TJm -(1568 1577 1705 1707) 83.0018 Tj -17.4613 -332.2606 Td +(1557 1568 1577 1705) 83.0018 Tj +17.4613 -332.2672 Td (7085 7086 7087 7088) 83.0018 Tj -8527.14 TJm -(2615 2637 2638 2645) 83.0018 Tj -17.4613 -341.7536 Td +(1715 1724 1725 1726) 83.0018 Tj +17.4613 -341.7606 Td (7089 7100 7101 7103) 83.0018 Tj -8527.14 TJm -(2646 2650 2651 5512) 83.0018 Tj -17.4613 -351.2465 Td +(1727 1728 1729 1928) 83.0018 Tj +17.4613 -351.2539 Td (7105 7106 7107 7108) 83.0018 Tj -8527.14 TJm -(5513 5751 5761 6408) 83.0018 Tj -17.4613 -360.7395 Td +(1959 1966 1967 1968) 83.0018 Tj +17.4613 -360.7473 Td (7109 7110 7113 7114) 83.0018 Tj --6520.6 TJm -(CR0_PE 0910 1024) 69.8962 Tj -17.4613 -370.2325 Td +-8527.14 TJm +(2615 2637 2638 2645) 83.0018 Tj +17.4613 -370.2407 Td (7116 7118 7119 7120) 83.0018 Tj -8527.14 TJm -(0956 1056) 39.3166 Tj -17.4613 -379.7255 Td +(2646 2650 2651 5512) 83.0018 Tj +17.4613 -379.734 Td (7121 7122 7212 7213) 83.0018 Tj --6520.6 TJm -(create 4801) 48.0537 Tj -17.4613 -389.2184 Td -(7214 7215 7217 7221) 83.0018 Tj -8527.14 TJm -(4801 4821 4834 4838) 83.0018 Tj -17.4613 -398.7114 Td +(5513 5761 6408) 61.1592 Tj +17.4613 -389.2274 Td +(7214 7215 7217 7221) 83.0018 Tj +-6520.6 TJm +(cpunum 5751) 48.0537 Tj +17.4613 -398.7207 Td (7224 7230 7231 7234) 83.0018 Tj -8527.14 TJm -(4862 4906 4923) 61.1592 Tj -17.4613 -408.2044 Td +(0269 1255 1256 1279) 83.0018 Tj +17.4613 -408.2141 Td (7237 7239 7242 7246) 83.0018 Tj --6520.6 TJm -(CRTPORT 6451) 52.4222 Tj -17.4613 -417.6973 Td -(7248 7250 7253 7255) 83.0018 Tj -8527.14 TJm -(6451 6460 6461 6462) 83.0018 Tj -17.4613 -427.1903 Td +(1707 5751 5923 5932) 83.0018 Tj +17.4613 -417.7075 Td +(7248 7250 7253 7255) 83.0018 Tj +-6520.6 TJm +(CR0_PE 0910 1024) 69.8962 Tj +17.4613 -427.2008 Td (7258 7260 7263 7264) 83.0018 Tj -8527.14 TJm -(6463 6479 6480 6481) 83.0018 Tj -17.4613 -436.6833 Td +(0956 1056) 39.3166 Tj +17.4613 -436.6942 Td (7275 7278 7281 7285) 83.0018 Tj --8527.14 TJm -(6482) 17.4741 Tj -17.4613 -446.1762 Td -(7300 7303 7308 7312) 83.0018 Tj -6520.6 TJm -(CTL 6109) 34.9481 Tj -17.4613 -455.6692 Td +(create 4801) 48.0537 Tj +17.4613 -446.1875 Td +(7300 7303 7308 7312) 83.0018 Tj +-8527.14 TJm +(4801 4821 4834 4838) 83.0018 Tj +17.4613 -455.6809 Td (7313 7316 7321 7322) 83.0018 Tj -8527.14 TJm -(6109 6135 6139 6285) 83.0018 Tj -17.4613 -465.1622 Td +(4862 4906 4923) 61.1592 Tj +17.4613 -465.1743 Td (7328 7337 7338 7344) 83.0018 Tj -6520.6 TJm -(devsw 3283) 43.6851 Tj -17.4613 -474.6552 Td +(CRTPORT 6451) 52.4222 Tj +17.4613 -474.6676 Td (7345 7351 7352 7361) 83.0018 Tj -8527.14 TJm -(3283 3288 4108 4110) 83.0018 Tj -17.4613 -484.1481 Td +(6451 6460 6461 6462) 83.0018 Tj +17.4613 -484.161 Td (7364 7366 7372 7373) 83.0018 Tj -8527.14 TJm -(4158 4160 4406 6621) 83.0018 Tj -17.4613 -493.6411 Td +(6463 6479 6480 6481) 83.0018 Tj +17.4613 -493.6543 Td (7378 7384 7390 7391) 83.0018 Tj -8527.14 TJm -(6622) 17.4741 Tj +(6482) 17.4741 Tj Q Q Q @@ -1729,207 +1729,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 3) 187.8461 Tj +(Aug 30 21:46 2009 cross-references Page 3) 187.8461 Tj 0 -28.4801 Td +(CTL 6109) 34.9481 Tj +-16052 TJm +(0302 2104 2140 2605) 83.0018 Tj +17.4613 -37.9735 Td +(6109 6135 6139 6285) 83.0018 Tj +-8527.14 TJm +(2609 2659 2668 2916) 83.0018 Tj +0 -47.4664 Td +(devsw 3283) 43.6851 Tj +-15048.7 TJm +(6715 6718 6761 6826) 83.0018 Tj +17.4613 -56.9598 Td +(3283 3288 4108 4110) 83.0018 Tj +-8527.14 TJm +(6831 6916 6925 6935) 83.0018 Tj +17.4613 -66.4531 Td +(4158 4160 4407 6621) 83.0018 Tj +-8527.14 TJm +(6980 7028 7035) 61.1592 Tj +17.4613 -75.9465 Td +(6622) 17.4741 Tj +-14045.6 TJm +(fdalloc 4582) 52.4222 Tj +0 -85.4399 Td (dinode 3172) 48.0537 Tj -14547 TJm (4582 4608 4874 4987) 83.0018 Tj -17.4613 -37.9735 Td +17.4613 -94.9332 Td (3172 3182 3806 3812) 83.0018 Tj -6520.6 TJm (fetchint 2766) 56.7907 Tj -17.4613 -47.4664 Td +17.4613 -104.4266 Td (3830 3833 3905 3918) 83.0018 Tj -8527.14 TJm (0342 2766 2796 4963) 83.0018 Tj -0 -56.9598 Td +0 -113.9199 Td (dirent 3203) 48.0537 Tj -12540.5 TJm (fetchstr 2778) 56.7907 Tj -17.4613 -66.4531 Td +17.4613 -123.4133 Td (3203 4216 4223 4224) 83.0018 Tj -8527.14 TJm (0343 2778 2826 4969) 83.0018 Tj -17.4613 -75.9461 Td +17.4613 -132.9067 Td (4255 4705 4754) 61.1592 Tj -9028.94 TJm (file 3250) 39.3166 Tj -0 -85.4395 Td +0 -142.4 Td (dirlink 4252) 52.4222 Tj -14045.3 TJm (0202 0225 0226 0227) 83.0018 Tj -17.4613 -94.9328 Td +17.4613 -151.8934 Td (0234 4252 4267 4275) 83.0018 Tj -8527.14 TJm (0229 0230 0231 0287) 83.0018 Tj -17.4613 -104.4258 Td +17.4613 -161.3867 Td (4684 4833 4837 4838) 83.0018 Tj -8527.14 TJm -(1540 3250 3671 4403) 83.0018 Tj -0 -113.9192 Td +(1540 3250 3671 4404) 83.0018 Tj +0 -170.8801 Td (dirlookup 4212) 61.1592 Tj -13042 TJm -(4409 4419 4422 4425) 83.0018 Tj -17.4613 -123.4125 Td +(4410 4420 4423 4426) 83.0018 Tj +17.4613 -180.3735 Td (0235 4212 4219 4259) 83.0018 Tj -8527.14 TJm -(4437 4438 4452 4454) 83.0018 Tj -17.4613 -132.9055 Td +(4438 4439 4452 4454) 83.0018 Tj +17.4613 -189.8668 Td (4374 4770 4811) 61.1592 Tj -11035.5 TJm (4476 4502 4522 4557) 83.0018 Tj -0 -142.3989 Td +0 -199.3602 Td (DIRSIZ 3201) 48.0537 Tj -14547 TJm (4563 4566 4582 4603) 83.0018 Tj -17.4613 -151.8922 Td +17.4613 -208.8535 Td (3201 3205 4205 4272) 83.0018 Tj -8527.14 TJm (4617 4629 4642 4653) 83.0018 Tj -17.4613 -161.3852 Td +17.4613 -218.3469 Td (4328 4329 4391 4665) 83.0018 Tj -8527.14 TJm -(4855 4979 5155 5170) 83.0018 Tj -17.4613 -170.8782 Td +(4855 4979 5156 5171) 83.0018 Tj +17.4613 -227.8403 Td (4755 4805) 39.3166 Tj -13543.8 TJm -(6309 6878 6933 6934) 83.0018 Tj -0 -180.3715 Td +(6310 6878 6933 6934) 83.0018 Tj +0 -237.3336 Td (DPL_USER 0711) 56.7907 Tj -13543.7 TJm (7064 7072 7272) 61.1592 Tj -17.4613 -189.8645 Td -(0711 1725 1726 1817) 83.0018 Tj +17.4613 -246.827 Td +(0711 1724 1725 1795) 83.0018 Tj -6520.6 TJm -(filealloc 4420) 61.1592 Tj -17.4613 -199.3575 Td -(1818 2572 2658 2667) 83.0018 Tj +(filealloc 4421) 61.1592 Tj +17.4613 -256.3203 Td +(1796 2572 2658 2667) 83.0018 Tj -8527.14 TJm -(0225 4420 4874 5176) 83.0018 Tj -0 -208.8508 Td +(0225 4421 4874 5177) 83.0018 Tj +0 -265.8137 Td (E0ESC 6116) 43.6851 Tj -13042.1 TJm (fileclose 4452) 61.1592 Tj -17.4613 -218.3442 Td +17.4613 -275.3071 Td (6116 6270 6274 6275) 83.0018 Tj -8527.14 TJm (0226 2115 4452 4458) 83.0018 Tj -17.4613 -227.8372 Td +17.4613 -284.8004 Td (6277 6280) 39.3166 Tj -13543.8 TJm (4647 4876 4990 4991) 83.0018 Tj -0 -237.3305 Td +0 -294.2938 Td (elfhdr 0855) 48.0537 Tj -14547 TJm (5204 5206) 39.3166 Tj -17.4613 -246.8239 Td +17.4613 -303.7871 Td (0855 1118 1123 5014) 83.0018 Tj -6520.6 TJm -(filedup 4438) 52.4222 Tj -0 -256.3172 Td +(filedup 4439) 52.4222 Tj +0 -313.2805 Td (ELF_MAGIC 0852) 61.1592 Tj -13042 TJm -(0227 1880 4438 4442) 83.0018 Tj -17.4613 -265.8106 Td +(0227 1858 4439 4443) 83.0018 Tj +17.4613 -322.7739 Td (0852 1129 5028) 61.1592 Tj -11035.5 TJm (4610) 17.4741 Tj -0 -275.304 Td +0 -332.2668 Td (ELF_PROG_LOAD 0886) 78.6333 Tj -9028.81 TJm -(fileinit 4413) 56.7907 Tj -17.4613 -284.7973 Td +(fileinit 4414) 56.7907 Tj +17.4613 -341.7602 Td (0886 5036 5067) 61.1592 Tj -11035.5 TJm -(0228 1230 4413) 61.1592 Tj -0 -294.2907 Td +(0228 1230 4414) 61.1592 Tj +0 -351.2536 Td (EOI 5663) 34.9481 Tj -14045.5 TJm (fileread 4502) 56.7907 Tj -17.4613 -303.784 Td +17.4613 -360.7469 Td (5663 5734 5775) 61.1592 Tj -11035.5 TJm (0229 4502 4517 4623) 83.0018 Tj -0 -313.2774 Td +0 -370.2403 Td (ERROR 5681) 43.6851 Tj -13042.1 TJm (filestat 4476) 56.7907 Tj -17.4613 -322.7707 Td +17.4613 -379.7336 Td (5681 5727) 39.3166 Tj -13543.8 TJm (0230 4476 4658) 61.1592 Tj -0 -332.2637 Td +0 -389.227 Td (ESR 5666) 34.9481 Tj -14045.5 TJm (filewrite 4522) 61.1592 Tj -17.4613 -341.7571 Td +17.4613 -398.7204 Td (5666 5730 5731) 61.1592 Tj -11035.5 TJm (0231 4522 4537 4635) 83.0018 Tj -0 -351.2504 Td -(exec 5009) 39.3166 Tj --13543.8 TJm -(FL_IF 0660) 43.6851 Tj -17.4613 -360.7438 Td -(0222 4972 5009 6768) 83.0018 Tj --8527.14 TJm -(0660 1462 1468 1821) 83.0018 Tj -17.4613 -370.2368 Td -(6829 6830 6926 6927) 83.0018 Tj --8527.14 TJm -(1963 5758) 39.3166 Tj -0 -379.7301 Td +0 -408.2137 Td (EXEC 6857) 39.3166 Tj -13543.8 TJm -(fork 1854) 39.3166 Tj -17.4613 -389.2235 Td +(FL_IF 0660) 43.6851 Tj +17.4613 -417.7071 Td (6857 6922 7059 7365) 83.0018 Tj -8527.14 TJm -(0303 1854 2910 6760) 83.0018 Tj -0 -398.7168 Td +(0660 1462 1468 1799) 83.0018 Tj +0 -427.2004 Td +(exec 5009) 39.3166 Tj +-15550.3 TJm +(1963 5758) 39.3166 Tj +17.4613 -436.6938 Td +(0222 4972 5009 6768) 83.0018 Tj +-6520.6 TJm +(fork 1832) 39.3166 Tj +17.4613 -446.1872 Td +(6829 6830 6926 6927) 83.0018 Tj +-8527.14 TJm +(0303 1832 2910 6760) 83.0018 Tj +0 -455.6805 Td (execcmd 6869 7053) 74.2647 Tj -11537 TJm (6823 6825 7043 7045) 83.0018 Tj -17.4613 -408.2102 Td +17.4613 -465.1739 Td (6869 6910 6923 7053) 83.0018 Tj -6520.6 TJm (fork1 7039) 43.6851 Tj -17.4613 -417.7032 Td +17.4613 -474.6672 Td (7055 7321 7327 7328) 83.0018 Tj -8527.14 TJm (6900 6942 6954 6961) 83.0018 Tj -17.4613 -427.1962 Td +17.4613 -484.1606 Td (7356 7366) 39.3166 Tj -13543.8 TJm (6976 7024 7039) 61.1592 Tj -0 -436.6895 Td +0 -493.654 Td (exit 2104) 39.3166 Tj -13543.8 TJm (forkret 1984) 52.4222 Tj -17.4613 -446.1829 Td -(0302 2104 2140 2605) 83.0018 Tj --8527.14 TJm -(1616 1790 1984) 61.1592 Tj -17.4613 -455.6758 Td -(2609 2659 2668 2916) 83.0018 Tj --6520.6 TJm -(gatedesc 0801) 56.7907 Tj -17.4613 -465.1688 Td -(6715 6718 6761 6826) 83.0018 Tj --8527.14 TJm -(0464 0467 0801 2560) 83.0018 Tj -17.4613 -474.6618 Td -(6831 6916 6925 6935) 83.0018 Tj --6520.6 TJm -(getcallerpcs 1426) 74.2647 Tj -17.4613 -484.1548 Td -(6980 7028 7035) 61.1592 Tj --11035.5 TJm -(0322 1390 1426 1678) 83.0018 Tj -0 -493.6481 Td -(fdalloc 4582) 52.4222 Tj --14045.3 TJm -(6411) 17.4741 Tj Q Q q @@ -1946,207 +1946,207 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 4) 187.8461 Tj -0 -28.4801 Td +(Aug 30 21:46 2009 cross-references Page 4) 187.8461 Tj +17.4613 -28.4801 Td +(1616 1774 1984) 61.1592 Tj +-9028.94 TJm +(IDE_CMD_WRITE 3318) 78.6333 Tj +0 -37.9735 Td +(gatedesc 0801) 56.7907 Tj +-13543.7 TJm +(3318 3388) 39.3166 Tj +17.4613 -47.4664 Td +(0464 0467 0801 2560) 83.0018 Tj +-6520.6 TJm +(IDE_DF 3314) 48.0537 Tj +0 -56.9598 Td +(getcallerpcs 1426) 74.2647 Tj +-11537 TJm +(3314 3338) 39.3166 Tj +17.4613 -66.4531 Td +(0322 1387 1426 1678) 83.0018 Tj +-6520.6 TJm +(IDE_DRDY 3313) 56.7907 Tj +17.4613 -75.9465 Td +(6411) 17.4741 Tj +-16052.1 TJm +(3313 3336) 39.3166 Tj +0 -85.4399 Td (getcmd 6984) 48.0537 Tj -12540.5 TJm -(idestart 3375) 56.7907 Tj -17.4613 -37.9735 Td +(IDE_ERR 3315) 52.4222 Tj +17.4613 -94.9332 Td (6984 7015) 39.3166 Tj -13543.8 TJm -(3328 3375 3378 3426) 83.0018 Tj -0 -47.4664 Td -(gettoken 7156) 56.7907 Tj --13543.7 TJm -(3475) 17.4741 Tj -17.4613 -56.9598 Td -(7156 7241 7245 7257) 83.0018 Tj --6520.6 TJm -(idewait 3332) 52.4222 Tj -17.4613 -66.4531 Td -(7270 7271 7307 7311) 83.0018 Tj --8527.14 TJm -(3332 3358 3380 3416) 83.0018 Tj -17.4613 -75.9465 Td -(7333) 17.4741 Tj --14045.6 TJm -(idtinit 2578) 52.4222 Tj -0 -85.4399 Td -(growproc 1834) 56.7907 Tj --13543.7 TJm -(0351 1259 2578) 61.1592 Tj -17.4613 -94.9332 Td -(0304 1834 2959) 61.1592 Tj --9028.94 TJm -(idup 3888) 39.3166 Tj +(3315 3338) 39.3166 Tj 0 -104.4266 Td +(gettoken 7156) 56.7907 Tj +-11537.1 TJm +(idtinit 2578) 52.4222 Tj +17.4613 -113.9199 Td +(7156 7241 7245 7257) 83.0018 Tj +-8527.14 TJm +(0351 1259 2578) 61.1592 Tj +17.4613 -123.4133 Td +(7270 7271 7307 7311) 83.0018 Tj +-6520.6 TJm +(idup 3888) 39.3166 Tj +17.4613 -132.9067 Td +(7333) 17.4741 Tj +-16052.1 TJm +(0237 1859 3888 4361) 83.0018 Tj +0 -142.4 Td +(growproc 1812) 56.7907 Tj +-11537.1 TJm +(iget 3853) 39.3166 Tj +17.4613 -151.8934 Td +(0304 1812 2959) 61.1592 Tj +-11035.5 TJm +(3794 3818 3853 3873) 83.0018 Tj +0 -161.3867 Td (havedisk1 3327) 61.1592 Tj -13042 TJm -(0237 1881 3888 4361) 83.0018 Tj -17.4613 -113.9199 Td +(4234 4359) 39.3166 Tj +17.4613 -170.8801 Td (3327 3364 3462) 61.1592 Tj -9028.94 TJm -(iget 3853) 39.3166 Tj -0 -123.4133 Td +(iinit 3789) 43.6851 Tj +0 -180.3735 Td (holding 1444) 52.4222 Tj -14045.3 TJm -(3794 3818 3853 3873) 83.0018 Tj -17.4613 -132.9067 Td -(0323 1376 1404 1444) 83.0018 Tj --8527.14 TJm -(4234 4359) 39.3166 Tj -17.4613 -142.4 Td -(1957) 17.4741 Tj --14045.6 TJm -(iinit 3789) 43.6851 Tj -0 -151.8934 Td -(ialloc 3802) 48.0537 Tj --14547 TJm (0238 1231 3789) 61.1592 Tj -17.4613 -161.3867 Td -(0236 3802 3822 4820) 83.0018 Tj +17.4613 -189.8664 Td +(0323 1376 1404 1444) 83.0018 Tj -6520.6 TJm (ilock 3902) 43.6851 Tj -17.4613 -170.8801 Td -(4821) 17.4741 Tj +17.4613 -199.3598 Td +(1957) 17.4741 Tj -16052.1 TJm (0239 3902 3908 3928) 83.0018 Tj -0 -180.3735 Td -(IBLOCK 3185) 48.0537 Tj +0 -208.8532 Td +(ialloc 3802) 48.0537 Tj -14547 TJm (4364 4479 4511 4531) 83.0018 Tj -17.4613 -189.8664 Td -(3185 3811 3832 3917) 83.0018 Tj +17.4613 -218.3465 Td +(0236 3802 3822 4820) 83.0018 Tj -8527.14 TJm (4672 4683 4693 4762) 83.0018 Tj -0 -199.3598 Td -(I_BUSY 3277) 48.0537 Tj --14547 TJm +17.4613 -227.8399 Td +(4821) 17.4741 Tj +-16052.1 TJm (4774 4809 4813 4823) 83.0018 Tj -17.4613 -208.8532 Td -(3277 3911 3913 3936) 83.0018 Tj --8527.14 TJm +0 -237.3332 Td +(IBLOCK 3185) 48.0537 Tj +-14547 TJm (4867 4937 5023 6563) 83.0018 Tj -17.4613 -218.3465 Td -(3940 3957 3959) 61.1592 Tj --11035.5 TJm +17.4613 -246.8266 Td +(3185 3811 3832 3917) 83.0018 Tj +-8527.14 TJm (6583 6610) 39.3166 Tj -0 -227.8399 Td +0 -256.32 Td (ICRHI 5674) 43.6851 Tj -13042.1 TJm (inb 0403) 34.9481 Tj -17.4613 -237.3332 Td +17.4613 -265.8133 Td (5674 5737 5821 5833) 83.0018 Tj -8527.14 TJm (0403 0928 0936 1154) 83.0018 Tj -0 -246.8266 Td +0 -275.3067 Td (ICRLO 5667) 43.6851 Tj -15048.7 TJm -(3336 3363 5646 6264) 83.0018 Tj -17.4613 -256.32 Td +(3336 3363 5647 6264) 83.0018 Tj +17.4613 -284.8 Td (5667 5738 5739 5822) 83.0018 Tj -8527.14 TJm (6267 6461 6463) 61.1592 Tj -17.4613 -265.8133 Td +17.4613 -294.2934 Td (5824 5834) 39.3166 Tj -11537.3 TJm (initlock 1361) 56.7907 Tj -0 -275.3067 Td +0 -303.7868 Td (ID 5660) 30.5796 Tj -174.613 -275.3067 Td +174.613 -303.7868 Td (0324 1361 1622 2283) 83.0018 Tj -17.461 -284.8 Td +17.461 -313.2801 Td (5660 5693 5766) 61.1592 Tj -11035.5 TJm (2574 3355 3543 3791) 83.0018 Tj --0.0003 -294.2934 Td -(IDE_BSY 3312) 52.4222 Tj --14045.3 TJm -(4415 5184 6618 6619) 83.0018 Tj -17.461 -303.7868 Td -(3312 3336) 39.3166 Tj --11537.3 TJm -(inode 3263) 43.6851 Tj --0.0003 -313.2801 Td -(IDE_CMD_READ 3317) 74.2647 Tj --11537 TJm -(0203 0234 0235 0236) 83.0018 Tj -17.461 -322.7735 Td -(3317 3391) 39.3166 Tj --13543.8 TJm -(0237 0239 0240 0241) 83.0018 Tj --0.0003 -332.2664 Td -(IDE_CMD_WRITE 3318) 78.6333 Tj --11035.3 TJm -(0242 0243 0245 0246) 83.0018 Tj -17.461 -341.7598 Td -(3318 3388) 39.3166 Tj --13543.8 TJm -(0247 0248 0249 1541) 83.0018 Tj --0.0003 -351.2532 Td -(IDE_DF 3314) 48.0537 Tj --14547 TJm -(3256 3263 3284 3285) 83.0018 Tj -17.461 -360.7465 Td -(3314 3338) 39.3166 Tj --13543.8 TJm -(3674 3785 3794 3801) 83.0018 Tj --0.0003 -370.2399 Td -(IDE_DRDY 3313) 56.7907 Tj --13543.7 TJm -(3827 3852 3855 3861) 83.0018 Tj -17.461 -379.7332 Td -(3313 3336) 39.3166 Tj --13543.8 TJm -(3887 3888 3902 3934) 83.0018 Tj --0.0003 -389.2266 Td -(IDE_ERR 3315) 52.4222 Tj --14045.3 TJm -(3952 3974 4010 4054) 83.0018 Tj -17.461 -398.72 Td -(3315 3338) 39.3166 Tj --13543.8 TJm -(4085 4102 4152 4211) 83.0018 Tj --0.0003 -408.2133 Td +-0.0003 -322.7735 Td (ideinit 3351) 52.4222 Tj -14045.3 TJm -(4212 4252 4256 4353) 83.0018 Tj -17.461 -417.7067 Td +(4416 5185 6618 6619) 83.0018 Tj +17.461 -332.2664 Td (0251 1232 3351) 61.1592 Tj --11035.5 TJm -(4356 4388 4395 4666) 83.0018 Tj --0.0003 -427.2 Td +-9028.94 TJm +(inode 3263) 43.6851 Tj +-0.0003 -341.7598 Td (ideintr 3402) 52.4222 Tj -14045.3 TJm -(4702 4753 4800 4804) 83.0018 Tj -17.461 -436.6934 Td +(0203 0234 0235 0236) 83.0018 Tj +17.461 -351.2532 Td (0252 2624 3402) 61.1592 Tj -11035.5 TJm -(4856 4904 4915 4933) 83.0018 Tj --0.0003 -446.1868 Td +(0237 0239 0240 0241) 83.0018 Tj +-0.0003 -360.7465 Td (idelock 3324) 52.4222 Tj -14045.3 TJm -(5015 6551 6601) 61.1592 Tj -17.461 -455.6801 Td +(0242 0243 0245 0246) 83.0018 Tj +17.461 -370.2399 Td (3324 3355 3407 3409) 83.0018 Tj --6520.6 TJm -(INPUT_BUF 6500) 61.1592 Tj -17.461 -465.1735 Td +-8527.14 TJm +(0247 0248 0249 1541) 83.0018 Tj +17.461 -379.7332 Td (3428 3465 3480 3482) 83.0018 Tj -8527.14 TJm -(6500 6503 6524 6536) 83.0018 Tj --0.0003 -474.6665 Td +(3256 3263 3284 3285) 83.0018 Tj +-0.0003 -389.2266 Td (iderw 3454) 43.6851 Tj -15048.7 TJm -(6537 6539 6568) 61.1592 Tj -17.461 -484.1598 Td +(3674 3785 3794 3801) 83.0018 Tj +17.461 -398.72 Td (0253 3454 3459 3461) 83.0018 Tj --6520.6 TJm -(insl 0412) 39.3166 Tj -17.461 -493.6532 Td +-8527.14 TJm +(3827 3852 3855 3861) 83.0018 Tj +17.461 -408.2133 Td (3608 3619) 39.3166 Tj -13543.8 TJm -(0412 0414 1173 3417) 83.0018 Tj +(3887 3888 3902 3934) 83.0018 Tj +-0.0003 -417.7067 Td +(idestart 3375) 56.7907 Tj +-13543.7 TJm +(3952 3974 4010 4054) 83.0018 Tj +17.461 -427.2 Td +(3328 3375 3378 3426) 83.0018 Tj +-8527.14 TJm +(4085 4102 4152 4211) 83.0018 Tj +17.461 -436.6934 Td +(3475) 17.4741 Tj +-16052.1 TJm +(4212 4252 4256 4353) 83.0018 Tj +-0.0003 -446.1868 Td +(idewait 3332) 52.4222 Tj +-14045.3 TJm +(4356 4388 4395 4666) 83.0018 Tj +17.461 -455.6801 Td +(3332 3358 3380 3416) 83.0018 Tj +-8527.14 TJm +(4702 4753 4800 4804) 83.0018 Tj +-0.0003 -465.1735 Td +(IDE_BSY 3312) 52.4222 Tj +-14045.3 TJm +(4856 4904 4915 4933) 83.0018 Tj +17.461 -474.6665 Td +(3312 3336) 39.3166 Tj +-13543.8 TJm +(5015 6551 6601) 61.1592 Tj +-0.0003 -484.1598 Td +(IDE_CMD_READ 3317) 74.2647 Tj +-9530.47 TJm +(INPUT_BUF 6500) 61.1592 Tj +17.461 -493.6532 Td +(3317 3391) 39.3166 Tj +-13543.8 TJm +(6500 6503 6524 6536) 83.0018 Tj Q Q Q @@ -2194,207 +2194,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 5) 187.8461 Tj -0 -28.4801 Td +(Aug 30 21:46 2009 cross-references Page 5) 187.8461 Tj +17.4613 -28.4801 Td +(6537 6539 6568) 61.1592 Tj +-9028.94 TJm +(IRQ_SLAVE 5960) 61.1592 Tj +0 -37.9735 Td +(insl 0412) 39.3166 Tj +-15550.3 TJm +(5960 5964 6002 6017) 83.0018 Tj +17.4613 -47.4664 Td +(0412 0414 1173 3417) 83.0018 Tj +-6520.6 TJm +(IRQ_SPURIOUS 2436) 74.2647 Tj +0 -56.9598 Td (INT_DISABLED 5869) 74.2647 Tj -11537 TJm (2436 2636 5707) 61.1592 Tj -17.4613 -37.9735 Td +17.4613 -66.4531 Td (5869 5917) 39.3166 Tj -11537.3 TJm (IRQ_TIMER 2431) 61.1592 Tj -0 -47.4664 Td -(ioapic 5877) 48.0537 Tj +0 -75.9465 Td +(IOAPIC 5858) 48.0537 Tj -14547 TJm (2431 2614 2663 5714) 83.0018 Tj -17.4613 -56.9598 Td -(5607 5627 5628 5874) 83.0018 Tj --8527.14 TJm -(6680) 17.4741 Tj -17.4613 -66.4531 Td -(5877 5886 5887 5893) 83.0018 Tj --6520.6 TJm -(isdirempty 4702) 65.5277 Tj -17.4613 -75.9465 Td -(5894 5908) 39.3166 Tj --13543.8 TJm -(4702 4709 4778) 61.1592 Tj -0 -85.4399 Td -(IOAPIC 5858) 48.0537 Tj --12540.5 TJm -(ismp 5514) 39.3166 Tj -17.4613 -94.9332 Td +17.4613 -85.4399 Td (5858 5908) 39.3166 Tj -13543.8 TJm -(0277 1233 5514 5613) 83.0018 Tj -0 -104.4266 Td +(6680) 17.4741 Tj +0 -94.9332 Td +(ioapic 5877) 48.0537 Tj +-12540.5 TJm +(isdirempty 4702) 65.5277 Tj +17.4613 -104.4266 Td +(5607 5629 5630 5874) 83.0018 Tj +-8527.14 TJm +(4702 4709 4778) 61.1592 Tj +17.4613 -113.9199 Td +(5877 5886 5887 5893) 83.0018 Tj +-6520.6 TJm +(ismp 5514) 39.3166 Tj +17.4613 -123.4133 Td +(5894 5908) 39.3166 Tj +-13543.8 TJm +(0277 1233 5514 5612) 83.0018 Tj +0 -132.9067 Td (ioapicenable 5923) 74.2647 Tj -11537 TJm (5905 5925) 39.3166 Tj -17.4613 -113.9199 Td +17.4613 -142.4 Td (0256 3357 5923 6626) 83.0018 Tj -6520.6 TJm (itrunc 4054) 48.0537 Tj -0 -123.4133 Td +0 -151.8934 Td (ioapicid 5516) 56.7907 Tj -13543.7 TJm (3674 3961 4054) 61.1592 Tj -17.4613 -132.9067 Td -(0257 5516 5628 5911) 83.0018 Tj +17.4613 -161.3867 Td +(0257 5516 5630 5911) 83.0018 Tj -6520.6 TJm (iunlock 3934) 52.4222 Tj -17.4613 -142.4 Td +17.4613 -170.8801 Td (5912) 17.4741 Tj -16052.1 TJm (0241 3934 3937 3976) 83.0018 Tj -0 -151.8934 Td +0 -180.3735 Td (ioapicinit 5901) 65.5277 Tj -12540.3 TJm (4371 4481 4514 4534) 83.0018 Tj -17.4613 -161.3867 Td +17.4613 -189.8664 Td (0258 1221 5901 5912) 83.0018 Tj -8527.14 TJm (4679 4880 4942 6556) 83.0018 Tj -0 -170.8801 Td +0 -199.3598 Td (ioapicread 5884) 65.5277 Tj -12540.3 TJm (6605) 17.4741 Tj -17.4613 -180.3735 Td +17.4613 -208.8532 Td (5884 5909 5910) 61.1592 Tj -9028.94 TJm (iunlockput 3974) 65.5277 Tj -0 -189.8664 Td +0 -218.3465 Td (ioapicwrite 5891) 69.8962 Tj -12038.7 TJm (0242 3974 4366 4375) 83.0018 Tj -17.4613 -199.3598 Td +17.4613 -227.8399 Td (5891 5917 5918 5931) 83.0018 Tj -8527.14 TJm (4378 4674 4685 4688) 83.0018 Tj -17.4613 -208.8532 Td +17.4613 -237.3332 Td (5932) 17.4741 Tj -16052.1 TJm (4696 4766 4771 4779) 83.0018 Tj -0 -218.3465 Td +0 -246.8266 Td (IO_PIC1 5957) 52.4222 Tj -14045.3 TJm (4780 4791 4795 4812) 83.0018 Tj -17.4613 -227.8399 Td +17.4613 -256.32 Td (5957 5970 5985 5994) 83.0018 Tj -8527.14 TJm (4816 4840 4869 4877) 83.0018 Tj -17.4613 -237.3332 Td +17.4613 -265.8133 Td (5997 6002 6012 6026) 83.0018 Tj -8527.14 TJm (4908 4925 4939 5077) 83.0018 Tj -17.4613 -246.8266 Td +17.4613 -275.3067 Td (6027) 17.4741 Tj -16052.1 TJm (5118) 17.4741 Tj -0 -256.32 Td +0 -284.8 Td (IO_PIC2 5958) 52.4222 Tj -12038.8 TJm (iupdate 3827) 52.4222 Tj -17.4613 -265.8133 Td +17.4613 -294.2934 Td (5958 5971 5986 6015) 83.0018 Tj -8527.14 TJm (0243 3827 3963 4080) 83.0018 Tj -17.4613 -275.3067 Td +17.4613 -303.7868 Td (6016 6017 6020 6029) 83.0018 Tj -8527.14 TJm (4178 4678 4695 4789) 83.0018 Tj -17.4613 -284.8 Td +17.4613 -313.2801 Td (6030) 17.4741 Tj -16052.1 TJm (4794 4827 4831) 61.1592 Tj -0 -294.2934 Td +0 -322.7735 Td (IO_RTC 5800) 48.0537 Tj -12540.5 TJm -(I_VALID 3278) 52.4222 Tj -17.4613 -303.7868 Td +(I_BUSY 3277) 48.0537 Tj +17.4613 -332.2664 Td (5800 5813 5814) 61.1592 Tj -11035.5 TJm -(3278 3916 3926 3955) 83.0018 Tj -0 -313.2801 Td +(3277 3911 3913 3936) 83.0018 Tj +0 -341.7598 Td (IO_TIMER1 6659) 61.1592 Tj --11035.5 TJm -(kalloc 2354) 48.0537 Tj -17.4613 -322.7735 Td +-13042 TJm +(3940 3957 3959) 61.1592 Tj +17.4613 -351.2532 Td (6659 6668 6678 6679) 83.0018 Tj --8527.14 TJm -(0261 1283 1772 1812) 83.0018 Tj -0 -332.2664 Td +-6520.6 TJm +(I_VALID 3278) 52.4222 Tj +0 -360.7465 Td (IPB 3182) 34.9481 Tj -16052 TJm -(1838 1865 2354 2360) 83.0018 Tj -17.4613 -341.7598 Td +(3278 3916 3926 3955) 83.0018 Tj +17.4613 -370.2399 Td (3182 3185 3191 3812) 83.0018 Tj --8527.14 TJm -(2375 5058 5178) 61.1592 Tj -17.4613 -351.2532 Td +-6520.6 TJm +(kalloc 2354) 48.0537 Tj +17.4613 -379.7332 Td (3833 3918) 39.3166 Tj --11537.3 TJm -(KBDATAP 6104) 52.4222 Tj -0 -360.7465 Td +-13543.8 TJm +(0261 1283 1756 1790) 83.0018 Tj +0 -389.2266 Td (iput 3952) 39.3166 Tj -15550.3 TJm -(6104 6267) 39.3166 Tj -17.4613 -370.2399 Td +(1816 1843 2354 2360) 83.0018 Tj +17.4613 -398.72 Td (0240 2120 3952 3958) 83.0018 Tj --6520.6 TJm -(kbdgetc 6256) 52.4222 Tj -17.4613 -379.7332 Td -(3977 4260 4382 4471) 83.0018 Tj -8527.14 TJm -(6256 6298) 39.3166 Tj -17.4613 -389.2266 Td -(4689 4943) 39.3166 Tj --11537.3 TJm -(kbdintr 6296) 52.4222 Tj -0 -398.72 Td -(IRQ_COM1 2433) 56.7907 Tj --13543.7 TJm -(0266 2628 6296) 61.1592 Tj +(2375 5058 5179) 61.1592 Tj 17.4613 -408.2133 Td +(3977 4260 4382 4471) 83.0018 Tj +-6520.6 TJm +(KBDATAP 6104) 52.4222 Tj +17.4613 -417.7067 Td +(4689 4943) 39.3166 Tj +-13543.8 TJm +(6104 6267) 39.3166 Tj +0 -427.2 Td +(IRQ_COM1 2433) 56.7907 Tj +-11537.1 TJm +(kbdgetc 6256) 52.4222 Tj +17.4613 -436.6934 Td (2433 2631) 39.3166 Tj --11537.3 TJm -(KBS_DIB 6103) 52.4222 Tj -0 -417.7067 Td +-13543.8 TJm +(6256 6298) 39.3166 Tj +0 -446.1868 Td (IRQ_ERROR 2435) 61.1592 Tj --13042 TJm -(6103 6265) 39.3166 Tj -17.4613 -427.2 Td +-11035.5 TJm +(kbdintr 6296) 52.4222 Tj +17.4613 -455.6801 Td (2435 5727) 39.3166 Tj --11537.3 TJm -(KBSTATP 6102) 52.4222 Tj -0 -436.6934 Td +-13543.8 TJm +(0266 2628 6296) 61.1592 Tj +0 -465.1735 Td (IRQ_IDE 2434) 52.4222 Tj --14045.3 TJm -(6102 6264) 39.3166 Tj -17.4613 -446.1868 Td +-12038.8 TJm +(KBSTATP 6102) 52.4222 Tj +17.4613 -474.6665 Td (2434 2623 3356 3357) 83.0018 Tj --6520.6 TJm -(KEY_DEL 6128) 52.4222 Tj -0 -455.6801 Td +-8527.14 TJm +(6102 6264) 39.3166 Tj +0 -484.1598 Td (IRQ_KBD 2432) 52.4222 Tj --14045.3 TJm -(6128 6169 6191 6215) 83.0018 Tj -17.4613 -465.1735 Td +-12038.8 TJm +(KBS_DIB 6103) 52.4222 Tj +17.4613 -493.6532 Td (2432 2627 6625 6626) 83.0018 Tj --6520.6 TJm -(KEY_DN 6122) 48.0537 Tj -0 -474.6665 Td -(IRQ_SLAVE 5960) 61.1592 Tj --13042 TJm -(6122 6165 6187 6211) 83.0018 Tj -17.4613 -484.1598 Td -(5960 5964 6002 6017) 83.0018 Tj --6520.6 TJm -(KEY_END 6120) 52.4222 Tj -0 -493.6532 Td -(IRQ_SPURIOUS 2436) 74.2647 Tj --11537 TJm -(6120 6168 6190 6214) 83.0018 Tj +-8527.14 TJm +(6103 6265) 39.3166 Tj Q Q q @@ -2411,207 +2411,207 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 6) 187.8461 Tj +(Aug 30 21:46 2009 cross-references Page 6) 187.8461 Tj 0 -28.4801 Td +(KEY_DEL 6128) 52.4222 Tj +-14045.3 TJm +(1711) 17.4741 Tj +17.4613 -37.9735 Td +(6128 6169 6191 6215) 83.0018 Tj +-6520.6 TJm +(lidt 0467) 39.3166 Tj +0 -47.4664 Td +(KEY_DN 6122) 48.0537 Tj +-14547 TJm +(0467 0475 2580) 61.1592 Tj +17.4613 -56.9598 Td +(6122 6165 6187 6211) 83.0018 Tj +-6520.6 TJm +(LINT0 5679) 43.6851 Tj +0 -66.4531 Td +(KEY_END 6120) 52.4222 Tj +-14045.3 TJm +(5679 5718) 39.3166 Tj +17.4613 -75.9465 Td +(6120 6168 6190 6214) 83.0018 Tj +-6520.6 TJm +(LINT1 5680) 43.6851 Tj +0 -85.4399 Td (KEY_HOME 6119) 56.7907 Tj -13543.7 TJm (5680 5719) 39.3166 Tj -17.4613 -37.9735 Td +17.4613 -94.9332 Td (6119 6168 6190 6214) 83.0018 Tj -6520.6 TJm (LIST 6860) 39.3166 Tj -0 -47.4664 Td +0 -104.4266 Td (KEY_INS 6127) 52.4222 Tj -14045.3 TJm (6860 6940 7107 7383) 83.0018 Tj -17.4613 -56.9598 Td +17.4613 -113.9199 Td (6127 6169 6191 6215) 83.0018 Tj -6520.6 TJm (listcmd 6890 7101) 74.2647 Tj -0 -66.4531 Td +0 -123.4133 Td (KEY_LF 6123) 48.0537 Tj -14547 TJm (6890 6911 6941 7101) 83.0018 Tj -17.4613 -75.9465 Td +17.4613 -132.9067 Td (6123 6167 6189 6213) 83.0018 Tj -8527.14 TJm (7103 7246 7357 7384) 83.0018 Tj -0 -85.4399 Td +0 -142.4 Td (KEY_PGDN 6126) 56.7907 Tj -11537.1 TJm (loadfsgs 0514) 56.7907 Tj -17.4613 -94.9332 Td +17.4613 -151.8934 Td (6126 6166 6188 6212) 83.0018 Tj -8527.14 TJm (0514 1712) 39.3166 Tj -0 -104.4266 Td +0 -161.3867 Td (KEY_PGUP 6125) 56.7907 Tj -11537.1 TJm (ltr 0479) 34.9481 Tj -17.4613 -113.9199 Td +17.4613 -170.8801 Td (6125 6166 6188 6212) 83.0018 Tj -8527.14 TJm -(0479 0481 1731) 61.1592 Tj -0 -123.4133 Td +(0479 0481 1730) 61.1592 Tj +0 -180.3735 Td (KEY_RT 6124) 48.0537 Tj -12540.5 TJm (MAXARGS 6863) 52.4222 Tj -17.4613 -132.9067 Td +17.4613 -189.8664 Td (6124 6167 6189 6213) 83.0018 Tj -8527.14 TJm (6863 6871 6872 7340) 83.0018 Tj -0 -142.4 Td +0 -199.3598 Td (KEY_UP 6121) 48.0537 Tj -12540.5 TJm (MAXFILE 3169) 52.4222 Tj -17.4613 -151.8934 Td +17.4613 -208.8532 Td (6121 6165 6187 6211) 83.0018 Tj -8527.14 TJm (3169 4165 4166) 61.1592 Tj -0 -161.3867 Td +0 -218.3465 Td (kfree 2305) 43.6851 Tj -13042.1 TJm (memcmp 5311) 48.0537 Tj -17.4613 -170.8801 Td -(0262 1843 1866 2169) 83.0018 Tj +17.4613 -227.8399 Td +(0262 1821 1844 2169) 83.0018 Tj -8527.14 TJm (0330 5311 5543 5588) 83.0018 Tj -17.4613 -180.3735 Td +17.4613 -237.3332 Td (2170 2287 2305 2310) 83.0018 Tj -6520.6 TJm (memmove 5327) 52.4222 Tj -17.4613 -189.8668 Td +17.4613 -246.8266 Td (5107 5117 5202 5223) 83.0018 Tj -8527.14 TJm -(0331 1276 1814 1841) 83.0018 Tj -0 -199.3602 Td +(0331 1276 1792 1819) 83.0018 Tj +0 -256.32 Td (kill 2075) 39.3166 Tj -15550.3 TJm -(1871 3683 3839 3924) 83.0018 Tj -17.4613 -208.8535 Td +(1849 3683 3839 3924) 83.0018 Tj +17.4613 -265.8133 Td (0305 2075 2650 2933) 83.0018 Tj -8527.14 TJm (4121 4171 4329 4331) 83.0018 Tj -17.4613 -218.3469 Td +17.4613 -275.3067 Td (6767) 17.4741 Tj -16052.1 TJm (5088 5327 6474) 61.1592 Tj -0 -227.8403 Td +0 -284.8 Td (kinit 2277) 43.6851 Tj -13042.1 TJm (memset 5304) 48.0537 Tj -17.4613 -237.3336 Td +17.4613 -294.2934 Td (0263 1226 2277) 61.1592 Tj -11035.5 TJm -(0332 1789 1813 1816) 83.0018 Tj -0 -246.827 Td +(0332 1773 1791 1794) 83.0018 Tj +0 -303.7868 Td (ksegment 1703) 56.7907 Tj -13543.7 TJm -(1842 2313 3694 3814) 83.0018 Tj -17.4613 -256.3203 Td +(1820 2313 3694 3814) 83.0018 Tj +17.4613 -313.2801 Td (0309 1219 1257 1703) 83.0018 Tj -8527.14 TJm (4784 4959 5061 5075) 83.0018 Tj -0 -265.8137 Td +0 -322.7735 Td (KSTACKSIZE 0152) 65.5277 Tj -12540.3 TJm (5304 6476 6987 7058) 83.0018 Tj -17.4613 -275.3071 Td -(0152 1283 1284 1730) 83.0018 Tj +17.4613 -332.2664 Td +(0152 1283 1284 1729) 83.0018 Tj -8527.14 TJm (7069 7085 7106 7119) 83.0018 Tj -17.4613 -284.8004 Td -(1772 1776 1866 2170) 83.0018 Tj +17.4613 -341.7598 Td +(1756 1760 1844 2170) 83.0018 Tj -6520.6 TJm (microdelay 5781) 65.5277 Tj -0 -294.2938 Td +0 -351.2532 Td (lapiceoi 5772) 56.7907 Tj -13543.7 TJm (0274 5781 5823 5825) 83.0018 Tj -17.4613 -303.7871 Td +17.4613 -360.7465 Td (0271 2621 2625 2629) 83.0018 Tj -8527.14 TJm (5835) 17.4741 Tj -17.4613 -313.2805 Td +17.4613 -370.2399 Td (2633 2639 5772) 61.1592 Tj -9028.94 TJm (min 3673) 34.9481 Tj -0 -322.7739 Td +0 -379.7332 Td (lapicinit 5701) 61.1592 Tj -13042 TJm (3673 4120 4170) 61.1592 Tj -17.4613 -332.2668 Td +17.4613 -389.2266 Td (0272 1218 1256 5701) 83.0018 Tj -6520.6 TJm (mp 5402) 30.5796 Tj -0 -341.7602 Td +0 -398.72 Td (lapicstartap 5805) 74.2647 Tj -11537 TJm (5402 5507 5536 5542) 83.0018 Tj -17.4613 -351.2536 Td +17.4613 -408.2133 Td (0273 1286 5805) 61.1592 Tj -11035.5 TJm (5543 5544 5555 5560) 83.0018 Tj -0 -360.7469 Td +0 -417.7067 Td (lapicw 5690) 48.0537 Tj -14547 TJm (5564 5565 5568 5569) 83.0018 Tj -17.4613 -370.2403 Td +17.4613 -427.2 Td (5690 5707 5713 5714) 83.0018 Tj -8527.14 TJm (5580 5583 5585 5587) 83.0018 Tj -17.4613 -379.7336 Td +17.4613 -436.6934 Td (5715 5718 5719 5724) 83.0018 Tj -8527.14 TJm -(5594 5604 5610 5642) 83.0018 Tj -17.4613 -389.227 Td +(5594 5604 5610 5643) 83.0018 Tj +17.4613 -446.1868 Td (5727 5730 5731 5734) 83.0018 Tj -6520.6 TJm (mpbcpu 5519) 48.0537 Tj -17.4613 -398.7204 Td +17.4613 -455.6801 Td (5737 5738 5743 5775) 83.0018 Tj -8527.14 TJm (0278 1218 1255 5519) 83.0018 Tj -17.4613 -408.2137 Td +17.4613 -465.1735 Td (5821 5822 5824 5833) 83.0018 Tj -6520.6 TJm (MPBUS 5452) 43.6851 Tj -17.4613 -417.7071 Td +17.4613 -474.6668 Td (5834) 17.4741 Tj -16052.1 TJm -(5452 5631) 39.3166 Tj -0 -427.2004 Td +(5452 5633) 39.3166 Tj +0 -484.1602 Td (lgdt 0453) 39.3166 Tj -13543.8 TJm (mpconf 5413) 48.0537 Tj -17.4613 -436.6938 Td +17.4613 -493.6536 Td (0453 0461 0954 1054) 83.0018 Tj -8527.14 TJm (5413 5579 5582 5587) 83.0018 Tj -17.4613 -446.1872 Td -(1711) 17.4741 Tj --16052.1 TJm -(5605) 17.4741 Tj -0 -455.6805 Td -(lidt 0467) 39.3166 Tj --13543.8 TJm -(mpconfig 5580) 56.7907 Tj -17.4613 -465.1739 Td -(0467 0475 2580) 61.1592 Tj --11035.5 TJm -(5580 5610) 39.3166 Tj -0 -474.6668 Td -(LINT0 5679) 43.6851 Tj --13042.1 TJm -(mpinit 5601) 48.0537 Tj -17.4613 -484.1602 Td -(5679 5718) 39.3166 Tj --13543.8 TJm -(0279 1217 5601 5637) 83.0018 Tj -0 -493.6536 Td -(LINT1 5680) 43.6851 Tj --15048.7 TJm -(5638) 17.4741 Tj Q Q Q @@ -2659,207 +2659,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 7) 187.8461 Tj -0 -28.4801 Td -(mpioapic 5439) 56.7907 Tj --11537.1 TJm -(NINDIRECT 3168) 61.1592 Tj -17.4613 -37.9735 Td -(5439 5607 5627 5629) 83.0018 Tj --8527.14 TJm -(3168 3169 4022 4070) 83.0018 Tj -0 -47.4664 Td +(Aug 30 21:46 2009 cross-references Page 7) 187.8461 Tj +17.4613 -28.4801 Td +(5605) 17.4741 Tj +-14045.6 TJm +(NELEM 0362) 43.6851 Tj +0 -37.9735 Td +(mpconfig 5580) 56.7907 Tj +-13543.7 TJm +(0362 1672 2879 4961) 83.0018 Tj +17.4613 -47.4664 Td +(5580 5610) 39.3166 Tj +-11537.3 TJm +(nextpid 1615) 52.4222 Tj +0 -56.9598 Td +(mpinit 5601) 48.0537 Tj +-14547 TJm +(1615 1752) 39.3166 Tj +17.4613 -66.4531 Td +(0279 1217 5601 5619) 83.0018 Tj +-6520.6 TJm +(NFILE 0155) 43.6851 Tj +17.4613 -75.9465 Td +(5620 5639 5640) 61.1592 Tj +-11035.5 TJm +(0155 4410 4426) 61.1592 Tj +0 -85.4399 Td (MPIOAPIC 5453) 56.7907 Tj -11537.1 TJm -(NINODE 0157) 48.0537 Tj -17.4613 -56.9598 Td -(5453 5626) 39.3166 Tj +(NINDIRECT 3168) 61.1592 Tj +17.4613 -94.9332 Td +(5453 5628) 39.3166 Tj -13543.8 TJm +(3168 3169 4022 4070) 83.0018 Tj +0 -104.4266 Td +(mpioapic 5439) 56.7907 Tj +-11537.1 TJm +(NINODE 0157) 48.0537 Tj +17.4613 -113.9199 Td +(5439 5607 5629 5631) 83.0018 Tj +-8527.14 TJm (0157 3785 3861) 61.1592 Tj -0 -66.4531 Td +0 -123.4133 Td (MPIOINTR 5454) 56.7907 Tj -11537.1 TJm (NO 6106) 30.5796 Tj -17.4613 -75.9465 Td -(5454 5632) 39.3166 Tj +17.4613 -132.9067 Td +(5454 5634) 39.3166 Tj -13543.8 TJm (6106 6152 6155 6157) 83.0018 Tj -0 -85.4399 Td +0 -142.4 Td (MPLINTR 5455) 52.4222 Tj -14045.3 TJm (6158 6159 6160 6162) 83.0018 Tj -17.4613 -94.9332 Td -(5455 5633) 39.3166 Tj +17.4613 -151.8934 Td +(5455 5635) 39.3166 Tj -13543.8 TJm (6174 6177 6179 6180) 83.0018 Tj -0 -104.4266 Td +0 -161.3867 Td (mpmain 1253) 48.0537 Tj -14547 TJm (6181 6182 6184 6202) 83.0018 Tj -17.4613 -113.9199 Td +17.4613 -170.8801 Td (1211 1239 1253 1258) 83.0018 Tj -8527.14 TJm (6203 6205 6206 6207) 83.0018 Tj -17.4613 -123.4133 Td +17.4613 -180.3735 Td (1285) 17.4741 Tj -16052.1 TJm (6208) 17.4741 Tj -0 -132.9067 Td -(mpproc 5428) 48.0537 Tj +0 -189.8664 Td +(MPPROC 5451) 48.0537 Tj -12540.5 TJm (NOFILE 0154) 48.0537 Tj -17.4613 -142.4 Td -(5428 5606 5619 5624) 83.0018 Tj --8527.14 TJm -(0154 1540 1878 2113) 83.0018 Tj -0 -151.8934 Td -(MPPROC 5451) 48.0537 Tj +17.4613 -199.3598 Td +(5451 5616) 39.3166 Tj +-13543.8 TJm +(0154 1540 1856 2113) 83.0018 Tj +0 -208.8532 Td +(mpproc 5428) 48.0537 Tj -14547 TJm (4570 4586) 39.3166 Tj -17.4613 -161.3867 Td -(5451 5618) 39.3166 Tj --11537.3 TJm +17.4613 -218.3465 Td +(5428 5606 5617 5626) 83.0018 Tj +-6520.6 TJm (NPROC 0150) 43.6851 Tj -0 -170.8801 Td +0 -227.8399 Td (mpsearch 5556) 56.7907 Tj -13543.7 TJm -(0150 1610 1669 1760) 83.0018 Tj -17.4613 -180.3735 Td +(0150 1610 1669 1745) 83.0018 Tj +17.4613 -237.3332 Td (5556 5585) 39.3166 Tj -13543.8 TJm (1918 2057 2080 2129) 83.0018 Tj -0 -189.8664 Td +0 -246.8266 Td (mpsearch1 5537) 61.1592 Tj -13042 TJm (2162) 17.4741 Tj -17.4613 -199.3598 Td +17.4613 -256.32 Td (5537 5564 5568 5571) 83.0018 Tj -6520.6 TJm (NSEGS 1508) 43.6851 Tj -0 -208.8532 Td +0 -265.8133 Td (namecmp 4203) 52.4222 Tj -14045.3 TJm (1508 1561) 39.3166 Tj -17.4613 -218.3465 Td +17.4613 -275.3067 Td (0244 4203 4228 4765) 83.0018 Tj -6520.6 TJm (nulterminate 7352) 74.2647 Tj -0 -227.8399 Td +0 -284.8 Td (namei 4389) 43.6851 Tj -15048.7 TJm (7215 7230 7352 7373) 83.0018 Tj -17.4613 -237.3332 Td -(0245 1826 4389 4670) 83.0018 Tj +17.4613 -294.2934 Td +(0245 1804 4389 4670) 83.0018 Tj -8527.14 TJm (7379 7380 7385 7386) 83.0018 Tj -17.4613 -246.8266 Td +17.4613 -303.7868 Td (4865 4935 5021) 61.1592 Tj -11035.5 TJm (7391) 17.4741 Tj -0 -256.32 Td +0 -313.2801 Td (nameiparent 4396) 69.8962 Tj -10032.1 TJm (NUMLOCK 6113) 52.4222 Tj -17.4613 -265.8133 Td +17.4613 -322.7735 Td (0246 4354 4369 4381) 83.0018 Tj -8527.14 TJm (6113 6146) 39.3166 Tj -17.4613 -275.3067 Td +17.4613 -332.2668 Td (4396 4681 4760 4807) 83.0018 Tj -6520.6 TJm -(O_CREATE 3053) 56.7907 Tj -0 -284.8 Td +(outb 0421) 39.3166 Tj +0 -341.7602 Td (namex 4354) 43.6851 Tj -15048.7 TJm -(3053 4861 7278 7281) 83.0018 Tj -17.4613 -294.2934 Td +(0421 0933 0941 1164) 83.0018 Tj +17.4613 -351.2536 Td (4354 4392 4398) 61.1592 Tj --9028.94 TJm -(O_RDONLY 3050) 56.7907 Tj -0 -303.7868 Td +-11035.5 TJm +(1165 1166 1167 1168) 83.0018 Tj +0 -360.7469 Td (NBUF 0156) 39.3166 Tj -15550.3 TJm -(3050 4868 7275) 61.1592 Tj -17.4613 -313.2801 Td +(1169 3361 3370 3381) 83.0018 Tj +17.4613 -370.2403 Td (0156 3531 3553) 61.1592 Tj --9028.94 TJm -(O_RDWR 3052) 48.0537 Tj -0 -322.7735 Td -(ncpu 5515) 39.3166 Tj --15550.3 TJm -(3052 4886 6814 6816) 83.0018 Tj -17.4613 -332.2664 Td -(1224 1278 1569 3357) 83.0018 Tj --8527.14 TJm -(7007) 17.4741 Tj -17.4613 -341.7598 Td -(5515 5609 5620 5622) 83.0018 Tj --6520.6 TJm -(outb 0421) 39.3166 Tj -17.4613 -351.2532 Td -(5623) 17.4741 Tj --16052.1 TJm -(0421 0933 0941 1164) 83.0018 Tj -0 -360.7465 Td +-11035.5 TJm +(3382 3383 3384 3385) 83.0018 Tj +0 -379.7336 Td (NCPU 0153) 39.3166 Tj -15550.3 TJm -(1165 1166 1167 1168) 83.0018 Tj -17.4613 -370.2399 Td +(3386 3388 3391 5646) 83.0018 Tj +17.4613 -389.227 Td (0153 1568 5512) 61.1592 Tj -11035.5 TJm -(1169 3361 3370 3381) 83.0018 Tj -0 -379.7332 Td -(NDEV 0158) 39.3166 Tj +(5647 5813 5814 5970) 83.0018 Tj +0 -398.7204 Td +(ncpu 5515) 39.3166 Tj -15550.3 TJm -(3382 3383 3384 3385) 83.0018 Tj -17.4613 -389.2266 Td -(0158 4108 4158 4406) 83.0018 Tj --8527.14 TJm -(3386 3388 3391 5645) 83.0018 Tj -0 -398.72 Td -(NDIRECT 3167) 52.4222 Tj --14045.3 TJm -(5646 5813 5814 5970) 83.0018 Tj -17.4613 -408.2133 Td -(3167 3169 3178 3274) 83.0018 Tj --8527.14 TJm (5971 5985 5986 5994) 83.0018 Tj -17.4613 -417.7067 Td -(4015 4020 4024 4025) 83.0018 Tj +17.4613 -408.2137 Td +(1224 1278 1569 3357) 83.0018 Tj -8527.14 TJm (5997 6002 6012 6015) 83.0018 Tj -17.4613 -427.2 Td -(4060 4067 4068 4075) 83.0018 Tj +17.4613 -417.7071 Td +(5515 5618 5619 5623) 83.0018 Tj -8527.14 TJm (6016 6017 6020 6026) 83.0018 Tj -17.4613 -436.6934 Td -(4076) 17.4741 Tj --16052.1 TJm +17.4613 -427.2004 Td +(5624 5625) 39.3166 Tj +-13543.8 TJm (6027 6029 6030 6460) 83.0018 Tj -0 -446.1868 Td -(NELEM 0362) 43.6851 Tj --15048.7 TJm +0 -436.6938 Td +(NDEV 0158) 39.3166 Tj +-15550.3 TJm (6462 6479 6480 6481) 83.0018 Tj -17.4613 -455.6801 Td -(0362 1672 2879 4961) 83.0018 Tj +17.4613 -446.1872 Td +(0158 4108 4158 4407) 83.0018 Tj -8527.14 TJm (6482 6677 6678 6679) 83.0018 Tj -0 -465.1735 Td -(nextpid 1615) 52.4222 Tj +0 -455.6805 Td +(NDIRECT 3167) 52.4222 Tj -12038.8 TJm (outsl 0433) 43.6851 Tj -17.4613 -474.6665 Td -(1615 1768) 39.3166 Tj --13543.8 TJm +17.4613 -465.1739 Td +(3167 3169 3178 3274) 83.0018 Tj +-8527.14 TJm (0433 0435 3389) 61.1592 Tj -0 -484.1598 Td -(NFILE 0155) 43.6851 Tj --13042.1 TJm +17.4613 -474.6672 Td +(4015 4020 4024 4025) 83.0018 Tj +-6520.6 TJm (outw 0427) 39.3166 Tj -17.4613 -493.6532 Td -(0155 4409 4425) 61.1592 Tj --11035.5 TJm +17.4613 -484.1606 Td +(4060 4067 4068 4075) 83.0018 Tj +-8527.14 TJm (0427 0982 0984 1082) 83.0018 Tj +17.4613 -493.654 Td +(4076) 17.4741 Tj +-16052.1 TJm +(1084) 17.4741 Tj Q Q q @@ -2876,207 +2876,207 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 8) 187.8461 Tj -17.4613 -28.4801 Td -(1084) 17.4741 Tj --14045.6 TJm -(picsetmask 5967) 65.5277 Tj -0 -37.9735 Td -(O_WRONLY 3051) 56.7907 Tj +(Aug 30 21:46 2009 cross-references Page 8) 187.8461 Tj +0 -28.4801 Td +(O_CREATE 3053) 56.7907 Tj -13543.7 TJm -(5967 5977 6033) 61.1592 Tj -17.4613 -47.4664 Td -(3051 4885 4886 7278) 83.0018 Tj --6520.6 TJm -(pinit 1620) 43.6851 Tj +(7256 7269 7305 7309) 83.0018 Tj +17.4613 -37.9735 Td +(3053 4861 7278 7281) 83.0018 Tj +-8527.14 TJm +(7324 7332) 39.3166 Tj +0 -47.4664 Td +(O_RDONLY 3050) 56.7907 Tj +-11537.1 TJm +(picenable 5975) 61.1592 Tj 17.4613 -56.9598 Td -(7281) 17.4741 Tj --16052.1 TJm -(0306 1227 1620) 61.1592 Tj +(3050 4868 7275) 61.1592 Tj +-11035.5 TJm +(0283 3356 5975 6625) 83.0018 Tj 0 -66.4531 Td -(PAGE 0151) 39.3166 Tj --13543.8 TJm -(pipe 5160) 39.3166 Tj +(O_RDWR 3052) 48.0537 Tj +-14547 TJm +(6680) 17.4741 Tj 17.4613 -75.9465 Td -(0151 0152 1811 2284) 83.0018 Tj --8527.14 TJm -(0204 0288 0289 0290) 83.0018 Tj +(3052 4886 6814 6816) 83.0018 Tj +-6520.6 TJm +(picinit 5982) 52.4222 Tj 17.4613 -85.4399 Td -(2285 2309 2359 5054) 83.0018 Tj +(7007) 17.4741 Tj +-16052.1 TJm +(0284 1220 5982) 61.1592 Tj +0 -94.9332 Td +(O_WRONLY 3051) 56.7907 Tj +-11537.1 TJm +(picsetmask 5967) 65.5277 Tj +17.4613 -104.4266 Td +(3051 4885 4886 7278) 83.0018 Tj -8527.14 TJm -(3255 4469 4509 4529) 83.0018 Tj -17.4613 -94.9332 Td -(5057 5178 5202 5223) 83.0018 Tj --8527.14 TJm -(5160 5172 5178 5184) 83.0018 Tj -0 -104.4266 Td -(panic 6401 7032) 65.5277 Tj --12540.3 TJm -(5188 5192 5211 5230) 83.0018 Tj +(5967 5977 6033) 61.1592 Tj 17.4613 -113.9199 Td -(0219 1377 1405 1469) 83.0018 Tj --8527.14 TJm -(5251 6763 6952 6953) 83.0018 Tj -17.4613 -123.4133 Td -(1471 1958 1960 1962) 83.0018 Tj +(7281) 17.4741 Tj +-14045.6 TJm +(pinit 1620) 43.6851 Tj +0 -123.4133 Td +(PAGE 0151) 39.3166 Tj +-15550.3 TJm +(0306 1227 1620) 61.1592 Tj +17.4613 -132.9067 Td +(0151 0152 1789 2284) 83.0018 Tj -6520.6 TJm (PIPE 6859) 39.3166 Tj -17.4613 -132.9067 Td -(1964 2006 2009 2110) 83.0018 Tj +17.4613 -142.4 Td +(2285 2309 2359 5054) 83.0018 Tj -8527.14 TJm (6859 6950 7086 7377) 83.0018 Tj -17.4613 -142.4 Td -(2140 2310 2321 2360) 83.0018 Tj --6520.6 TJm -(pipealloc 5170) 61.1592 Tj 17.4613 -151.8934 Td -(2647 3378 3459 3461) 83.0018 Tj +(5057 5179 5202 5223) 83.0018 Tj +-6520.6 TJm +(pipe 5161) 39.3166 Tj +0 -161.3867 Td +(panic 6401 7032) 65.5277 Tj +-12540.3 TJm +(0204 0288 0289 0290) 83.0018 Tj +17.4613 -170.8801 Td +(0219 1377 1405 1469) 83.0018 Tj -8527.14 TJm -(0287 4984 5170) 61.1592 Tj -17.4613 -161.3867 Td +(3255 4469 4509 4529) 83.0018 Tj +17.4613 -180.3735 Td +(1471 1958 1960 1962) 83.0018 Tj +-8527.14 TJm +(5161 5173 5179 5185) 83.0018 Tj +17.4613 -189.8668 Td +(1964 2006 2009 2110) 83.0018 Tj +-8527.14 TJm +(5189 5193 5211 5230) 83.0018 Tj +17.4613 -199.3602 Td +(2140 2310 2321 2360) 83.0018 Tj +-8527.14 TJm +(5251 6763 6952 6953) 83.0018 Tj +17.4613 -208.8535 Td +(2647 3378 3459 3461) 83.0018 Tj +-6520.6 TJm +(pipealloc 5171) 61.1592 Tj +17.4613 -218.3469 Td (3463 3596 3617 3627) 83.0018 Tj +-8527.14 TJm +(0287 4984 5171) 61.1592 Tj +17.4613 -227.8403 Td +(3725 3743 3822 3873) 83.0018 Tj -6520.6 TJm (pipeclose 5211) 61.1592 Tj -17.4613 -170.8801 Td -(3725 3743 3822 3873) 83.0018 Tj +17.4613 -237.3336 Td +(3908 3928 3937 3958) 83.0018 Tj -8527.14 TJm (0288 4469 5211) 61.1592 Tj -17.4613 -180.3735 Td -(3908 3928 3937 3958) 83.0018 Tj +17.4613 -246.827 Td +(4036 4219 4267 4275) 83.0018 Tj -6520.6 TJm (pipecmd 6884 7080) 74.2647 Tj -17.4613 -189.8668 Td -(4036 4219 4267 4275) 83.0018 Tj +17.4613 -256.3203 Td +(4443 4458 4517 4537) 83.0018 Tj -8527.14 TJm (6884 6912 6951 7080) 83.0018 Tj -17.4613 -199.3602 Td -(4442 4458 4517 4537) 83.0018 Tj +17.4613 -265.8137 Td +(4709 4777 4786 4821) 83.0018 Tj -8527.14 TJm (7082 7258 7358 7378) 83.0018 Tj -17.4613 -208.8535 Td -(4709 4777 4786 4821) 83.0018 Tj +17.4613 -275.3071 Td +(4834 4838 5620 5640) 83.0018 Tj -6520.6 TJm (piperead 5251) 56.7907 Tj -17.4613 -218.3469 Td -(4834 4838 5638 6401) 83.0018 Tj +17.4613 -284.8004 Td +(6401 6408 6901 6920) 83.0018 Tj -8527.14 TJm (0289 4509 5251) 61.1592 Tj -17.4613 -227.8403 Td -(6408 6901 6920 6953) 83.0018 Tj +17.4613 -294.2938 Td +(6953 7032 7045 7228) 83.0018 Tj -6520.6 TJm -(PIPESIZE 5158) 56.7907 Tj -17.4613 -237.3336 Td -(7032 7045 7228 7272) 83.0018 Tj --8527.14 TJm -(5158 5162 5236 5244) 83.0018 Tj -17.4613 -246.827 Td -(7306 7310 7336 7341) 83.0018 Tj +(PIPESIZE 5159) 56.7907 Tj +17.4613 -303.7871 Td +(7272 7306 7310 7336) 83.0018 Tj -8527.14 TJm +(5159 5163 5236 5244) 83.0018 Tj +17.4613 -313.2805 Td +(7341) 17.4741 Tj +-16052.1 TJm (5266) 17.4741 Tj -0 -256.3203 Td -(panicked 6316) 56.7907 Tj +0 -322.7739 Td +(panicked 6317) 56.7907 Tj -11537.1 TJm (pipewrite 5230) 61.1592 Tj -17.4613 -265.8137 Td -(6316 6414 6489) 61.1592 Tj +17.4613 -332.2668 Td +(6317 6414 6489) 61.1592 Tj -11035.5 TJm (0290 4529 5230) 61.1592 Tj -0 -275.3071 Td +0 -341.7602 Td (parseblock 7301) 65.5277 Tj -10533.8 TJm (popcli 1466) 48.0537 Tj -17.4613 -284.8004 Td +17.4613 -351.2536 Td (7301 7306 7325) 61.1592 Tj -11035.5 TJm (0327 1421 1466 1469) 83.0018 Tj -0 -294.2938 Td +0 -360.7469 Td (parsecmd 7218) 56.7907 Tj -13543.7 TJm -(1471 1732) 39.3166 Tj -17.4613 -303.7871 Td +(1471 1731) 39.3166 Tj +17.4613 -370.2403 Td (6902 7025 7218) 61.1592 Tj -9028.94 TJm -(printint 6324) 56.7907 Tj -0 -313.2805 Td +(printint 6325) 56.7907 Tj +0 -379.7336 Td (parseexec 7317) 61.1592 Tj -13042 TJm -(6324 6374 6378) 61.1592 Tj -17.4613 -322.7739 Td +(6325 6374 6378) 61.1592 Tj +17.4613 -389.227 Td (7214 7255 7317) 61.1592 Tj -9028.94 TJm (proc 1529) 39.3166 Tj -0 -332.2668 Td +0 -398.7204 Td (parseline 7235) 61.1592 Tj -13042 TJm (0205 0301 0342 0343) 83.0018 Tj -17.4613 -341.7602 Td +17.4613 -408.2137 Td (7212 7224 7235 7246) 83.0018 Tj -8527.14 TJm (1204 1208 1357 1529) 83.0018 Tj -17.4613 -351.2536 Td +17.4613 -417.7071 Td (7308) 17.4741 Tj -16052.1 TJm (1535 1578 1605 1610) 83.0018 Tj -0 -360.7469 Td +0 -427.2004 Td (parsepipe 7251) 61.1592 Tj -13042 TJm -(1613 1665 1669 1753) 83.0018 Tj -17.4613 -370.2403 Td +(1613 1665 1669 1716) 83.0018 Tj +17.4613 -436.6938 Td (7213 7239 7251 7258) 83.0018 Tj -8527.14 TJm -(1756 1760 1804 1857) 83.0018 Tj -0 -379.7336 Td +(1724 1725 1729 1738) 83.0018 Tj +0 -446.1872 Td (parseredirs 7264) 69.8962 Tj -12038.7 TJm -(1910 1918 2055 2057) 83.0018 Tj -17.4613 -389.227 Td +(1741 1745 1782 1816) 83.0018 Tj +17.4613 -455.6805 Td (7264 7312 7331 7342) 83.0018 Tj -8527.14 TJm -(2077 2080 2106 2129) 83.0018 Tj -0 -398.7204 Td +(1819 1820 1821 1822) 83.0018 Tj +0 -465.1739 Td (PCINT 5678) 43.6851 Tj -15048.7 TJm -(2155 2162 2554 2650) 83.0018 Tj -17.4613 -408.2137 Td +(1823 1835 1842 1849) 83.0018 Tj +17.4613 -474.6668 Td (5678 5724) 39.3166 Tj -13543.8 TJm -(2754 2766 2778 2905) 83.0018 Tj -0 -417.7071 Td +(1850 1851 1857 1858) 83.0018 Tj +0 -484.1602 Td (peek 7201) 39.3166 Tj -15550.3 TJm -(3306 3667 4555 5003) 83.0018 Tj -17.4613 -427.2004 Td +(1859 1910 1918 1925) 83.0018 Tj +17.4613 -493.6536 Td (7201 7225 7240 7244) 83.0018 Tj -8527.14 TJm -(5154 5510 5606 5619) 83.0018 Tj -17.4613 -436.6938 Td -(7256 7269 7305 7309) 83.0018 Tj --8527.14 TJm -(5620 5621 6311) 61.1592 Tj -17.4613 -446.1872 Td -(7324 7332) 39.3166 Tj --11537.3 TJm -(procdump 1654) 56.7907 Tj -0 -455.6805 Td -(picenable 5975) 61.1592 Tj --13042 TJm -(0307 1654 6520) 61.1592 Tj -17.4613 -465.1739 Td -(0283 3356 5975 6625) 83.0018 Tj --6520.6 TJm -(proghdr 0874) 52.4222 Tj -17.4613 -474.6672 Td -(6680) 17.4741 Tj --16052.1 TJm -(0874 1119 1133 5016) 83.0018 Tj -0 -484.1606 Td -(picinit 5982) 52.4222 Tj --12038.8 TJm -(pushcli 1455) 52.4222 Tj -17.4613 -493.654 Td -(0284 1220 5982) 61.1592 Tj --11035.5 TJm -(0326 1375 1455 1724) 83.0018 Tj +(1928 1932 1961 1967) 83.0018 Tj Q Q Q @@ -3124,207 +3124,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 9) 187.8461 Tj -0 -28.4801 Td +(Aug 30 21:46 2009 cross-references Page 9) 187.8461 Tj +17.4613 -28.4801 Td +(1976 2005 2023 2024) 83.0018 Tj +-8527.14 TJm +(5932) 17.4741 Tj +17.4613 -37.9735 Td +(2028 2055 2057 2077) 83.0018 Tj +-6520.6 TJm +(REG_VER 5861) 52.4222 Tj +17.4613 -47.4668 Td +(2080 2106 2109 2114) 83.0018 Tj +-8527.14 TJm +(5861 5909) 39.3166 Tj +17.4613 -56.9602 Td +(2115 2116 2120 2121) 83.0018 Tj +-6520.6 TJm +(release 1402) 52.4222 Tj +17.4613 -66.4535 Td +(2126 2129 2130 2138) 83.0018 Tj +-8527.14 TJm +(0325 1402 1405 1748) 83.0018 Tj +17.4613 -75.9469 Td +(2155 2162 2163 2182) 83.0018 Tj +-8527.14 TJm +(1753 1934 1978 1987) 83.0018 Tj +17.4613 -85.4403 Td +(2188 2554 2604 2606) 83.0018 Tj +-8527.14 TJm +(2019 2032 2068 2086) 83.0018 Tj +17.4613 -94.9336 Td +(2608 2643 2650 2651) 83.0018 Tj +-8527.14 TJm +(2090 2176 2183 2343) 83.0018 Tj +17.4613 -104.427 Td +(2652 2658 2663 2667) 83.0018 Tj +-8527.14 TJm +(2369 2373 2619 2975) 83.0018 Tj +17.4613 -113.9203 Td +(2754 2766 2778 2796) 83.0018 Tj +-8527.14 TJm +(2980 3409 3428 3482) 83.0018 Tj +17.4613 -123.4137 Td +(2810 2812 2826 2878) 83.0018 Tj +-8527.14 TJm +(3578 3592 3641 3864) 83.0018 Tj +17.4613 -132.9071 Td +(2880 2883 2884 2905) 83.0018 Tj +-8527.14 TJm +(3880 3892 3914 3942) 83.0018 Tj +17.4613 -142.4004 Td +(2939 2958 2974 3306) 83.0018 Tj +-8527.14 TJm +(3960 3969 4429 4433) 83.0018 Tj +17.4613 -151.8938 Td +(3667 4361 4555 4570) 83.0018 Tj +-8527.14 TJm +(4445 4460 4466 5222) 83.0018 Tj +17.4613 -161.3871 Td +(4587 4588 4646 4943) 83.0018 Tj +-8527.14 TJm +(5225 5238 5247 5258) 83.0018 Tj +17.4613 -170.8805 Td +(4944 4963 4969 4989) 83.0018 Tj +-8527.14 TJm +(5269 6398 6547 6562) 83.0018 Tj +17.4613 -180.3739 Td +(5003 5104 5107 5108) 83.0018 Tj +-8527.14 TJm +(6582 6609) 39.3166 Tj +17.4613 -189.8672 Td +(5109 5110 5111 5154) 83.0018 Tj +-6520.6 TJm +(ROOTDEV 0159) 52.4222 Tj +17.4613 -199.3606 Td +(5237 5257 5510 5606) 83.0018 Tj +-8527.14 TJm +(0159 4359) 39.3166 Tj +17.4613 -208.8539 Td +(5617 5618 5619 5622) 83.0018 Tj +-6520.6 TJm +(ROOTINO 3157) 52.4222 Tj +17.4613 -218.3473 Td +(6312 6561) 39.3166 Tj +-13543.8 TJm +(3157 4359) 39.3166 Tj +0 -227.8407 Td +(procdump 1654) 56.7907 Tj +-11537.1 TJm +(run 2262) 34.9481 Tj +17.4613 -237.334 Td +(0307 1654 6520) 61.1592 Tj +-11035.5 TJm +(1661 2262 2263 2269) 83.0018 Tj +0 -246.8274 Td +(proghdr 0874) 52.4222 Tj +-14045.3 TJm +(2307 2316 2317 2319) 83.0018 Tj +17.4613 -256.3207 Td +(0874 1119 1133 5016) 83.0018 Tj +-8527.14 TJm +(2357) 17.4741 Tj +0 -265.8141 Td +(pushcli 1455) 52.4222 Tj +-12038.8 TJm +(runcmd 6906) 48.0537 Tj +17.4613 -275.3075 Td +(0326 1375 1455 1723) 83.0018 Tj +-8527.14 TJm +(6906 6920 6937 6943) 83.0018 Tj +0 -284.8008 Td (readeflags 0485) 65.5277 Tj -12540.3 TJm (6945 6959 6966 6977) 83.0018 Tj -17.4613 -37.9735 Td +17.4613 -294.2942 Td (0485 1459 1468 1963) 83.0018 Tj -8527.14 TJm (7025) 17.4741 Tj -17.4613 -47.4664 Td +17.4613 -303.7875 Td (5758) 17.4741 Tj -14045.6 TJm (RUNNING 1526) 52.4222 Tj -0 -56.9598 Td +0 -313.2809 Td (readi 4102) 43.6851 Tj -15048.7 TJm (1526 1661 1927 1961) 83.0018 Tj -17.4613 -66.4531 Td +17.4613 -322.7743 Td (0247 4102 4266 4512) 83.0018 Tj -8527.14 TJm (2663) 17.4741 Tj -17.4613 -75.9461 Td +17.4613 -332.2676 Td (4708 4709 5026 5034) 83.0018 Tj -6520.6 TJm (safestrcpy 5375) 65.5277 Tj -17.4613 -85.4391 Td +17.4613 -341.761 Td (5065 5073) 39.3166 Tj -13543.8 TJm -(0333 1825 5104 5375) 83.0018 Tj -0 -94.9324 Td +(0333 1803 5104 5375) 83.0018 Tj +0 -351.2543 Td (readsb 3678) 48.0537 Tj -12540.5 TJm (sched 1953) 43.6851 Tj -17.4613 -104.4258 Td +17.4613 -360.7477 Td (3678 3711 3738 3809) 83.0018 Tj -8527.14 TJm (1953 1958 1960 1962) 83.0018 Tj -0 -113.9192 Td +0 -370.2411 Td (readsect 1160) 56.7907 Tj -13543.7 TJm (1964 1977 2025 2139) 83.0018 Tj -17.4613 -123.4125 Td +17.4613 -379.7344 Td (1160 1195) 39.3166 Tj -11537.3 TJm (scheduler 1908) 61.1592 Tj -0 -132.9059 Td +0 -389.2278 Td (readseg 1179) 52.4222 Tj -14045.3 TJm -(0308 1263 1908) 61.1592 Tj -17.4613 -142.3992 Td +(0308 1263 1559 1908) 83.0018 Tj +17.4613 -398.7211 Td (1113 1126 1137 1179) 83.0018 Tj --6520.6 TJm -(SCROLLLOCK 6114) 65.5277 Tj -0 -151.8926 Td +-8527.14 TJm +(1928 1967) 39.3166 Tj +0 -408.2145 Td (REDIR 6858) 43.6851 Tj --15048.7 TJm -(6114 6147) 39.3166 Tj -17.4613 -161.386 Td +-13042.1 TJm +(SCROLLLOCK 6114) 65.5277 Tj +17.4613 -417.7079 Td (6858 6930 7070 7371) 83.0018 Tj --6520.6 TJm -(SECTSIZE 1111) 56.7907 Tj -0 -170.8793 Td +-8527.14 TJm +(6114 6147) 39.3166 Tj +0 -427.2012 Td (redircmd 6875 7064) 78.6333 Tj --11035.3 TJm -(1111 1173 1186 1189) 83.0018 Tj -17.4613 -180.3727 Td +-9028.81 TJm +(SECTSIZE 1111) 56.7907 Tj +17.4613 -436.6946 Td (6875 6913 6931 7064) 83.0018 Tj -8527.14 TJm -(1194) 17.4741 Tj -17.4613 -189.8657 Td +(1111 1173 1186 1189) 83.0018 Tj +17.4613 -446.1879 Td (7066 7275 7278 7281) 83.0018 Tj --6520.6 TJm -(SEG 0701) 34.9481 Tj -17.4613 -199.3586 Td +-8527.14 TJm +(1194) 17.4741 Tj +17.4613 -455.6813 Td (7359 7372) 39.3166 Tj --13543.8 TJm -(0701 1708 1709 1710) 83.0018 Tj -0 -208.852 Td +-11537.3 TJm +(SEG 0701) 34.9481 Tj +0 -465.1747 Td (REG_ID 5860) 48.0537 Tj -14547 TJm -(1725 1726) 39.3166 Tj -17.4613 -218.3453 Td +(0701 1708 1709 1710) 83.0018 Tj +17.4613 -474.6676 Td (5860 5910) 39.3166 Tj --11537.3 TJm -(SEG16 0706) 43.6851 Tj -0 -227.8387 Td +-13543.8 TJm +(1724 1725) 39.3166 Tj +0 -484.161 Td (REG_TABLE 5862) 61.1592 Tj --13042 TJm -(0706 1727) 39.3166 Tj -17.4613 -237.3321 Td +-11035.5 TJm +(SEG16 0706) 43.6851 Tj +17.4613 -493.6543 Td (5862 5917 5918 5931) 83.0018 Tj --6520.6 TJm -(SEG_ASM 0608) 52.4222 Tj -17.4613 -246.825 Td -(5932) 17.4741 Tj --16052.1 TJm -(0608 0992 0993 1092) 83.0018 Tj -0 -256.3184 Td -(REG_VER 5861) 52.4222 Tj --14045.3 TJm -(1093) 17.4741 Tj -17.4613 -265.8118 Td -(5861 5909) 39.3166 Tj --11537.3 TJm -(segdesc 0677) 52.4222 Tj -0 -275.3051 Td -(release 1402) 52.4222 Tj --14045.3 TJm -(0450 0453 0677 0701) 83.0018 Tj -17.4613 -284.7985 Td -(0325 1402 1405 1763) 83.0018 Tj -8527.14 TJm -(0706 1561) 39.3166 Tj -17.4613 -294.2914 Td -(1769 1934 1978 1987) 83.0018 Tj --6520.6 TJm -(SEG_KCODE 0907 1021 1502 2500) 126.6869 Tj -17.4613 -303.7844 Td -(2019 2032 2068 2086) 83.0018 Tj --8527.14 TJm -(0961 1061 1502 1708) 83.0018 Tj -17.4613 -313.2774 Td -(2090 2176 2183 2343) 83.0018 Tj --8527.14 TJm -(2571 2572) 39.3166 Tj -17.4613 -322.7704 Td -(2369 2373 2619 2975) 83.0018 Tj --6520.6 TJm -(SEG_KCPU 1504 2502) 78.6333 Tj -17.4613 -332.2633 Td -(2980 3409 3428 3482) 83.0018 Tj --8527.14 TJm -(1504 1710 1712 2518) 83.0018 Tj -17.4613 -341.7563 Td -(3578 3592 3641 3864) 83.0018 Tj --6520.6 TJm -(SEG_KDATA 0908 1022 1503 2501) 126.6869 Tj -17.4613 -351.2493 Td -(3880 3892 3914 3942) 83.0018 Tj --8527.14 TJm -(0966 1066 1503 1709) 83.0018 Tj -17.4613 -360.7422 Td -(3960 3969 4428 4432) 83.0018 Tj --8527.14 TJm -(1729 2515) 39.3166 Tj -17.4613 -370.2352 Td -(4444 4460 4466 5222) 83.0018 Tj --6520.6 TJm -(SEG_NULLASM 0604) 69.8962 Tj -17.4613 -379.7282 Td -(5225 5238 5247 5258) 83.0018 Tj --8527.14 TJm -(0604 0991 1091) 61.1592 Tj -17.4613 -389.2212 Td -(5269 6398 6547 6562) 83.0018 Tj --6520.6 TJm -(SEG_TSS 1507) 52.4222 Tj -17.4613 -398.7141 Td -(6582 6609) 39.3166 Tj --13543.8 TJm -(1507 1727 1728 1731) 83.0018 Tj -0 -408.2075 Td -(ROOTDEV 0159) 52.4222 Tj --12038.8 TJm -(SEG_UCODE 1505) 61.1592 Tj -17.4613 -417.7008 Td -(0159 4359) 39.3166 Tj --13543.8 TJm -(1505 1725 1817) 61.1592 Tj -0 -427.1942 Td -(ROOTINO 3157) 52.4222 Tj --12038.8 TJm -(SEG_UDATA 1506) 61.1592 Tj -17.4613 -436.6876 Td -(3157 4359) 39.3166 Tj --13543.8 TJm -(1506 1726 1818) 61.1592 Tj -0 -446.1809 Td -(run 2262) 34.9481 Tj --14045.5 TJm -(SETGATE 0821) 52.4222 Tj -17.4613 -455.6743 Td -(1661 2262 2263 2269) 83.0018 Tj --8527.14 TJm -(0821 2571 2572) 61.1592 Tj -17.4613 -465.1673 Td -(2307 2316 2317 2319) 83.0018 Tj --6520.6 TJm -(SHIFT 6108) 43.6851 Tj -17.4613 -474.6602 Td -(2357) 17.4741 Tj --16052.1 TJm -(6108 6136 6137 6285) 83.0018 Tj -0 -484.1536 Td -(runcmd 6906) 48.0537 Tj --12540.5 TJm -(skipelem 4315) 56.7907 Tj -17.4613 -493.6469 Td -(6906 6920 6937 6943) 83.0018 Tj --8527.14 TJm -(4315 4363) 39.3166 Tj +(0706 1726) 39.3166 Tj Q Q q @@ -3341,207 +3341,207 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 10) 192.2146 Tj +(Aug 30 21:46 2009 cross-references Page 10) 192.2146 Tj 0 -28.4801 Td +(segdesc 0677) 52.4222 Tj +-14045.3 TJm +(4654 6803) 39.3166 Tj +17.4613 -37.9735 Td +(0450 0453 0677 0701) 83.0018 Tj +-6520.6 TJm +(stati 4085) 43.6851 Tj +17.4613 -47.4664 Td +(0706 1561) 39.3166 Tj +-13543.8 TJm +(0248 4085 4480) 61.1592 Tj +0 -56.9598 Td +(SEG_ASM 0608) 52.4222 Tj +-12038.8 TJm +(STA_R 0617 0718) 65.5277 Tj +17.4613 -66.4531 Td +(0608 0992 0993 1092) 83.0018 Tj +-8527.14 TJm +(0617 0718 0992 1092) 83.0018 Tj +17.4613 -75.9461 Td +(1093) 17.4741 Tj +-16052.1 TJm +(1708 1724) 39.3166 Tj +0 -85.4395 Td +(SEG_KCODE 0907 1021 1502 2500) 126.6869 Tj +-3510.47 TJm +(STA_W 0616 0717) 65.5277 Tj +17.4613 -94.9328 Td +(0961 1061 1502 1708) 83.0018 Tj +-8527.14 TJm +(0616 0717 0993 1093) 83.0018 Tj +17.4613 -104.4258 Td +(2571 2572) 39.3166 Tj +-13543.8 TJm +(1709 1710 1725) 61.1592 Tj +0 -113.9192 Td +(SEG_KCPU 1504 2502) 78.6333 Tj +-9028.81 TJm +(STA_X 0613 0714) 65.5277 Tj +17.4613 -123.4125 Td +(1504 1710 1712 2518) 83.0018 Tj +-8527.14 TJm +(0613 0714 0992 1092) 83.0018 Tj +0 -132.9059 Td +(SEG_KDATA 0908 1022 1503 2501) 126.6869 Tj +-5517.01 TJm +(1708 1724) 39.3166 Tj +17.4613 -142.3992 Td +(0966 1066 1503 1709) 83.0018 Tj +-6520.6 TJm +(sti 0527) 34.9481 Tj +17.4613 -151.8922 Td +(1728 2515) 39.3166 Tj +-13543.8 TJm +(0527 0529 1473 1914) 83.0018 Tj +0 -161.3856 Td +(SEG_NULLASM 0604) 69.8962 Tj +-10032.1 TJm +(stosb 0442) 43.6851 Tj +17.4613 -170.8789 Td +(0604 0991 1091) 61.1592 Tj +-11035.5 TJm +(0442 0444 1139 5306) 83.0018 Tj +0 -180.3723 Td +(SEG_TSS 1507) 52.4222 Tj +-12038.8 TJm +(strlen 5389) 48.0537 Tj +17.4613 -189.8653 Td +(1507 1726 1727 1730) 83.0018 Tj +-8527.14 TJm +(0334 5046 5086 5389) 83.0018 Tj +0 -199.3586 Td +(SEG_UCODE 1505) 61.1592 Tj +-13042 TJm +(7019 7223) 39.3166 Tj +17.4613 -208.852 Td +(1505 1724 1795) 61.1592 Tj +-9028.94 TJm +(strncmp 5351) 52.4222 Tj +0 -218.3453 Td +(SEG_UDATA 1506) 61.1592 Tj +-13042 TJm +(0335 4205 5351) 61.1592 Tj +17.4613 -227.8387 Td +(1506 1725 1796) 61.1592 Tj +-9028.94 TJm +(strncpy 5361) 52.4222 Tj +0 -237.3321 Td +(SETGATE 0821) 52.4222 Tj +-14045.3 TJm +(0336 4272 5361) 61.1592 Tj +17.4613 -246.8254 Td +(0821 2571 2572) 61.1592 Tj +-9028.94 TJm +(STS_IG32 0732) 56.7907 Tj +0 -256.3188 Td +(SHIFT 6108) 43.6851 Tj +-15048.7 TJm +(0732 0827) 39.3166 Tj +17.4613 -265.8121 Td +(6108 6136 6137 6285) 83.0018 Tj +-6520.6 TJm +(STS_T32A 0729) 56.7907 Tj +0 -275.3055 Td +(skipelem 4315) 56.7907 Tj +-13543.7 TJm +(0729 1726) 39.3166 Tj +17.4613 -284.7989 Td +(4315 4363) 39.3166 Tj +-11537.3 TJm +(STS_TG32 0733) 56.7907 Tj +0 -294.2922 Td (sleep 2003) 43.6851 Tj -15048.7 TJm (0733 0827) 39.3166 Tj -17.4613 -37.9735 Td +17.4613 -303.7856 Td (0311 1659 2003 2006) 83.0018 Tj -6520.6 TJm (sum 5525) 34.9481 Tj -17.4613 -47.4664 Td +17.4613 -313.2786 Td (2009 2188 2978 3480) 83.0018 Tj -8527.14 TJm (5525 5527 5529 5531) 83.0018 Tj -17.4613 -56.9594 Td +17.4613 -322.7715 Td (3581 3912 5242 5261) 83.0018 Tj -8527.14 TJm (5532 5543 5592) 61.1592 Tj -17.4613 -66.4524 Td +17.4613 -332.2645 Td (6566 6779) 39.3166 Tj -11537.3 TJm (superblock 3161) 65.5277 Tj -0 -75.9457 Td +0 -341.7579 Td (spinlock 1301) 56.7907 Tj -13543.7 TJm (3161 3678 3708 3733) 83.0018 Tj -17.4613 -85.4391 Td +17.4613 -351.2512 Td (0206 0311 0321 0323) 83.0018 Tj -8527.14 TJm (3807) 17.4741 Tj -17.4613 -94.9321 Td +17.4613 -360.7442 Td (0324 0325 0354 1301) 83.0018 Tj -6520.6 TJm (SVR 5664) 34.9481 Tj -17.4613 -104.425 Td +17.4613 -370.2372 Td (1358 1361 1373 1402) 83.0018 Tj -8527.14 TJm (5664 5707) 39.3166 Tj -17.4613 -113.918 Td +17.4613 -379.7301 Td (1444 1606 1609 2003) 83.0018 Tj -6520.6 TJm (swtch 2208) 43.6851 Tj -17.4613 -123.411 Td +17.4613 -389.2231 Td (2260 2268 2557 2562) 83.0018 Tj -8527.14 TJm (0318 1928 1967 2207) 83.0018 Tj -17.4613 -132.9039 Td +17.4613 -398.7161 Td (3309 3324 3526 3530) 83.0018 Tj -8527.14 TJm (2208) 17.4741 Tj -17.4613 -142.3969 Td -(3668 3784 4404 4408) 83.0018 Tj +17.4613 -408.209 Td +(3668 3784 4405 4409) 83.0018 Tj -6520.6 TJm -(syscall 2874) 52.4222 Tj -17.4613 -151.8899 Td -(5156 5161 6308 6319) 83.0018 Tj --8527.14 TJm -(0344 2607 2756 2874) 83.0018 Tj -17.4613 -161.3829 Td -(6502) 17.4741 Tj --14045.6 TJm (SYSCALL 6753 6760 6761 6762 6763 67) 152.898 Tj -0 -170.8762 Td -(STA_R 0617 0718) 65.5277 Tj --12540.3 TJm -(6760 6761 6762 6763) 83.0018 Tj -17.4613 -180.3696 Td -(0617 0718 0992 1092) 83.0018 Tj +17.4613 -417.702 Td +(5157 5162 6308 6320) 83.0018 Tj -8527.14 TJm +(6760 6761 6762 6763) 83.0018 Tj +17.4613 -427.195 Td +(6502) 17.4741 Tj +-16052.1 TJm (6764 6765 6766 6767) 83.0018 Tj -17.4613 -189.8625 Td -(1708 1725) 39.3166 Tj --13543.8 TJm -(6768 6769 6770 6771) 83.0018 Tj -0 -199.3559 Td +0 -436.6883 Td (start 0914 1028 6707) 87.3703 Tj -10032 TJm -(6772 6773 6774 6775) 83.0018 Tj -17.4613 -208.8493 Td +(6768 6769 6770 6771) 83.0018 Tj +17.4613 -446.1817 Td (0913 0914 0975 1027) 83.0018 Tj -8527.14 TJm -(6776 6777 6778 6779) 83.0018 Tj -17.4613 -218.3422 Td +(6772 6773 6774 6775) 83.0018 Tj +17.4613 -455.6747 Td (1028 1075 1076 6706) 83.0018 Tj --6520.6 TJm -(sys_chdir 4930) 61.1592 Tj -17.4613 -227.8352 Td +-8527.14 TJm +(6776 6777 6778 6779) 83.0018 Tj +17.4613 -465.1676 Td (6707) 17.4741 Tj --16052.1 TJm -(2829 2851 4930) 61.1592 Tj -0 -237.3286 Td +-14045.6 TJm +(syscall 2874) 52.4222 Tj +0 -474.6606 Td (stat 3104) 39.3166 Tj --13543.8 TJm -(SYS_chdir 2716) 61.1592 Tj -17.4613 -246.8219 Td +-15550.3 TJm +(0344 2607 2756 2874) 83.0018 Tj +17.4613 -484.154 Td (0207 0230 0248 3104) 83.0018 Tj +-6520.6 TJm +(SYS_chdir 2716) 61.1592 Tj +17.4613 -493.6469 Td +(3665 4085 4476 4553) 83.0018 Tj -8527.14 TJm (2716 2851) 39.3166 Tj -17.4613 -256.3149 Td -(3665 4085 4476 4553) 83.0018 Tj --6520.6 TJm -(sys_close 4639) 61.1592 Tj -17.4613 -265.8079 Td -(4654 6803) 39.3166 Tj --13543.8 TJm -(2830 2852 4639) 61.1592 Tj -0 -275.3012 Td -(stati 4085) 43.6851 Tj --13042.1 TJm -(SYS_close 2707) 61.1592 Tj -17.4613 -284.7946 Td -(0248 4085 4480) 61.1592 Tj --11035.5 TJm -(2707 2852) 39.3166 Tj -0 -294.2879 Td -(STA_W 0616 0717) 65.5277 Tj --10533.8 TJm -(sys_dup 4601) 52.4222 Tj -17.4613 -303.7813 Td -(0616 0717 0993 1093) 83.0018 Tj --8527.14 TJm -(2831 2853 4601) 61.1592 Tj -17.4613 -313.2743 Td -(1709 1710 1726) 61.1592 Tj --9028.94 TJm -(SYS_dup 2717) 52.4222 Tj -0 -322.7676 Td -(STA_X 0613 0714) 65.5277 Tj --12540.3 TJm -(2717 2853) 39.3166 Tj -17.4613 -332.2606 Td -(0613 0714 0992 1092) 83.0018 Tj --6520.6 TJm -(sys_exec 4951) 56.7907 Tj -17.4613 -341.7536 Td -(1708 1725) 39.3166 Tj --13543.8 TJm -(2832 2854 4951) 61.1592 Tj -0 -351.2469 Td -(sti 0527) 34.9481 Tj --14045.5 TJm -(SYS_exec 2709) 56.7907 Tj -17.4613 -360.7403 Td -(0527 0529 1473 1914) 83.0018 Tj --8527.14 TJm -(2709 2854 6711) 61.1592 Tj -0 -370.2337 Td -(stosb 0442) 43.6851 Tj --13042.1 TJm -(sys_exit 2914) 56.7907 Tj -17.4613 -379.727 Td -(0442 0444 1139 5306) 83.0018 Tj --8527.14 TJm -(2833 2855 2914) 61.1592 Tj -0 -389.2204 Td -(strlen 5389) 48.0537 Tj --12540.5 TJm -(SYS_exit 2702) 56.7907 Tj -17.4613 -398.7137 Td -(0334 5046 5086 5389) 83.0018 Tj --8527.14 TJm -(2702 2855 6716) 61.1592 Tj -17.4613 -408.2067 Td -(7019 7223) 39.3166 Tj --11537.3 TJm -(sys_fork 2908) 56.7907 Tj -0 -417.7001 Td -(strncmp 5351) 52.4222 Tj --14045.3 TJm -(2834 2856 2908) 61.1592 Tj -17.4613 -427.1934 Td -(0335 4205 5351) 61.1592 Tj --9028.94 TJm -(SYS_fork 2701) 56.7907 Tj -0 -436.6868 Td -(strncpy 5361) 52.4222 Tj --14045.3 TJm -(2701 2856) 39.3166 Tj -17.4613 -446.1801 Td -(0336 4272 5361) 61.1592 Tj --9028.94 TJm -(sys_fstat 4651) 61.1592 Tj -0 -455.6735 Td -(STS_IG32 0732) 56.7907 Tj --13543.7 TJm -(2835 2857 4651) 61.1592 Tj -17.4613 -465.1669 Td -(0732 0827) 39.3166 Tj --11537.3 TJm -(SYS_fstat 2713) 61.1592 Tj -0 -474.6598 Td -(STS_T32A 0729) 56.7907 Tj --13543.7 TJm -(2713 2857) 39.3166 Tj -17.4613 -484.1532 Td -(0729 1727) 39.3166 Tj --11537.3 TJm -(sys_getpid 2937) 65.5277 Tj -0 -493.6466 Td -(STS_TG32 0733) 56.7907 Tj --13543.7 TJm -(2836 2858 2937) 61.1592 Tj Q Q Q @@ -3589,207 +3589,207 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 11) 192.2146 Tj +(Aug 30 21:46 2009 cross-references Page 11) 192.2146 Tj 0 -28.4801 Td +(sys_chdir 4930) 61.1592 Tj +-11035.5 TJm +(SYS_pipe 2704) 56.7907 Tj +17.4613 -37.9735 Td +(2829 2851 4930) 61.1592 Tj +-11035.5 TJm +(2704 2864) 39.3166 Tj +0 -47.4664 Td +(SYS_close 2707) 61.1592 Tj +-11035.5 TJm +(sys_pipe 4976) 56.7907 Tj +17.4613 -56.9598 Td +(2707 2852) 39.3166 Tj +-13543.8 TJm +(2842 2864 4976) 61.1592 Tj +0 -66.4531 Td +(sys_close 4639) 61.1592 Tj +-11035.5 TJm +(SYS_read 2706) 56.7907 Tj +17.4613 -75.9465 Td +(2830 2852 4639) 61.1592 Tj +-11035.5 TJm +(2706 2865) 39.3166 Tj +0 -85.4399 Td +(SYS_dup 2717) 52.4222 Tj +-12038.8 TJm +(sys_read 4615) 56.7907 Tj +17.4613 -94.9332 Td +(2717 2853) 39.3166 Tj +-13543.8 TJm +(2843 2865 4615) 61.1592 Tj +0 -104.4266 Td +(sys_dup 4601) 52.4222 Tj +-12038.8 TJm +(SYS_sbrk 2719) 56.7907 Tj +17.4613 -113.9199 Td +(2831 2853 4601) 61.1592 Tj +-11035.5 TJm +(2719 2866) 39.3166 Tj +0 -123.4133 Td +(SYS_exec 2709) 56.7907 Tj +-11537.1 TJm +(sys_sbrk 2951) 56.7907 Tj +17.4613 -132.9067 Td +(2709 2854 6711) 61.1592 Tj +-11035.5 TJm +(2844 2866 2951) 61.1592 Tj +0 -142.4 Td +(sys_exec 4951) 56.7907 Tj +-11537.1 TJm +(SYS_sleep 2720) 61.1592 Tj +17.4613 -151.8934 Td +(2832 2854 4951) 61.1592 Tj +-11035.5 TJm +(2720 2867) 39.3166 Tj +0 -161.3867 Td +(SYS_exit 2702) 56.7907 Tj +-11537.1 TJm +(sys_sleep 2965) 61.1592 Tj +17.4613 -170.8801 Td +(2702 2855 6716) 61.1592 Tj +-11035.5 TJm +(2845 2867 2965) 61.1592 Tj +0 -180.3735 Td +(sys_exit 2914) 56.7907 Tj +-11537.1 TJm +(SYS_unlink 2712) 65.5277 Tj +17.4613 -189.8664 Td +(2833 2855 2914) 61.1592 Tj +-11035.5 TJm +(2712 2868) 39.3166 Tj +0 -199.3598 Td +(SYS_fork 2701) 56.7907 Tj +-11537.1 TJm +(sys_unlink 4751) 65.5277 Tj +17.4613 -208.8532 Td +(2701 2856) 39.3166 Tj +-13543.8 TJm +(2846 2868 4751) 61.1592 Tj +0 -218.3465 Td +(sys_fork 2908) 56.7907 Tj +-11537.1 TJm +(SYS_wait 2703) 56.7907 Tj +17.4613 -227.8399 Td +(2834 2856 2908) 61.1592 Tj +-11035.5 TJm +(2703 2869) 39.3166 Tj +0 -237.3332 Td +(SYS_fstat 2713) 61.1592 Tj +-11035.5 TJm +(sys_wait 2921) 56.7907 Tj +17.4613 -246.8266 Td +(2713 2857) 39.3166 Tj +-13543.8 TJm +(2847 2869 2921) 61.1592 Tj +0 -256.32 Td +(sys_fstat 4651) 61.1592 Tj +-11035.5 TJm +(SYS_write 2705) 61.1592 Tj +17.4613 -265.8133 Td +(2835 2857 4651) 61.1592 Tj +-11035.5 TJm +(2705 2870) 39.3166 Tj +0 -275.3067 Td (SYS_getpid 2718) 65.5277 Tj -10533.8 TJm -(taskstate 0751) 61.1592 Tj -17.4613 -37.9735 Td +(sys_write 4627) 61.1592 Tj +17.4613 -284.8 Td (2718 2858) 39.3166 Tj -13543.8 TJm -(0751 1560) 39.3166 Tj -0 -47.4664 Td -(sys_kill 2927) 56.7907 Tj --11537.1 TJm -(TDCR 5685) 39.3166 Tj -17.4613 -56.9598 Td -(2837 2859 2927) 61.1592 Tj +(2848 2870 4627) 61.1592 Tj +0 -294.2934 Td +(sys_getpid 2937) 65.5277 Tj +-10533.8 TJm +(taskstate 0751) 61.1592 Tj +17.4613 -303.7868 Td +(2836 2858 2937) 61.1592 Tj -11035.5 TJm -(5685 5713) 39.3166 Tj -0 -66.4531 Td +(0751 1560) 39.3166 Tj +0 -313.2801 Td (SYS_kill 2708) 56.7907 Tj -11537.1 TJm -(T_DEV 3102) 43.6851 Tj -17.4613 -75.9465 Td +(TDCR 5685) 39.3166 Tj +17.4613 -322.7735 Td (2708 2859) 39.3166 Tj -13543.8 TJm -(3102 4107 4157 4923) 83.0018 Tj -0 -85.4399 Td -(sys_link 4663) 56.7907 Tj +(5685 5713) 39.3166 Tj +0 -332.2664 Td +(sys_kill 2927) 56.7907 Tj -11537.1 TJm -(T_DIR 3100) 43.6851 Tj -17.4613 -94.9332 Td -(2838 2860 4663) 61.1592 Tj +(ticks 2563) 43.6851 Tj +17.4613 -341.7598 Td +(2837 2859 2927) 61.1592 Tj -11035.5 TJm -(3100 4218 4365 4673) 83.0018 Tj -0 -104.4266 Td +(0352 2563 2617 2618) 83.0018 Tj +0 -351.2532 Td (SYS_link 2714) 56.7907 Tj -13543.7 TJm -(4778 4787 4829 4868) 83.0018 Tj -17.4613 -113.9199 Td -(2714 2860) 39.3166 Tj --13543.8 TJm -(4906 4938) 39.3166 Tj -0 -123.4133 Td -(sys_mkdir 4901) 61.1592 Tj --11035.5 TJm -(T_FILE 3101) 48.0537 Tj -17.4613 -132.9067 Td -(2839 2861 4901) 61.1592 Tj --11035.5 TJm -(3101 4814 4862) 61.1592 Tj -0 -142.4 Td -(SYS_mkdir 2715) 61.1592 Tj --11035.5 TJm -(ticks 2563) 43.6851 Tj -17.4613 -151.8934 Td -(2715 2861) 39.3166 Tj --13543.8 TJm -(0352 2563 2617 2618) 83.0018 Tj -0 -161.3867 Td -(sys_mknod 4913) 61.1592 Tj --13042 TJm (2972 2973 2978) 61.1592 Tj -17.4613 -170.8801 Td -(2840 2862 4913) 61.1592 Tj --9028.94 TJm +17.4613 -360.7465 Td +(2714 2860) 39.3166 Tj +-11537.3 TJm (tickslock 2562) 61.1592 Tj -0 -180.3735 Td +0 -370.2399 Td +(sys_link 4663) 56.7907 Tj +-13543.7 TJm +(0354 2562 2574 2616) 83.0018 Tj +17.4613 -379.7332 Td +(2838 2860 4663) 61.1592 Tj +-11035.5 TJm +(2619 2971 2975 2978) 83.0018 Tj +0 -389.2266 Td +(SYS_mkdir 2715) 61.1592 Tj +-13042 TJm +(2980) 17.4741 Tj +17.4613 -398.72 Td +(2715 2861) 39.3166 Tj +-11537.3 TJm +(TICR 5683) 39.3166 Tj +0 -408.2133 Td +(sys_mkdir 4901) 61.1592 Tj +-13042 TJm +(5683 5715) 39.3166 Tj +17.4613 -417.7067 Td +(2839 2861 4901) 61.1592 Tj +-9028.94 TJm +(TIMER 5675) 43.6851 Tj +0 -427.2 Td (SYS_mknod 2711) 61.1592 Tj -13042 TJm -(0354 2562 2574 2616) 83.0018 Tj -17.4613 -189.8664 Td -(2711 2862) 39.3166 Tj --13543.8 TJm -(2619 2971 2975 2978) 83.0018 Tj -0 -199.3598 Td -(sys_open 4851) 56.7907 Tj --13543.7 TJm -(2980) 17.4741 Tj -17.4613 -208.8532 Td -(2841 2863 4851) 61.1592 Tj --9028.94 TJm -(TICR 5683) 39.3166 Tj -0 -218.3465 Td -(SYS_open 2710) 56.7907 Tj --13543.7 TJm -(5683 5715) 39.3166 Tj -17.4613 -227.8399 Td -(2710 2863) 39.3166 Tj --11537.3 TJm -(TIMER 5675) 43.6851 Tj -0 -237.3332 Td -(sys_pipe 4976) 56.7907 Tj --13543.7 TJm (5675 5714) 39.3166 Tj -17.4613 -246.8266 Td -(2842 2864 4976) 61.1592 Tj --9028.94 TJm -(TIMER_16BIT 6671) 69.8962 Tj -0 -256.32 Td -(SYS_pipe 2704) 56.7907 Tj --13543.7 TJm -(6671 6677) 39.3166 Tj -17.4613 -265.8133 Td -(2704 2864) 39.3166 Tj --11537.3 TJm -(TIMER_DIV 6666) 61.1592 Tj -0 -275.3067 Td -(sys_read 4615) 56.7907 Tj --13543.7 TJm -(6666 6678 6679) 61.1592 Tj -17.4613 -284.8 Td -(2843 2865 4615) 61.1592 Tj --9028.94 TJm -(TIMER_FREQ 6665) 65.5277 Tj -0 -294.2934 Td -(SYS_read 2706) 56.7907 Tj --13543.7 TJm -(6665 6666) 39.3166 Tj -17.4613 -303.7868 Td -(2706 2865) 39.3166 Tj +17.4613 -436.6934 Td +(2711 2862) 39.3166 Tj -11537.3 TJm (timerinit 6674) 61.1592 Tj -0 -313.2801 Td -(sys_sbrk 2951) 56.7907 Tj --13543.7 TJm -(0347 1234 6674) 61.1592 Tj -17.4613 -322.7735 Td -(2844 2866 2951) 61.1592 Tj --9028.94 TJm -(TIMER_MODE 6668) 65.5277 Tj -0 -332.2664 Td -(SYS_sbrk 2719) 56.7907 Tj --13543.7 TJm -(6668 6677) 39.3166 Tj -17.4613 -341.7598 Td -(2719 2866) 39.3166 Tj --11537.3 TJm -(TIMER_RATEGEN 6670) 78.6333 Tj -0 -351.2532 Td -(sys_sleep 2965) 61.1592 Tj --13042 TJm -(6670 6677) 39.3166 Tj -17.4613 -360.7465 Td -(2845 2867 2965) 61.1592 Tj --9028.94 TJm -(TIMER_SEL0 6669) 65.5277 Tj -0 -370.2399 Td -(SYS_sleep 2720) 61.1592 Tj --13042 TJm -(6669 6677) 39.3166 Tj -17.4613 -379.7332 Td -(2720 2867) 39.3166 Tj --11537.3 TJm -(T_IRQ0 2429) 48.0537 Tj -0 -389.2266 Td -(sys_unlink 4751) 65.5277 Tj --12540.3 TJm -(2429 2614 2623 2627) 83.0018 Tj -17.4613 -398.72 Td -(2846 2868 4751) 61.1592 Tj --11035.5 TJm -(2631 2635 2636 2663) 83.0018 Tj -0 -408.2133 Td -(SYS_unlink 2712) 65.5277 Tj --12540.3 TJm -(5707 5714 5727 5917) 83.0018 Tj -17.4613 -417.7067 Td -(2712 2868) 39.3166 Tj --13543.8 TJm -(5931 5997 6016) 61.1592 Tj -0 -427.2 Td -(sys_wait 2921) 56.7907 Tj --11537.1 TJm -(TPR 5662) 34.9481 Tj -17.4613 -436.6934 Td -(2847 2869 2921) 61.1592 Tj --11035.5 TJm -(5662 5743) 39.3166 Tj 0 -446.1868 Td -(SYS_wait 2703) 56.7907 Tj --11537.1 TJm -(trap 2601) 39.3166 Tj +(sys_mknod 4913) 61.1592 Tj +-13042 TJm +(0347 1234 6674) 61.1592 Tj 17.4613 -455.6801 Td -(2703 2869) 39.3166 Tj --13543.8 TJm -(2452 2454 2524 2601) 83.0018 Tj -0 -465.1735 Td -(sys_write 4627) 61.1592 Tj --13042 TJm -(2645 2647 2650) 61.1592 Tj -17.4613 -474.6665 Td -(2848 2870 4627) 61.1592 Tj +(2840 2862 4913) 61.1592 Tj -9028.94 TJm -(trapframe 0552) 61.1592 Tj -0 -484.1598 Td -(SYS_write 2705) 61.1592 Tj --13042 TJm -(0552 1536 1780 2601) 83.0018 Tj -17.4613 -493.6532 Td -(2705 2870) 39.3166 Tj +(TIMER_16BIT 6671) 69.8962 Tj +0 -465.1735 Td +(SYS_open 2710) 56.7907 Tj +-13543.7 TJm +(6671 6677) 39.3166 Tj +17.4613 -474.6665 Td +(2710 2863) 39.3166 Tj -11537.3 TJm -(trapret 2529) 52.4222 Tj +(TIMER_DIV 6666) 61.1592 Tj +0 -484.1598 Td +(sys_open 4851) 56.7907 Tj +-13543.7 TJm +(6666 6678 6679) 61.1592 Tj +17.4613 -493.6532 Td +(2841 2863 4851) 61.1592 Tj +-9028.94 TJm +(TIMER_FREQ 6665) 65.5277 Tj Q Q q @@ -3806,73 +3806,129 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 cross-references Page 12) 192.2146 Tj +(Aug 30 21:46 2009 cross-references Page 12) 192.2146 Tj 17.4613 -28.4801 Td -(1617 1785 2528 2529) 83.0018 Tj --6520.6 TJm -(waitdisk 1151) 56.7907 Tj -0 -37.9735 Td +(6665 6666) 39.3166 Tj +-11537.3 TJm (T_SYSCALL 2426) 61.1592 Tj --13042 TJm -(1151 1163 1172) 61.1592 Tj -17.4613 -47.4664 Td +0 -37.9735 Td +(TIMER_MODE 6668) 65.5277 Tj +-12540.3 TJm (2426 2572 2603 6712) 83.0018 Tj --6520.6 TJm -(wakeup 2064) 48.0537 Tj -17.4613 -56.9598 Td -(6717 6757) 39.3166 Tj +17.4613 -47.4664 Td +(6668 6677) 39.3166 Tj -13543.8 TJm -(0314 2064 2618 3422) 83.0018 Tj -0 -66.4531 Td +(6717 6757) 39.3166 Tj +0 -56.9598 Td +(TIMER_RATEGEN 6670) 78.6333 Tj +-9028.81 TJm +(usegment 1721) 56.7907 Tj +17.4613 -66.4531 Td +(6670 6677) 39.3166 Tj +-13543.8 TJm +(0310 1721 1824 1926) 83.0018 Tj +0 -75.9465 Td +(TIMER_SEL0 6669) 65.5277 Tj +-12540.3 TJm +(5112) 17.4741 Tj +17.4613 -85.4399 Td +(6669 6677) 39.3166 Tj +-11537.3 TJm +(userinit 1780) 56.7907 Tj +0 -94.9332 Td +(TPR 5662) 34.9481 Tj +-16052 TJm +(0312 1235 1780) 61.1592 Tj +17.4613 -104.4266 Td +(5662 5743) 39.3166 Tj +-11537.3 TJm +(VER 5661) 34.9481 Tj +0 -113.9199 Td +(trap 2601) 39.3166 Tj +-15550.3 TJm +(5661 5723) 39.3166 Tj +17.4613 -123.4133 Td +(2452 2454 2524 2601) 83.0018 Tj +-6520.6 TJm +(wait 2153) 39.3166 Tj +17.4613 -132.9067 Td +(2645 2647 2650) 61.1592 Tj +-11035.5 TJm +(0313 2153 2923 6762) 83.0018 Tj +0 -142.4 Td +(trapframe 0552) 61.1592 Tj +-13042 TJm +(6833 6944 6970 6971) 83.0018 Tj +17.4613 -151.8934 Td +(0552 1536 1764 2601) 83.0018 Tj +-8527.14 TJm +(7026) 17.4741 Tj +0 -161.3867 Td +(trapret 2529) 52.4222 Tj +-12038.8 TJm +(waitdisk 1151) 56.7907 Tj +17.4613 -170.8801 Td +(1617 1769 2528 2529) 83.0018 Tj +-8527.14 TJm +(1151 1163 1172) 61.1592 Tj +0 -180.3735 Td (tvinit 2566) 48.0537 Tj --14547 TJm -(3639 3941 3966 5216) 83.0018 Tj -17.4613 -75.9465 Td +-12540.5 TJm +(wakeup 2064) 48.0537 Tj +17.4613 -189.8664 Td (0353 1228 2566) 61.1592 Tj -11035.5 TJm +(0314 2064 2618 3422) 83.0018 Tj +0 -199.3598 Td +(T_DEV 3102) 43.6851 Tj +-15048.7 TJm +(3639 3941 3966 5216) 83.0018 Tj +17.4613 -208.8532 Td +(3102 4107 4157 4923) 83.0018 Tj +-8527.14 TJm (5219 5241 5246 5268) 83.0018 Tj -0 -85.4399 Td -(usegment 1722) 56.7907 Tj --13543.7 TJm +0 -218.3465 Td +(T_DIR 3100) 43.6851 Tj +-15048.7 TJm (6541) 17.4741 Tj -17.4613 -94.9332 Td -(0310 1722 1846 1926) 83.0018 Tj +17.4613 -227.8399 Td +(3100 4218 4365 4673) 83.0018 Tj -6520.6 TJm (wakeup1 2053) 52.4222 Tj -17.4613 -104.4266 Td -(5112) 17.4741 Tj --16052.1 TJm +17.4613 -237.3332 Td +(4778 4787 4829 4868) 83.0018 Tj +-8527.14 TJm (2053 2067 2126 2133) 83.0018 Tj -0 -113.9199 Td -(userinit 1802) 56.7907 Tj --11537.1 TJm -(writei 4152) 48.0537 Tj -17.4613 -123.4133 Td -(0312 1235 1802) 61.1592 Tj --11035.5 TJm -(0249 4152 4274 4532) 83.0018 Tj -0 -132.9067 Td -(VER 5661) 34.9481 Tj --16052 TJm -(4785 4786) 39.3166 Tj -17.4613 -142.4 Td -(5661 5723) 39.3166 Tj +17.4613 -246.8266 Td +(4906 4938) 39.3166 Tj -11537.3 TJm +(writei 4152) 48.0537 Tj +0 -256.32 Td +(T_FILE 3101) 48.0537 Tj +-14547 TJm +(0249 4152 4274 4532) 83.0018 Tj +17.4613 -265.8133 Td +(3101 4814 4862) 61.1592 Tj +-11035.5 TJm +(4785 4786) 39.3166 Tj +0 -275.3067 Td +(T_IRQ0 2429) 48.0537 Tj +-12540.5 TJm (xchg 0501) 39.3166 Tj -0 -151.8934 Td -(wait 2153) 39.3166 Tj --15550.3 TJm +17.4613 -284.8 Td +(2429 2614 2623 2627) 83.0018 Tj +-8527.14 TJm (0501 1260 1382 1419) 83.0018 Tj -17.4613 -161.3867 Td -(0313 2153 2923 6762) 83.0018 Tj +17.4613 -294.2934 Td +(2631 2635 2636 2663) 83.0018 Tj -6520.6 TJm (yield 1973) 43.6851 Tj -17.4613 -170.8801 Td -(6833 6944 6970 6971) 83.0018 Tj +17.4613 -303.7868 Td +(5707 5714 5727 5917) 83.0018 Tj -8527.14 TJm (0315 1973 2664) 61.1592 Tj -17.4613 -180.3735 Td -(7026) 17.4741 Tj +17.4613 -313.2801 Td +(5931 5997 6016) 61.1592 Tj Q Q Q @@ -3920,7 +3976,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/types.h Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/types.h Page 1) 166.0035 Tj 0 -28.4801 Td (0100 typedef unsigned int uint;) 144.161 Tj 0 -37.9735 Td @@ -4039,7 +4095,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/param.h Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/param.h Page 1) 166.0035 Tj 0 -28.4801 Td (0150 #define NPROC 64 // maximum number of processes) 262.1109 Tj 0 -37.9735 Td @@ -4193,7 +4249,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/defs.h Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/defs.h Page 1) 161.635 Tj 0 -28.4801 Td (0200 struct buf;) 69.8962 Tj 0 -37.9735 Td @@ -4314,7 +4370,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/defs.h Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/defs.h Page 2) 161.635 Tj 0 -28.4801 Td (0250 // ide.c) 56.7907 Tj 0 -37.9735 Td @@ -4354,7 +4410,7 @@ q 0 -199.3606 Td (0268 // lapic.c) 65.5277 Tj 0 -208.8539 Td -(0269 int cpu\(void\);) 135.4239 Tj +(0269 int cpunum\(void\);) 148.5295 Tj 0 -218.3473 Td (0270 extern volatile uint* lapic;) 157.2665 Tj 0 -227.8407 Td @@ -4464,7 +4520,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/defs.h Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/defs.h Page 3) 161.635 Tj 0 -28.4801 Td (0300 // proc.c) 61.1592 Tj 0 -37.9735 Td @@ -4585,7 +4641,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/defs.h Page 4) 161.635 Tj +(Aug 30 21:46 2009 xv6/defs.h Page 4) 161.635 Tj 0 -28.4801 Td (0350 // trap.c) 61.1592 Tj 0 -37.9735 Td @@ -4735,7 +4791,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/x86.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/x86.h Page 1) 157.2665 Tj 0 -28.4801 Td (0400 // Routines to let C code use special x86 instructions.) 262.1109 Tj 0 -37.9735 Td @@ -4857,7 +4913,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/x86.h Page 2) 157.2665 Tj +(Aug 30 21:46 2009 xv6/x86.h Page 2) 157.2665 Tj 0 -28.4801 Td (0450 struct segdesc;) 87.3703 Tj 0 -37.9735 Td @@ -5007,7 +5063,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/x86.h Page 3) 157.2665 Tj +(Aug 30 21:46 2009 xv6/x86.h Page 3) 157.2665 Tj 0 -28.4801 Td (0500 static inline uint) 100.4758 Tj 0 -37.9735 Td @@ -5126,7 +5182,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/x86.h Page 4) 157.2665 Tj +(Aug 30 21:46 2009 xv6/x86.h Page 4) 157.2665 Tj 0 -28.4801 Td (0550 // Layout of the trap frame built on the stack by the) 253.3738 Tj 0 -37.9735 Td @@ -5277,7 +5333,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/asm.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/asm.h Page 1) 157.2665 Tj 0 -28.4801 Td (0600 //) 30.5796 Tj 0 -37.9735 Td @@ -5406,7 +5462,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mmu.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/mmu.h Page 1) 157.2665 Tj 0 -28.4801 Td (0650 // This file contains definitions for the) 200.9517 Tj 0 -37.9735 Td @@ -5568,33 +5624,35 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mmu.h Page 2) 157.2665 Tj +(Aug 30 21:46 2009 xv6/mmu.h Page 2) 157.2665 Tj 0 -28.4801 Td (0700 // Normal segment) 96.1073 Tj 0 -37.9735 Td (0701 #define SEG\(type, base, lim, dpl\) \(struct segdesc\) \ - \\) 340.7441 Tj +\\) 262.1109 Tj 0 -47.4668 Td -(0702 { \(\(lim\) >> 12\) & 0xffff, \(base\) & 0xffff, \(\(base\)\ - >> 16\) & 0xff, \\) 340.7441 Tj +(0702 { \(\(lim\) >> 12\) & 0xffff, \(uint\)\(base\) & 0xffff, \ + \\) 262.1109 Tj 0 -56.9602 Td -(0703 type, 1, dpl, 1, \(uint\) \(lim\) >> 28, 0, 0, 1, 1, \ - \\) 340.7441 Tj +(0703 \(\(uint\)\(base\) >> 16\) & 0xff, type, 1, dpl, 1, \ + \\) 262.1109 Tj 0 -66.4535 Td -(0704 \(uint\) \(base\) >> 24 }) 131.0554 Tj +(0704 \(uint\)\(lim\) >> 28, 0, 0, 1, 1, \(uint\)\(base\) >> 2\ +4 }) 253.3738 Tj 0 -75.9469 Td (0705 ) 21.8426 Tj 0 -85.4403 Td (0706 #define SEG16\(type, base, lim, dpl\) \(struct segdesc\) \ - \\) 340.7441 Tj +\\) 262.1109 Tj 0 -94.9336 Td -(0707 { \(lim\) & 0xffff, \(base\) & 0xffff, \(\(base\) >> 16\) \ -& 0xff, \\) 340.7441 Tj +(0707 { \(lim\) & 0xffff, \(uint\)\(base\) & 0xffff, \ + \\) 262.1109 Tj 0 -104.427 Td -(0708 type, 1, dpl, 1, \(uint\) \(lim\) >> 16, 0, 0, 1, 0, \ - \\) 340.7441 Tj +(0708 \(\(uint\)\(base\) >> 16\) & 0xff, type, 1, dpl, 1, \ + \\) 262.1109 Tj 0 -113.9203 Td -(0709 \(uint\) \(base\) >> 24 }) 131.0554 Tj +(0709 \(uint\)\(lim\) >> 16, 0, 0, 1, 0, \(uint\)\(base\) >> 2\ +4 }) 253.3738 Tj 0 -123.4137 Td (0710 ) 21.8426 Tj 0 -132.9071 Td @@ -5698,7 +5756,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mmu.h Page 3) 157.2665 Tj +(Aug 30 21:46 2009 xv6/mmu.h Page 3) 157.2665 Tj 0 -28.4801 Td (0750 // Task state segment format) 144.161 Tj 0 -37.9735 Td @@ -5851,7 +5909,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mmu.h Page 4) 157.2665 Tj +(Aug 30 21:46 2009 xv6/mmu.h Page 4) 157.2665 Tj 0 -28.4801 Td (0800 // Gate descriptors for interrupts and traps) 214.0572 Tj 0 -37.9735 Td @@ -5990,7 +6048,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/elf.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/elf.h Page 1) 157.2665 Tj 0 -28.4801 Td (0850 // Format of an ELF executable file) 174.7406 Tj 0 -37.9735 Td @@ -6141,7 +6199,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootasm.S Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/bootasm.S Page 1) 174.7406 Tj 0 -28.4801 Td (0900 #include "asm.h") 91.7388 Tj 0 -37.9735 Td @@ -6267,7 +6325,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootasm.S Page 2) 174.7406 Tj +(Aug 30 21:46 2009 xv6/bootasm.S Page 2) 174.7406 Tj 0 -28.4801 Td (0950 # Switch from real to protected mode, using a bootstrap \ GDT) 288.322 Tj @@ -6423,7 +6481,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootother.S Page 1) 183.4776 Tj +(Aug 30 21:46 2009 xv6/bootother.S Page 1) 183.4776 Tj 0 -28.4801 Td (1000 #include "asm.h") 91.7388 Tj 0 -37.9735 Td @@ -6550,7 +6608,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootother.S Page 2) 183.4776 Tj +(Aug 30 21:46 2009 xv6/bootother.S Page 2) 183.4776 Tj 0 -28.4801 Td (1050 # Switch from real to protected mode, using a bootstrap \ GDT) 288.322 Tj @@ -6708,7 +6766,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootmain.c Page 1) 179.1091 Tj +(Aug 30 21:46 2009 xv6/bootmain.c Page 1) 179.1091 Tj 0 -28.4801 Td (1100 // Boot loader.) 87.3703 Tj 0 -37.9735 Td @@ -6830,7 +6888,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bootmain.c Page 2) 179.1091 Tj +(Aug 30 21:46 2009 xv6/bootmain.c Page 2) 179.1091 Tj 0 -28.4801 Td (1150 void) 39.3166 Tj 0 -37.9735 Td @@ -6984,7 +7042,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/main.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/main.c Page 1) 161.635 Tj 0 -28.4801 Td (1200 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -7000,9 +7058,9 @@ q 0 -85.4403 Td (1206 ) 21.8426 Tj 0 -94.9336 Td -(1207 __thread struct cpu *c;) 122.3184 Tj +(1207 __thread struct cpu *cpu;) 131.0554 Tj 0 -104.427 Td -(1208 __thread struct proc *cp;) 131.0554 Tj +(1208 __thread struct proc *proc;) 139.7925 Tj 0 -113.9203 Td (1209 ) 21.8426 Tj 0 -123.4137 Td @@ -7034,7 +7092,7 @@ q 0 -246.8274 Td (1223 uartinit\(\); // serial port) 166.0035 Tj 0 -256.3207 Td -(1224 cprintf\("\\ncpu%d: starting xv6\\n\\n", cpu\(\)\);) 222.7942 Tj +(1224 cprintf\("\\ncpu%d: starting xv6\\n\\n", cpu->id\);) 231.5313 Tj 0 -265.8141 Td (1225 ) 21.8426 Tj 0 -275.3075 Td @@ -7103,7 +7161,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/main.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/main.c Page 2) 161.635 Tj 0 -28.4801 Td (1250 // Bootstrap processor gets here after setting up the hard\ ware.) 297.059 Tj @@ -7116,21 +7174,21 @@ ware.) 297.059 Tj 0 -66.4535 Td (1254 {) 26.2111 Tj 0 -75.9469 Td -(1255 if\(cpu\(\) != mpbcpu\(\)\)) 122.3184 Tj +(1255 if\(cpunum\(\) != mpbcpu\(\)\)) 135.4239 Tj 0 -85.4403 Td -(1256 lapicinit\(cpu\(\)\);) 113.5814 Tj +(1256 lapicinit\(cpunum\(\)\);) 126.6869 Tj 0 -94.9336 Td (1257 ksegment\(\);) 78.6333 Tj 0 -104.427 Td -(1258 cprintf\("cpu%d: mpmain\\n", cpu\(\)\);) 179.1091 Tj +(1258 cprintf\("cpu%d: mpmain\\n", cpu->id\);) 187.8461 Tj 0 -113.9203 Td (1259 idtinit\(\);) 74.2647 Tj 0 -123.4137 Td -(1260 xchg\(&c->booted, 1\);) 117.9499 Tj +(1260 xchg\(&cpu->booted, 1\);) 126.6869 Tj 0 -132.9071 Td (1261 ) 21.8426 Tj 0 -142.4004 Td -(1262 cprintf\("cpu%d: scheduling\\n", cpu\(\)\);) 196.5831 Tj +(1262 cprintf\("cpu%d: scheduling\\n", cpu->id\);) 205.3202 Tj 0 -151.8938 Td (1263 scheduler\(\);) 83.0018 Tj 0 -161.3871 Td @@ -7166,7 +7224,7 @@ bootother_size\);) 332.0071 Tj 0 -294.2942 Td (1278 for\(c = cpus; c < cpus+ncpu; c++\){) 179.1091 Tj 0 -303.7875 Td -(1279 if\(c == cpus+cpu\(\)\) // We've started already.) 240.2683 Tj +(1279 if\(c == cpus+cpunum\(\)\) // We've started already.) 253.3738 Tj 0 -313.2809 Td (1280 continue;) 87.3703 Tj 0 -322.7743 Td @@ -7180,7 +7238,7 @@ bootother_size\);) 332.0071 Tj 0 -360.7477 Td (1285 *\(void**\)\(code-8\) = mpmain;) 157.2665 Tj 0 -370.2411 Td -(1286 lapicstartap\(c->apicid, \(uint\)code\);) 196.5831 Tj +(1286 lapicstartap\(c->id, \(uint\)code\);) 179.1091 Tj 0 -379.7344 Td (1287 ) 21.8426 Tj 0 -389.2278 Td @@ -7256,27 +7314,26 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/spinlock.h Page 1) 179.1091 Tj +(Aug 30 21:46 2009 xv6/spinlock.h Page 1) 179.1091 Tj 0 -28.4801 Td (1300 // Mutual exclusion lock.) 131.0554 Tj 0 -37.9735 Td (1301 struct spinlock {) 96.1073 Tj 0 -47.4668 Td -(1302 uint locked; // Is the lock held?) 183.4776 Tj +(1302 uint locked; // Is the lock held?) 200.9517 Tj 0 -56.9602 Td (1303 ) 21.8426 Tj 0 -66.4535 Td (1304 // For debugging:) 104.8443 Tj 0 -75.9469 Td -(1305 char *name; // Name of lock.) 166.0035 Tj +(1305 char *name; // Name of lock.) 183.4776 Tj 0 -85.4403 Td -(1306 int cpu; // The number of the cpu holding the lock\ -.) 279.5849 Tj +(1306 struct cpu *cpu; // The cpu holding the lock.) 235.8998 Tj 0 -94.9336 Td -(1307 uint pcs[10]; // The call stack \(an array of program c\ -ounters\)) 305.796 Tj +(1307 uint pcs[10]; // The call stack \(an array of progr\ +am counters\)) 323.2701 Tj 0 -104.427 Td -(1308 // that locked the lock.) 200.9517 Tj +(1308 // that locked the lock.) 218.4257 Tj 0 -113.9203 Td (1309 };) 30.5796 Tj 0 -123.4137 Td @@ -7377,7 +7434,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/spinlock.c Page 1) 179.1091 Tj +(Aug 30 21:46 2009 xv6/spinlock.c Page 1) 179.1091 Tj 0 -28.4801 Td (1350 // Mutual exclusion spin locks.) 157.2665 Tj 0 -37.9735 Td @@ -7409,7 +7466,7 @@ q 0 -161.3871 Td (1364 lk->locked = 0;) 96.1073 Tj 0 -170.8805 Td -(1365 lk->cpu = 0xffffffff;) 122.3184 Tj +(1365 lk->cpu = 0;) 83.0018 Tj 0 -180.3739 Td (1366 }) 26.2111 Tj 0 -189.8672 Td @@ -7452,17 +7509,17 @@ ot) 283.9534 Tj 0 -360.7477 Td (1385 // Record info about lock acquisition for debugging.) 257.7424 Tj 0 -370.2411 Td -(1386 // The +10 is only so that we can tell the difference) 262.1109 Tj +(1386 lk->cpu = cpu;) 91.7388 Tj 0 -379.7344 Td -(1387 // between forgetting to initialize lock->cpu) 227.1628 Tj +(1387 getcallerpcs\(&lk, lk->pcs\);) 148.5295 Tj 0 -389.2278 Td -(1388 // and holding a lock on cpu 0.) 166.0035 Tj +(1388 }) 26.2111 Tj 0 -398.7211 Td -(1389 lk->cpu = cpu\(\) + 10;) 122.3184 Tj +(1389 ) 21.8426 Tj 0 -408.2145 Td -(1390 getcallerpcs\(&lk, lk->pcs\);) 148.5295 Tj +(1390 ) 21.8426 Tj 0 -417.7079 Td -(1391 }) 26.2111 Tj +(1391 ) 21.8426 Tj 0 -427.2012 Td (1392 ) 21.8426 Tj 0 -436.6946 Td @@ -7528,7 +7585,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/spinlock.c Page 2) 179.1091 Tj +(Aug 30 21:46 2009 xv6/spinlock.c Page 2) 179.1091 Tj 0 -28.4801 Td (1400 // Release the lock.) 109.2129 Tj 0 -37.9735 Td @@ -7546,7 +7603,7 @@ q 0 -94.9336 Td (1407 lk->pcs[0] = 0;) 96.1073 Tj 0 -104.427 Td -(1408 lk->cpu = 0xffffffff;) 122.3184 Tj +(1408 lk->cpu = 0;) 83.0018 Tj 0 -113.9203 Td (1409 ) 21.8426 Tj 0 -123.4137 Td @@ -7629,7 +7686,7 @@ n\).) 283.9534 Tj 0 -455.6813 Td (1445 {) 26.2111 Tj 0 -465.1747 Td -(1446 return lock->locked && lock->cpu == cpu\(\) + 10;) 235.8998 Tj +(1446 return lock->locked && lock->cpu == cpu;) 205.3202 Tj 0 -474.668 Td (1447 }) 26.2111 Tj 0 -484.1614 Td @@ -7654,7 +7711,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/spinlock.c Page 3) 179.1091 Tj +(Aug 30 21:46 2009 xv6/spinlock.c Page 3) 179.1091 Tj 0 -28.4801 Td (1450 // Pushcli/popcli are like cli/sti except that they are ma\ tched:) 301.4275 Tj @@ -7680,9 +7737,9 @@ rrupts) 301.4275 Tj 0 -123.4137 Td (1460 cli\(\);) 56.7907 Tj 0 -132.9071 Td -(1461 if\(c->ncli++ == 0\)) 109.2129 Tj +(1461 if\(cpu->ncli++ == 0\)) 117.9499 Tj 0 -142.4004 Td -(1462 c->intena = eflags & FL_IF;) 157.2665 Tj +(1462 cpu->intena = eflags & FL_IF;) 166.0035 Tj 0 -151.8938 Td (1463 }) 26.2111 Tj 0 -161.3871 Td @@ -7698,11 +7755,11 @@ rrupts) 301.4275 Tj 0 -208.8539 Td (1469 panic\("popcli - interruptible"\);) 179.1091 Tj 0 -218.3473 Td -(1470 if\(--c->ncli < 0\)) 104.8443 Tj +(1470 if\(--cpu->ncli < 0\)) 113.5814 Tj 0 -227.8407 Td (1471 panic\("popcli"\);) 109.2129 Tj 0 -237.334 Td -(1472 if\(c->ncli == 0 && c->intena\)) 157.2665 Tj +(1472 if\(cpu->ncli == 0 && cpu->intena\)) 174.7406 Tj 0 -246.8274 Td (1473 sti\(\);) 65.5277 Tj 0 -256.3207 Td @@ -7806,7 +7863,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.h Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.h Page 1) 161.635 Tj 0 -28.4801 Td (1500 // Segments in proc->gdt.) 131.0554 Tj 0 -37.9735 Td @@ -7881,7 +7938,7 @@ bytes\)) 301.4275 Tj (1532 char *kstack; // Bottom of kernel stack f\ or this process) 340.7441 Tj 0 -341.761 Td -(1533 enum procstate state; // Process state) 222.7942 Tj +(1533 enum procstate state; // Process state) 227.1628 Tj 0 -351.2543 Td (1534 volatile int pid; // Process ID) 214.0572 Tj 0 -360.7477 Td @@ -7937,7 +7994,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.h Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.h Page 2) 161.635 Tj 0 -28.4801 Td (1550 // Process memory is laid out contiguously, low addresses \ first:) 301.4275 Tj @@ -7956,9 +8013,10 @@ first:) 301.4275 Tj 0 -94.9336 Td (1557 struct cpu {) 74.2647 Tj 0 -104.427 Td -(1558 uchar apicid; // Local APIC ID) 227.1628 Tj +(1558 uchar id; // Local APIC ID; index int\ +o cpus[] below) 336.3756 Tj 0 -113.9203 Td -(1559 struct context *context; // Switch here to enter sch\ +(1559 struct context *scheduler; // Switch here to enter sch\ eduler) 301.4275 Tj 0 -123.4137 Td (1560 struct taskstate ts; // Used by x86 to find stac\ @@ -8001,10 +8059,10 @@ e) 279.5849 Tj 0 -275.3075 Td (1576 // multithreaded user programs.) 157.2665 Tj 0 -284.8008 Td -(1577 extern __thread struct cpu *c; // This cpu.) 235.8998 Tj +(1577 extern __thread struct cpu *cpu; // This cpu.) 244.6368 Tj 0 -294.2942 Td -(1578 extern __thread struct proc *cp; // Current process on\ - this cpu.) 318.9016 Tj +(1578 extern __thread struct proc *proc; // Current process \ +on this cpu.) 327.6386 Tj 0 -303.7875 Td (1579 ) 21.8426 Tj 0 -313.2809 Td @@ -8096,7 +8154,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 1) 161.635 Tj 0 -28.4801 Td (1600 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -8215,7 +8273,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 2) 161.635 Tj 0 -28.4801 Td (1650 // Print a process listing to console. For debugging.) 257.7424 Tj 0 -37.9735 Td @@ -8366,7 +8424,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 3) 161.635 Tj 0 -28.4801 Td (1700 // Set up CPU's kernel segment descriptors.) 209.6887 Tj 0 -37.9735 Td @@ -8378,21 +8436,21 @@ q 0 -66.4535 Td (1704 {) 26.2111 Tj 0 -75.9469 Td -(1705 struct cpu *c1;) 96.1073 Tj +(1705 struct cpu *c;) 91.7388 Tj 0 -85.4403 Td (1706 ) 21.8426 Tj 0 -94.9336 Td -(1707 c1 = &cpus[cpu\(\)];) 109.2129 Tj +(1707 c = &cpus[cpunum\(\)];) 117.9499 Tj 0 -104.427 Td -(1708 c1->gdt[SEG_KCODE] = SEG\(STA_X|STA_R, 0, 0x100000 + 64*\ -1024-1, 0\);) 318.9016 Tj +(1708 c->gdt[SEG_KCODE] = SEG\(STA_X|STA_R, 0, 0x100000 + 64*1\ +024-1, 0\);) 314.533 Tj 0 -113.9203 Td -(1709 c1->gdt[SEG_KDATA] = SEG\(STA_W, 0, 0xffffffff, 0\);) 249.0053 Tj +(1709 c->gdt[SEG_KDATA] = SEG\(STA_W, 0, 0xffffffff, 0\);) 244.6368 Tj 0 -123.4137 Td -(1710 c1->gdt[SEG_KCPU] = SEG\(STA_W, \(uint\)\(&c1->tls+1\), \ -0xffffffff, 0\);) 318.9016 Tj +(1710 c->gdt[SEG_KCPU] = SEG\(STA_W, \(uint\)\(&c->tls+1\), 0x\ +ffffffff, 0\);) 310.1645 Tj 0 -132.9071 Td -(1711 lgdt\(c1->gdt, sizeof\(c1->gdt\)\);) 166.0035 Tj +(1711 lgdt\(c->gdt, sizeof\(c->gdt\)\);) 157.2665 Tj 0 -142.4004 Td (1712 loadfsgs\(SEG_KCPU << 3\);) 135.4239 Tj 0 -151.8938 Td @@ -8400,9 +8458,9 @@ q 0 -161.3871 Td (1714 // Initialize cpu-local variables.) 179.1091 Tj 0 -170.8805 Td -(1715 c = c1;) 61.1592 Tj +(1715 cpu = c;) 65.5277 Tj 0 -180.3739 Td -(1716 cp = 0;) 61.1592 Tj +(1716 proc = 0;) 69.8962 Tj 0 -189.8672 Td (1717 }) 26.2111 Tj 0 -199.3606 Td @@ -8411,69 +8469,68 @@ q (1719 // Set up CPU's segment descriptors and current process ta\ sk state.) 314.533 Tj 0 -218.3473 Td -(1720 // If cp==0, set up for "idle" state for when scheduler\(\)\ - is running.) 323.2701 Tj +(1720 void) 39.3166 Tj 0 -227.8407 Td -(1721 void) 39.3166 Tj +(1721 usegment\(void\)) 83.0018 Tj 0 -237.334 Td -(1722 usegment\(void\)) 83.0018 Tj +(1722 {) 26.2111 Tj 0 -246.8274 Td -(1723 {) 26.2111 Tj +(1723 pushcli\(\);) 74.2647 Tj 0 -256.3207 Td -(1724 pushcli\(\);) 74.2647 Tj +(1724 cpu->gdt[SEG_UCODE] = SEG\(STA_X|STA_R, proc->mem, proc-\ +>sz-1, DPL_USER\);) 345.1126 Tj 0 -265.8141 Td -(1725 c->gdt[SEG_UCODE] = SEG\(STA_X|STA_R, \(uint\)cp->mem, c\ -p->sz-1, DPL_USER\);) 345.1126 Tj +(1725 cpu->gdt[SEG_UDATA] = SEG\(STA_W, proc->mem, proc->sz-1,\ + DPL_USER\);) 318.9016 Tj 0 -275.3075 Td -(1726 c->gdt[SEG_UDATA] = SEG\(STA_W, \(uint\)cp->mem, cp->sz-\ -1, DPL_USER\);) 318.9016 Tj +(1726 cpu->gdt[SEG_TSS] = SEG16\(STS_T32A, &cpu->ts, sizeof\(c\ +pu->ts\)-1, 0\);) 327.6386 Tj 0 -284.8008 Td -(1727 c->gdt[SEG_TSS] = SEG16\(STS_T32A, \(uint\)&c->ts, sizeo\ -f\(c->ts\)-1, 0\);) 327.6386 Tj +(1727 cpu->gdt[SEG_TSS].s = 0;) 135.4239 Tj 0 -294.2942 Td -(1728 c->gdt[SEG_TSS].s = 0;) 126.6869 Tj +(1728 cpu->ts.ss0 = SEG_KDATA << 3;) 157.2665 Tj 0 -303.7875 Td -(1729 c->ts.ss0 = SEG_KDATA << 3;) 148.5295 Tj +(1729 cpu->ts.esp0 = \(uint\)proc->kstack + KSTACKSIZE;) 235.8998 Tj 0 -313.2809 Td -(1730 c->ts.esp0 = \(uint\)cp->kstack + KSTACKSIZE;) 218.4257 Tj +(1730 ltr\(SEG_TSS << 3\);) 109.2129 Tj 0 -322.7743 Td -(1731 ltr\(SEG_TSS << 3\);) 109.2129 Tj +(1731 popcli\(\);) 69.8962 Tj 0 -332.2676 Td -(1732 popcli\(\);) 69.8962 Tj +(1732 }) 26.2111 Tj 0 -341.761 Td -(1733 }) 26.2111 Tj +(1733 ) 21.8426 Tj 0 -351.2543 Td (1734 ) 21.8426 Tj 0 -360.7477 Td -(1735 ) 21.8426 Tj +(1735 // Look in the process table for an UNUSED proc.) 231.5313 Tj 0 -370.2411 Td -(1736 ) 21.8426 Tj +(1736 // If found, change state to EMBRYO and return it.) 240.2683 Tj 0 -379.7344 Td -(1737 ) 21.8426 Tj +(1737 // Otherwise return 0.) 117.9499 Tj 0 -389.2278 Td -(1738 ) 21.8426 Tj +(1738 static struct proc*) 104.8443 Tj 0 -398.7211 Td -(1739 ) 21.8426 Tj +(1739 allocproc\(void\)) 87.3703 Tj 0 -408.2145 Td -(1740 ) 21.8426 Tj +(1740 {) 26.2111 Tj 0 -417.7079 Td -(1741 ) 21.8426 Tj +(1741 struct proc *p;) 96.1073 Tj 0 -427.2012 Td -(1742 ) 21.8426 Tj +(1742 char *sp;) 69.8962 Tj 0 -436.6946 Td (1743 ) 21.8426 Tj 0 -446.1879 Td -(1744 ) 21.8426 Tj +(1744 acquire\(&ptable.lock\);) 126.6869 Tj 0 -455.6813 Td -(1745 ) 21.8426 Tj +(1745 for\(p = ptable.proc; p < &ptable.proc[NPROC]; p++\)) 249.0053 Tj 0 -465.1747 Td -(1746 ) 21.8426 Tj +(1746 if\(p->state == UNUSED\)) 135.4239 Tj 0 -474.668 Td -(1747 ) 21.8426 Tj +(1747 goto found;) 96.1073 Tj 0 -484.1614 Td -(1748 ) 21.8426 Tj +(1748 release\(&ptable.lock\);) 126.6869 Tj 0 -493.6547 Td -(1749 ) 21.8426 Tj +(1749 return 0;) 69.8962 Tj 0 -522.1348 Td (Sheet 17) 34.9481 Tj Q @@ -8492,107 +8549,109 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 4) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 4) 161.635 Tj 0 -28.4801 Td -(1750 // Look in the process table for an UNUSED proc.) 231.5313 Tj +(1750 found:) 48.0537 Tj 0 -37.9735 Td -(1751 // If found, change state to EMBRYO and return it.) 240.2683 Tj +(1751 p->state = EMBRYO;) 109.2129 Tj 0 -47.4668 Td -(1752 // Otherwise return 0.) 117.9499 Tj +(1752 p->pid = nextpid++;) 113.5814 Tj 0 -56.9602 Td -(1753 static struct proc*) 104.8443 Tj +(1753 release\(&ptable.lock\);) 126.6869 Tj 0 -66.4535 Td -(1754 allocproc\(void\)) 87.3703 Tj +(1754 ) 21.8426 Tj 0 -75.9469 Td -(1755 {) 26.2111 Tj +(1755 // Allocate kernel stack if necessary.) 196.5831 Tj 0 -85.4403 Td -(1756 struct proc *p;) 96.1073 Tj +(1756 if\(\(p->kstack = kalloc\(KSTACKSIZE\)\) == 0\){) 214.0572 Tj 0 -94.9336 Td -(1757 char *sp;) 69.8962 Tj +(1757 p->state = UNUSED;) 117.9499 Tj 0 -104.427 Td -(1758 ) 21.8426 Tj +(1758 return 0;) 78.6333 Tj 0 -113.9203 Td -(1759 acquire\(&ptable.lock\);) 126.6869 Tj +(1759 }) 34.9481 Tj 0 -123.4137 Td -(1760 for\(p = ptable.proc; p < &ptable.proc[NPROC]; p++\)) 249.0053 Tj +(1760 sp = p->kstack + KSTACKSIZE;) 152.898 Tj 0 -132.9071 Td -(1761 if\(p->state == UNUSED\)) 135.4239 Tj +(1761 ) 21.8426 Tj 0 -142.4004 Td -(1762 goto found;) 96.1073 Tj +(1762 // Leave room for trap frame.) 157.2665 Tj 0 -151.8938 Td -(1763 release\(&ptable.lock\);) 126.6869 Tj +(1763 sp -= sizeof *p->tf;) 117.9499 Tj 0 -161.3871 Td -(1764 return 0;) 69.8962 Tj +(1764 p->tf = \(struct trapframe*\)sp;) 161.635 Tj 0 -170.8805 Td (1765 ) 21.8426 Tj 0 -180.3739 Td -(1766 found:) 48.0537 Tj +(1766 // Set up new context to start executing at forkret,) 257.7424 Tj 0 -189.8672 Td -(1767 p->state = EMBRYO;) 109.2129 Tj +(1767 // which returns to trapret \(see below\).) 205.3202 Tj 0 -199.3606 Td -(1768 p->pid = nextpid++;) 113.5814 Tj +(1768 sp -= 4;) 65.5277 Tj 0 -208.8539 Td -(1769 release\(&ptable.lock\);) 126.6869 Tj +(1769 *\(uint*\)sp = \(uint\)trapret;) 148.5295 Tj 0 -218.3473 Td (1770 ) 21.8426 Tj 0 -227.8407 Td -(1771 // Allocate kernel stack if necessary.) 196.5831 Tj +(1771 sp -= sizeof *p->context;) 139.7925 Tj 0 -237.334 Td -(1772 if\(\(p->kstack = kalloc\(KSTACKSIZE\)\) == 0\){) 214.0572 Tj +(1772 p->context = \(struct context*\)sp;) 174.7406 Tj 0 -246.8274 Td -(1773 p->state = UNUSED;) 117.9499 Tj +(1773 memset\(p->context, 0, sizeof *p->context\);) 214.0572 Tj 0 -256.3207 Td -(1774 return 0;) 78.6333 Tj +(1774 p->context->eip = \(uint\)forkret;) 170.3721 Tj 0 -265.8141 Td -(1775 }) 34.9481 Tj +(1775 return p;) 69.8962 Tj 0 -275.3075 Td -(1776 sp = p->kstack + KSTACKSIZE;) 152.898 Tj +(1776 }) 26.2111 Tj 0 -284.8008 Td (1777 ) 21.8426 Tj 0 -294.2942 Td -(1778 // Leave room for trap frame.) 157.2665 Tj +(1778 // Set up first user process.) 148.5295 Tj 0 -303.7875 Td -(1779 sp -= sizeof *p->tf;) 117.9499 Tj +(1779 void) 39.3166 Tj 0 -313.2809 Td -(1780 p->tf = \(struct trapframe*\)sp;) 161.635 Tj +(1780 userinit\(void\)) 83.0018 Tj 0 -322.7743 Td -(1781 ) 21.8426 Tj +(1781 {) 26.2111 Tj 0 -332.2676 Td -(1782 // Set up new context to start executing at forkret,) 257.7424 Tj +(1782 struct proc *p;) 96.1073 Tj 0 -341.761 Td -(1783 // which returns to trapret \(see below\).) 205.3202 Tj +(1783 extern char _binary_initcode_start[], _binary_initcode_s\ +ize[];) 301.4275 Tj 0 -351.2543 Td -(1784 sp -= 4;) 65.5277 Tj +(1784 ) 21.8426 Tj 0 -360.7477 Td -(1785 *\(uint*\)sp = \(uint\)trapret;) 148.5295 Tj +(1785 p = allocproc\(\);) 100.4758 Tj 0 -370.2411 Td -(1786 ) 21.8426 Tj +(1786 initproc = p;) 87.3703 Tj 0 -379.7344 Td -(1787 sp -= sizeof *p->context;) 139.7925 Tj +(1787 ) 21.8426 Tj 0 -389.2278 Td -(1788 p->context = \(struct context*\)sp;) 174.7406 Tj +(1788 // Initialize memory from initcode.S) 187.8461 Tj 0 -398.7211 Td -(1789 memset\(p->context, 0, sizeof *p->context\);) 214.0572 Tj +(1789 p->sz = PAGE;) 87.3703 Tj 0 -408.2145 Td -(1790 p->context->eip = \(uint\)forkret;) 170.3721 Tj +(1790 p->mem = kalloc\(p->sz\);) 131.0554 Tj 0 -417.7079 Td -(1791 return p;) 69.8962 Tj +(1791 memset\(p->mem, 0, p->sz\);) 139.7925 Tj 0 -427.2012 Td -(1792 }) 26.2111 Tj +(1792 memmove\(p->mem, _binary_initcode_start, \(int\)_binary_\ +initcode_size\);) 327.6386 Tj 0 -436.6946 Td (1793 ) 21.8426 Tj 0 -446.1879 Td -(1794 ) 21.8426 Tj +(1794 memset\(p->tf, 0, sizeof\(*p->tf\)\);) 174.7406 Tj 0 -455.6813 Td -(1795 ) 21.8426 Tj +(1795 p->tf->cs = \(SEG_UCODE << 3\) | DPL_USER;) 205.3202 Tj 0 -465.1747 Td -(1796 ) 21.8426 Tj +(1796 p->tf->ds = \(SEG_UDATA << 3\) | DPL_USER;) 205.3202 Tj 0 -474.668 Td -(1797 ) 21.8426 Tj +(1797 p->tf->es = p->tf->ds;) 126.6869 Tj 0 -484.1614 Td -(1798 ) 21.8426 Tj +(1798 p->tf->ss = p->tf->ds;) 126.6869 Tj 0 -493.6547 Td -(1799 ) 21.8426 Tj +(1799 p->tf->eflags = FL_IF;) 126.6869 Tj 0 -522.1348 Td (Sheet 17) 34.9481 Tj Q @@ -8642,109 +8701,107 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 5) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 5) 161.635 Tj 0 -28.4801 Td -(1800 // Set up first user process.) 148.5295 Tj +(1800 p->tf->esp = p->sz;) 113.5814 Tj 0 -37.9735 Td -(1801 void) 39.3166 Tj +(1801 p->tf->eip = 0; // beginning of initcode.S) 218.4257 Tj 0 -47.4668 Td -(1802 userinit\(void\)) 83.0018 Tj +(1802 ) 21.8426 Tj 0 -56.9602 Td -(1803 {) 26.2111 Tj +(1803 safestrcpy\(p->name, "initcode", sizeof\(p->name\)\);) 244.6368 Tj 0 -66.4535 Td -(1804 struct proc *p;) 96.1073 Tj +(1804 p->cwd = namei\("/"\);) 117.9499 Tj 0 -75.9469 Td -(1805 extern char _binary_initcode_start[], _binary_initcode_s\ -ize[];) 301.4275 Tj +(1805 ) 21.8426 Tj 0 -85.4403 Td -(1806 ) 21.8426 Tj +(1806 p->state = RUNNABLE;) 117.9499 Tj 0 -94.9336 Td -(1807 p = allocproc\(\);) 100.4758 Tj +(1807 }) 26.2111 Tj 0 -104.427 Td -(1808 initproc = p;) 87.3703 Tj +(1808 ) 21.8426 Tj 0 -113.9203 Td -(1809 ) 21.8426 Tj +(1809 // Grow current process's memory by n bytes.) 214.0572 Tj 0 -123.4137 Td -(1810 // Initialize memory from initcode.S) 187.8461 Tj +(1810 // Return 0 on success, -1 on failure.) 187.8461 Tj 0 -132.9071 Td -(1811 p->sz = PAGE;) 87.3703 Tj +(1811 int) 34.9481 Tj 0 -142.4004 Td -(1812 p->mem = kalloc\(p->sz\);) 131.0554 Tj +(1812 growproc\(int n\)) 87.3703 Tj 0 -151.8938 Td -(1813 memset\(p->mem, 0, p->sz\);) 139.7925 Tj +(1813 {) 26.2111 Tj 0 -161.3871 Td -(1814 memmove\(p->mem, _binary_initcode_start, \(int\)_binary_\ -initcode_size\);) 327.6386 Tj +(1814 char *newmem;) 87.3703 Tj 0 -170.8805 Td (1815 ) 21.8426 Tj 0 -180.3739 Td -(1816 memset\(p->tf, 0, sizeof\(*p->tf\)\);) 174.7406 Tj +(1816 newmem = kalloc\(proc->sz + n\);) 161.635 Tj 0 -189.8672 Td -(1817 p->tf->cs = \(SEG_UCODE << 3\) | DPL_USER;) 205.3202 Tj +(1817 if\(newmem == 0\)) 96.1073 Tj 0 -199.3606 Td -(1818 p->tf->ds = \(SEG_UDATA << 3\) | DPL_USER;) 205.3202 Tj +(1818 return -1;) 83.0018 Tj 0 -208.8539 Td -(1819 p->tf->es = p->tf->ds;) 126.6869 Tj +(1819 memmove\(newmem, proc->mem, proc->sz\);) 192.2146 Tj 0 -218.3473 Td -(1820 p->tf->ss = p->tf->ds;) 126.6869 Tj +(1820 memset\(newmem + proc->sz, 0, n\);) 170.3721 Tj 0 -227.8407 Td -(1821 p->tf->eflags = FL_IF;) 126.6869 Tj +(1821 kfree\(proc->mem, proc->sz\);) 148.5295 Tj 0 -237.334 Td -(1822 p->tf->esp = p->sz;) 113.5814 Tj +(1822 proc->mem = newmem;) 113.5814 Tj 0 -246.8274 Td -(1823 p->tf->eip = 0; // beginning of initcode.S) 218.4257 Tj +(1823 proc->sz += n;) 91.7388 Tj 0 -256.3207 Td -(1824 ) 21.8426 Tj +(1824 usegment\(\);) 78.6333 Tj 0 -265.8141 Td -(1825 safestrcpy\(p->name, "initcode", sizeof\(p->name\)\);) 244.6368 Tj +(1825 return 0;) 69.8962 Tj 0 -275.3075 Td -(1826 p->cwd = namei\("/"\);) 117.9499 Tj +(1826 }) 26.2111 Tj 0 -284.8008 Td (1827 ) 21.8426 Tj 0 -294.2942 Td -(1828 p->state = RUNNABLE;) 117.9499 Tj +(1828 // Create a new process copying p as the parent.) 231.5313 Tj 0 -303.7875 Td -(1829 }) 26.2111 Tj +(1829 // Sets up stack to return as if from system call.) 240.2683 Tj 0 -313.2809 Td -(1830 ) 21.8426 Tj +(1830 // Caller must set state of returned proc to RUNNABLE.) 257.7424 Tj 0 -322.7743 Td -(1831 // Grow current process's memory by n bytes.) 214.0572 Tj +(1831 int) 34.9481 Tj 0 -332.2676 Td -(1832 // Return 0 on success, -1 on failure.) 187.8461 Tj +(1832 fork\(void\)) 65.5277 Tj 0 -341.761 Td -(1833 int) 34.9481 Tj +(1833 {) 26.2111 Tj 0 -351.2543 Td -(1834 growproc\(int n\)) 87.3703 Tj +(1834 int i, pid;) 78.6333 Tj 0 -360.7477 Td -(1835 {) 26.2111 Tj +(1835 struct proc *np;) 100.4758 Tj 0 -370.2411 Td -(1836 char *newmem;) 87.3703 Tj +(1836 ) 21.8426 Tj 0 -379.7344 Td -(1837 ) 21.8426 Tj +(1837 // Allocate process.) 117.9499 Tj 0 -389.2278 Td -(1838 newmem = kalloc\(cp->sz + n\);) 152.898 Tj +(1838 if\(\(np = allocproc\(\)\) == 0\)) 148.5295 Tj 0 -398.7211 Td -(1839 if\(newmem == 0\)) 96.1073 Tj +(1839 return -1;) 83.0018 Tj 0 -408.2145 Td -(1840 return -1;) 83.0018 Tj +(1840 ) 21.8426 Tj 0 -417.7079 Td -(1841 memmove\(newmem, cp->mem, cp->sz\);) 174.7406 Tj +(1841 // Copy process state from p.) 157.2665 Tj 0 -427.2012 Td -(1842 memset\(newmem + cp->sz, 0, n\);) 161.635 Tj +(1842 np->sz = proc->sz;) 109.2129 Tj 0 -436.6946 Td -(1843 kfree\(cp->mem, cp->sz\);) 131.0554 Tj +(1843 if\(\(np->mem = kalloc\(np->sz\)\) == 0\){) 187.8461 Tj 0 -446.1879 Td -(1844 cp->mem = newmem;) 104.8443 Tj +(1844 kfree\(np->kstack, KSTACKSIZE\);) 170.3721 Tj 0 -455.6813 Td -(1845 cp->sz += n;) 83.0018 Tj +(1845 np->kstack = 0;) 104.8443 Tj 0 -465.1747 Td -(1846 usegment\(\);) 78.6333 Tj +(1846 np->state = UNUSED;) 122.3184 Tj 0 -474.668 Td -(1847 return 0;) 69.8962 Tj +(1847 return -1;) 83.0018 Tj 0 -484.1614 Td -(1848 }) 26.2111 Tj +(1848 }) 34.9481 Tj 0 -493.6547 Td -(1849 ) 21.8426 Tj +(1849 memmove\(np->mem, proc->mem, np->sz\);) 187.8461 Tj 0 -522.1348 Td (Sheet 18) 34.9481 Tj Q @@ -8763,83 +8820,83 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 6) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 6) 161.635 Tj 0 -28.4801 Td -(1850 // Create a new process copying p as the parent.) 231.5313 Tj +(1850 np->parent = proc;) 109.2129 Tj 0 -37.9735 Td -(1851 // Sets up stack to return as if from system call.) 240.2683 Tj +(1851 *np->tf = *proc->tf;) 117.9499 Tj 0 -47.4668 Td -(1852 // Caller must set state of returned proc to RUNNABLE.) 257.7424 Tj +(1852 ) 21.8426 Tj 0 -56.9602 Td -(1853 int) 34.9481 Tj +(1853 // Clear %eax so that fork returns 0 in the child.) 249.0053 Tj 0 -66.4535 Td -(1854 fork\(void\)) 65.5277 Tj +(1854 np->tf->eax = 0;) 100.4758 Tj 0 -75.9469 Td -(1855 {) 26.2111 Tj +(1855 ) 21.8426 Tj 0 -85.4403 Td -(1856 int i, pid;) 78.6333 Tj +(1856 for\(i = 0; i < NOFILE; i++\)) 148.5295 Tj 0 -94.9336 Td -(1857 struct proc *np;) 100.4758 Tj +(1857 if\(proc->ofile[i]\)) 117.9499 Tj 0 -104.427 Td -(1858 ) 21.8426 Tj +(1858 np->ofile[i] = filedup\(proc->ofile[i]\);) 218.4257 Tj 0 -113.9203 Td -(1859 // Allocate process.) 117.9499 Tj +(1859 np->cwd = idup\(proc->cwd\);) 144.161 Tj 0 -123.4137 Td -(1860 if\(\(np = allocproc\(\)\) == 0\)) 148.5295 Tj +(1860 ) 21.8426 Tj 0 -132.9071 Td -(1861 return -1;) 83.0018 Tj +(1861 pid = np->pid;) 91.7388 Tj 0 -142.4004 Td -(1862 ) 21.8426 Tj +(1862 np->state = RUNNABLE;) 122.3184 Tj 0 -151.8938 Td -(1863 // Copy process state from p.) 157.2665 Tj +(1863 ) 21.8426 Tj 0 -161.3871 Td -(1864 np->sz = cp->sz;) 100.4758 Tj +(1864 return pid;) 78.6333 Tj 0 -170.8805 Td -(1865 if\(\(np->mem = kalloc\(np->sz\)\) == 0\){) 187.8461 Tj +(1865 }) 26.2111 Tj 0 -180.3739 Td -(1866 kfree\(np->kstack, KSTACKSIZE\);) 170.3721 Tj +(1866 ) 21.8426 Tj 0 -189.8672 Td -(1867 np->kstack = 0;) 104.8443 Tj +(1867 ) 21.8426 Tj 0 -199.3606 Td -(1868 np->state = UNUSED;) 122.3184 Tj +(1868 ) 21.8426 Tj 0 -208.8539 Td -(1869 return -1;) 83.0018 Tj +(1869 ) 21.8426 Tj 0 -218.3473 Td -(1870 }) 34.9481 Tj +(1870 ) 21.8426 Tj 0 -227.8407 Td -(1871 memmove\(np->mem, cp->mem, np->sz\);) 179.1091 Tj +(1871 ) 21.8426 Tj 0 -237.334 Td -(1872 np->parent = cp;) 100.4758 Tj +(1872 ) 21.8426 Tj 0 -246.8274 Td -(1873 *np->tf = *cp->tf;) 109.2129 Tj +(1873 ) 21.8426 Tj 0 -256.3207 Td (1874 ) 21.8426 Tj 0 -265.8141 Td -(1875 // Clear %eax so that fork returns 0 in the child.) 249.0053 Tj +(1875 ) 21.8426 Tj 0 -275.3075 Td -(1876 np->tf->eax = 0;) 100.4758 Tj +(1876 ) 21.8426 Tj 0 -284.8008 Td (1877 ) 21.8426 Tj 0 -294.2942 Td -(1878 for\(i = 0; i < NOFILE; i++\)) 148.5295 Tj +(1878 ) 21.8426 Tj 0 -303.7875 Td -(1879 if\(cp->ofile[i]\)) 109.2129 Tj +(1879 ) 21.8426 Tj 0 -313.2809 Td -(1880 np->ofile[i] = filedup\(cp->ofile[i]\);) 209.6887 Tj +(1880 ) 21.8426 Tj 0 -322.7743 Td -(1881 np->cwd = idup\(cp->cwd\);) 135.4239 Tj +(1881 ) 21.8426 Tj 0 -332.2676 Td (1882 ) 21.8426 Tj 0 -341.761 Td -(1883 pid = np->pid;) 91.7388 Tj +(1883 ) 21.8426 Tj 0 -351.2543 Td -(1884 np->state = RUNNABLE;) 122.3184 Tj +(1884 ) 21.8426 Tj 0 -360.7477 Td (1885 ) 21.8426 Tj 0 -370.2411 Td -(1886 return pid;) 78.6333 Tj +(1886 ) 21.8426 Tj 0 -379.7344 Td -(1887 }) 26.2111 Tj +(1887 ) 21.8426 Tj 0 -389.2278 Td (1888 ) 21.8426 Tj 0 -398.7211 Td @@ -8913,7 +8970,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 7) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 7) 161.635 Tj 0 -28.4801 Td (1900 // Per-CPU process scheduler.) 148.5295 Tj 0 -37.9735 Td @@ -8966,13 +9023,13 @@ b) 279.5849 Tj 0 -256.3207 Td (1924 // before jumping back to us.) 174.7406 Tj 0 -265.8141 Td -(1925 cp = p;) 78.6333 Tj +(1925 proc = p;) 87.3703 Tj 0 -275.3075 Td (1926 usegment\(\);) 96.1073 Tj 0 -284.8008 Td (1927 p->state = RUNNING;) 131.0554 Tj 0 -294.2942 Td -(1928 swtch\(&c->context, p->context\);) 183.4776 Tj +(1928 swtch\(&cpu->scheduler, proc->context\);) 214.0572 Tj 0 -303.7875 Td (1929 ) 21.8426 Tj 0 -313.2809 Td @@ -8981,7 +9038,7 @@ b) 279.5849 Tj (1931 // It should have changed its p->state before coming\ back.) 301.4275 Tj 0 -332.2676 Td -(1932 cp = 0;) 78.6333 Tj +(1932 proc = 0;) 87.3703 Tj 0 -341.761 Td (1933 }) 43.6851 Tj 0 -351.2543 Td @@ -9034,11 +9091,11 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 8) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 8) 161.635 Tj 0 -28.4801 Td (1950 // Enter scheduler. Must hold only ptable.lock) 227.1628 Tj 0 -37.9735 Td -(1951 // and have changed cp->state.) 152.898 Tj +(1951 // and have changed proc->state.) 161.635 Tj 0 -47.4668 Td (1952 void) 39.3166 Tj 0 -56.9602 Td @@ -9054,11 +9111,11 @@ q 0 -104.427 Td (1958 panic\("sched ptable.lock"\);) 157.2665 Tj 0 -113.9203 Td -(1959 if\(c->ncli != 1\)) 100.4758 Tj +(1959 if\(cpu->ncli != 1\)) 109.2129 Tj 0 -123.4137 Td (1960 panic\("sched locks"\);) 131.0554 Tj 0 -132.9071 Td -(1961 if\(cp->state == RUNNING\)) 135.4239 Tj +(1961 if\(proc->state == RUNNING\)) 144.161 Tj 0 -142.4004 Td (1962 panic\("sched running"\);) 139.7925 Tj 0 -151.8938 Td @@ -9068,11 +9125,11 @@ q 0 -170.8805 Td (1965 ) 21.8426 Tj 0 -180.3739 Td -(1966 intena = c->intena;) 113.5814 Tj +(1966 intena = cpu->intena;) 122.3184 Tj 0 -189.8672 Td -(1967 swtch\(&cp->context, c->context\);) 170.3721 Tj +(1967 swtch\(&proc->context, cpu->scheduler\);) 196.5831 Tj 0 -199.3606 Td -(1968 c->intena = intena;) 113.5814 Tj +(1968 cpu->intena = intena;) 122.3184 Tj 0 -208.8539 Td (1969 }) 26.2111 Tj 0 -218.3473 Td @@ -9088,7 +9145,7 @@ q 0 -265.8141 Td (1975 acquire\(&ptable.lock\); ) 135.4239 Tj 0 -275.3075 Td -(1976 cp->state = RUNNABLE;) 122.3184 Tj +(1976 proc->state = RUNNABLE;) 131.0554 Tj 0 -284.8008 Td (1977 sched\(\);) 65.5277 Tj 0 -294.2942 Td @@ -9185,11 +9242,11 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 9) 161.635 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 9) 161.635 Tj 0 -28.4801 Td (2000 // Atomically release lock and sleep on chan.) 218.4257 Tj 0 -37.9735 Td -(2001 // Reacquires lock when reawakened.) 174.7406 Tj +(2001 // Reacquires lock when awakened.) 166.0035 Tj 0 -47.4668 Td (2002 void) 39.3166 Tj 0 -56.9602 Td @@ -9197,7 +9254,7 @@ q 0 -66.4535 Td (2004 {) 26.2111 Tj 0 -75.9469 Td -(2005 if\(cp == 0\)) 78.6333 Tj +(2005 if\(proc == 0\)) 87.3703 Tj 0 -85.4403 Td (2006 panic\("sleep"\);) 104.8443 Tj 0 -94.9336 Td @@ -9233,9 +9290,9 @@ q 0 -237.334 Td (2022 // Go to sleep.) 96.1073 Tj 0 -246.8274 Td -(2023 cp->chan = chan;) 100.4758 Tj +(2023 proc->chan = chan;) 109.2129 Tj 0 -256.3207 Td -(2024 cp->state = SLEEPING;) 122.3184 Tj +(2024 proc->state = SLEEPING;) 131.0554 Tj 0 -265.8141 Td (2025 sched\(\);) 65.5277 Tj 0 -275.3075 Td @@ -9243,7 +9300,7 @@ q 0 -284.8008 Td (2027 // Tidy up.) 78.6333 Tj 0 -294.2942 Td -(2028 cp->chan = 0;) 87.3703 Tj +(2028 proc->chan = 0;) 96.1073 Tj 0 -303.7875 Td (2029 ) 21.8426 Tj 0 -313.2809 Td @@ -9304,7 +9361,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 10) 166.0035 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 10) 166.0035 Tj 0 -28.4801 Td (2050 // Wake up all processes sleeping on chan.) 205.3202 Tj 0 -37.9735 Td @@ -9350,7 +9407,7 @@ q 0 -227.8407 Td (2071 // Kill the process with the given pid.) 192.2146 Tj 0 -237.334 Td -(2072 // Process won't actually exit until it returns) 227.1628 Tj +(2072 // Process won't exit until it returns) 187.8461 Tj 0 -246.8274 Td (2073 // to user space \(see trap in trap.c\).) 187.8461 Tj 0 -256.3207 Td @@ -9454,14 +9511,13 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 11) 166.0035 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 11) 166.0035 Tj 0 -28.4801 Td (2100 // Exit the current process. Does not return.) 222.7942 Tj 0 -37.9735 Td -(2101 // Exited processes remain in the zombie state) 222.7942 Tj +(2101 // An exited process remains in the zombie state) 231.5313 Tj 0 -47.4668 Td -(2102 // until their parent calls wait\(\) to find out they exit\ -ed.) 279.5849 Tj +(2102 // until its parent calls wait\(\) to find out it exited.) 262.1109 Tj 0 -56.9602 Td (2103 void) 39.3166 Tj 0 -66.4535 Td @@ -9475,7 +9531,7 @@ ed.) 279.5849 Tj 0 -104.427 Td (2108 ) 21.8426 Tj 0 -113.9203 Td -(2109 if\(cp == initproc\)) 109.2129 Tj +(2109 if\(proc == initproc\)) 117.9499 Tj 0 -123.4137 Td (2110 panic\("init exiting"\);) 135.4239 Tj 0 -132.9071 Td @@ -9485,11 +9541,11 @@ ed.) 279.5849 Tj 0 -151.8938 Td (2113 for\(fd = 0; fd < NOFILE; fd++\){) 166.0035 Tj 0 -161.3871 Td -(2114 if\(cp->ofile[fd]\){) 117.9499 Tj +(2114 if\(proc->ofile[fd]\){) 126.6869 Tj 0 -170.8805 Td -(2115 fileclose\(cp->ofile[fd]\);) 157.2665 Tj +(2115 fileclose\(proc->ofile[fd]\);) 166.0035 Tj 0 -180.3739 Td -(2116 cp->ofile[fd] = 0;) 126.6869 Tj +(2116 proc->ofile[fd] = 0;) 135.4239 Tj 0 -189.8672 Td (2117 }) 43.6851 Tj 0 -199.3606 Td @@ -9497,9 +9553,9 @@ ed.) 279.5849 Tj 0 -208.8539 Td (2119 ) 21.8426 Tj 0 -218.3473 Td -(2120 iput\(cp->cwd\);) 91.7388 Tj +(2120 iput\(proc->cwd\);) 100.4758 Tj 0 -227.8407 Td -(2121 cp->cwd = 0;) 83.0018 Tj +(2121 proc->cwd = 0;) 91.7388 Tj 0 -237.334 Td (2122 ) 21.8426 Tj 0 -246.8274 Td @@ -9509,7 +9565,7 @@ ed.) 279.5849 Tj 0 -265.8141 Td (2125 // Parent might be sleeping in wait\(\).) 196.5831 Tj 0 -275.3075 Td -(2126 wakeup1\(cp->parent\);) 117.9499 Tj +(2126 wakeup1\(proc->parent\);) 126.6869 Tj 0 -284.8008 Td (2127 ) 21.8426 Tj 0 -294.2942 Td @@ -9517,7 +9573,7 @@ ed.) 279.5849 Tj 0 -303.7875 Td (2129 for\(p = ptable.proc; p < &ptable.proc[NPROC]; p++\){) 253.3738 Tj 0 -313.2809 Td -(2130 if\(p->parent == cp\){) 126.6869 Tj +(2130 if\(p->parent == proc\){) 135.4239 Tj 0 -322.7743 Td (2131 p->parent = initproc;) 139.7925 Tj 0 -332.2676 Td @@ -9533,7 +9589,7 @@ ed.) 279.5849 Tj 0 -379.7344 Td (2137 // Jump into the scheduler, never to return.) 222.7942 Tj 0 -389.2278 Td -(2138 cp->state = ZOMBIE;) 113.5814 Tj +(2138 proc->state = ZOMBIE;) 122.3184 Tj 0 -398.7211 Td (2139 sched\(\);) 65.5277 Tj 0 -408.2145 Td @@ -9574,7 +9630,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/proc.c Page 12) 166.0035 Tj +(Aug 30 21:46 2009 xv6/proc.c Page 12) 166.0035 Tj 0 -28.4801 Td (2150 // Wait for a child process to exit and return its pid.) 262.1109 Tj 0 -37.9735 Td @@ -9602,7 +9658,7 @@ q 0 -142.4004 Td (2162 for\(p = ptable.proc; p < &ptable.proc[NPROC]; p++\){) 262.1109 Tj 0 -151.8938 Td -(2163 if\(p->parent != cp\)) 131.0554 Tj +(2163 if\(p->parent != proc\)) 139.7925 Tj 0 -161.3871 Td (2164 continue;) 96.1073 Tj 0 -170.8805 Td @@ -9640,7 +9696,7 @@ q 0 -322.7743 Td (2181 // No point waiting if we don't have any children.) 257.7424 Tj 0 -332.2676 Td -(2182 if\(!havekids || cp->killed\){) 161.635 Tj +(2182 if\(!havekids || proc->killed\){) 170.3721 Tj 0 -341.761 Td (2183 release\(&ptable.lock\);) 144.161 Tj 0 -351.2543 Td @@ -9653,7 +9709,7 @@ q (2187 // Wait for children to exit. \(See wakeup1 call in p\ roc_exit.\)) 314.533 Tj 0 -389.2278 Td -(2188 sleep\(cp, &ptable.lock\); ) 152.898 Tj +(2188 sleep\(proc, &ptable.lock\); ) 161.635 Tj 0 -398.7211 Td (2189 }) 34.9481 Tj 0 -408.2145 Td @@ -9725,7 +9781,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/swtch.S Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/swtch.S Page 1) 166.0035 Tj 0 -28.4801 Td (2200 # Context switch) 91.7388 Tj 0 -37.9735 Td @@ -9845,7 +9901,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kalloc.c Page 1) 170.3721 Tj +(Aug 30 21:46 2009 xv6/kalloc.c Page 1) 170.3721 Tj 0 -28.4801 Td (2250 // Physical memory allocator, intended to allocate) 240.2683 Tj 0 -37.9735 Td @@ -10000,7 +10056,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kalloc.c Page 2) 170.3721 Tj +(Aug 30 21:46 2009 xv6/kalloc.c Page 2) 170.3721 Tj 0 -28.4801 Td (2300 // Free the len bytes of memory pointed at by v,) 231.5313 Tj 0 -37.9735 Td @@ -10122,7 +10178,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kalloc.c Page 3) 170.3721 Tj +(Aug 30 21:46 2009 xv6/kalloc.c Page 3) 170.3721 Tj 0 -28.4801 Td (2350 // Allocate n bytes of physical memory.) 192.2146 Tj 0 -37.9735 Td @@ -10272,7 +10328,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/traps.h Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/traps.h Page 1) 166.0035 Tj 0 -28.4801 Td (2400 // x86 trap and interrupt constants.) 179.1091 Tj 0 -37.9735 Td @@ -10397,7 +10453,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/vectors.pl Page 1) 179.1091 Tj +(Aug 30 21:46 2009 xv6/vectors.pl Page 1) 179.1091 Tj 0 -28.4801 Td (2450 #!/usr/bin/perl -w) 100.4758 Tj 0 -37.9735 Td @@ -10548,7 +10604,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/trapasm.S Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/trapasm.S Page 1) 174.7406 Tj 0 -28.4801 Td (2500 #define SEG_KCODE 1 // kernel code) 174.7406 Tj 0 -37.9735 Td @@ -10667,7 +10723,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/trap.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/trap.c Page 1) 161.635 Tj 0 -28.4801 Td (2550 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -10819,7 +10875,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/trap.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/trap.c Page 2) 161.635 Tj 0 -28.4801 Td (2600 void) 39.3166 Tj 0 -37.9735 Td @@ -10829,15 +10885,15 @@ q 0 -56.9602 Td (2603 if\(tf->trapno == T_SYSCALL\){) 152.898 Tj 0 -66.4535 Td -(2604 if\(cp->killed\)) 100.4758 Tj +(2604 if\(proc->killed\)) 109.2129 Tj 0 -75.9469 Td (2605 exit\(\);) 78.6333 Tj 0 -85.4403 Td -(2606 cp->tf = tf;) 91.7388 Tj +(2606 proc->tf = tf;) 100.4758 Tj 0 -94.9336 Td (2607 syscall\(\);) 83.0018 Tj 0 -104.427 Td -(2608 if\(cp->killed\)) 100.4758 Tj +(2608 if\(proc->killed\)) 109.2129 Tj 0 -113.9203 Td (2609 exit\(\);) 78.6333 Tj 0 -123.4137 Td @@ -10851,7 +10907,7 @@ q 0 -161.3871 Td (2614 case T_IRQ0 + IRQ_TIMER:) 135.4239 Tj 0 -170.8805 Td -(2615 if\(cpu\(\) == 0\){) 104.8443 Tj +(2615 if\(cpu->id == 0\){) 113.5814 Tj 0 -180.3739 Td (2616 acquire\(&tickslock\);) 135.4239 Tj 0 -189.8672 Td @@ -10897,7 +10953,7 @@ q 0 -379.7344 Td (2637 cprintf\("cpu%d: spurious interrupt at %x:%x\\n",) 244.6368 Tj 0 -389.2278 Td -(2638 cpu\(\), tf->cs, tf->eip\);) 179.1091 Tj +(2638 cpu->id, tf->cs, tf->eip\);) 187.8461 Tj 0 -398.7211 Td (2639 lapiceoi\(\);) 87.3703 Tj 0 -408.2145 Td @@ -10907,13 +10963,13 @@ q 0 -427.2012 Td (2642 default:) 65.5277 Tj 0 -436.6946 Td -(2643 if\(cp == 0 || \(tf->cs&3\) == 0\){) 174.7406 Tj +(2643 if\(proc == 0 || \(tf->cs&3\) == 0\){) 183.4776 Tj 0 -446.1879 Td (2644 // In kernel, it must be our mistake.) 209.6887 Tj 0 -455.6813 Td (2645 cprintf\("unexpected trap %d from cpu %d eip %x\\n",) 266.4794 Tj 0 -465.1747 Td -(2646 tf->trapno, cpu\(\), tf->eip\);) 205.3202 Tj +(2646 tf->trapno, cpu->id, tf->eip\);) 214.0572 Tj 0 -474.668 Td (2647 panic\("trap"\);) 109.2129 Tj 0 -484.1614 Td @@ -10938,15 +10994,15 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/trap.c Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/trap.c Page 3) 161.635 Tj 0 -28.4801 Td (2650 cprintf\("pid %d %s: trap %d err %d on cpu %d eip %x -\ - kill proc\\n",) 336.3756 Tj 0 -37.9735 Td -(2651 cp->pid, cp->name, tf->trapno, tf->err, cpu\(\)\ -, tf->eip\);) 318.9016 Tj +(2651 proc->pid, proc->name, tf->trapno, tf->err, cp\ +u->id, tf->eip\);) 345.1126 Tj 0 -47.4668 Td -(2652 cp->killed = 1;) 104.8443 Tj +(2652 proc->killed = 1;) 113.5814 Tj 0 -56.9602 Td (2653 }) 34.9481 Tj 0 -66.4535 Td @@ -10960,7 +11016,7 @@ er space.) 314.533 Tj 0 -94.9336 Td (2657 // until it gets to the regular system call return.\)) 257.7424 Tj 0 -104.427 Td -(2658 if\(cp && cp->killed && \(tf->cs&3\) == DPL_USER\)) 231.5313 Tj +(2658 if\(proc && proc->killed && \(tf->cs&3\) == DPL_USER\)) 249.0053 Tj 0 -113.9203 Td (2659 exit\(\);) 69.8962 Tj 0 -123.4137 Td @@ -10971,8 +11027,8 @@ er space.) 314.533 Tj (2662 // If interrupts were on while locks held, would need to\ check nlock.) 332.0071 Tj 0 -151.8938 Td -(2663 if\(cp && cp->state == RUNNING && tf->trapno == T_IRQ0+I\ -RQ_TIMER\)) 310.1645 Tj +(2663 if\(proc && proc->state == RUNNING && tf->trapno == T_IR\ +Q0+IRQ_TIMER\)) 327.6386 Tj 0 -161.3871 Td (2664 yield\(\);) 74.2647 Tj 0 -170.8805 Td @@ -10980,7 +11036,7 @@ RQ_TIMER\)) 310.1645 Tj 0 -180.3739 Td (2666 // Check if the process has been killed since we yielded) 275.2164 Tj 0 -189.8672 Td -(2667 if\(cp && cp->killed && \(tf->cs&3\) == DPL_USER\)) 231.5313 Tj +(2667 if\(proc && proc->killed && \(tf->cs&3\) == DPL_USER\)) 249.0053 Tj 0 -199.3606 Td (2668 exit\(\);) 69.8962 Tj 0 -208.8539 Td @@ -11094,7 +11150,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/syscall.h Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/syscall.h Page 1) 174.7406 Tj 0 -28.4801 Td (2700 // System call numbers) 117.9499 Tj 0 -37.9735 Td @@ -11213,7 +11269,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/syscall.c Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/syscall.c Page 1) 174.7406 Tj 0 -28.4801 Td (2750 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -11310,7 +11366,7 @@ nt at it.) 314.533 Tj 0 -455.6813 Td (2795 {) 26.2111 Tj 0 -465.1747 Td -(2796 return fetchint\(cp, cp->tf->esp + 4 + 4*n, ip\);) 235.8998 Tj +(2796 return fetchint\(proc, proc->tf->esp + 4 + 4*n, ip\);) 253.3738 Tj 0 -474.668 Td (2797 }) 26.2111 Tj 0 -484.1614 Td @@ -11366,7 +11422,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/syscall.c Page 2) 174.7406 Tj +(Aug 30 21:46 2009 xv6/syscall.c Page 2) 174.7406 Tj 0 -28.4801 Td (2800 // Fetch the nth word-sized system call argument as a poin\ ter) 288.322 Tj @@ -11390,11 +11446,11 @@ ointer) 301.4275 Tj 0 -113.9203 Td (2809 return -1;) 83.0018 Tj 0 -123.4137 Td -(2810 if\(\(uint\)i >= cp->sz || \(uint\)i+size >= cp->sz\)) 235.8998 Tj +(2810 if\(\(uint\)i >= proc->sz || \(uint\)i+size >= proc->sz\)) 253.3738 Tj 0 -132.9071 Td (2811 return -1;) 83.0018 Tj 0 -142.4004 Td -(2812 *pp = cp->mem + i;) 109.2129 Tj +(2812 *pp = proc->mem + i;) 117.9499 Tj 0 -151.8938 Td (2813 return 0;) 69.8962 Tj 0 -161.3871 Td @@ -11425,7 +11481,7 @@ erminated.) 318.9016 Tj 0 -265.8141 Td (2825 return -1;) 83.0018 Tj 0 -275.3075 Td -(2826 return fetchstr\(cp, addr, pp\);) 161.635 Tj +(2826 return fetchstr\(proc, addr, pp\);) 170.3721 Tj 0 -284.8008 Td (2827 }) 26.2111 Tj 0 -294.2942 Td @@ -11490,7 +11546,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/syscall.c Page 3) 174.7406 Tj +(Aug 30 21:46 2009 xv6/syscall.c Page 3) 174.7406 Tj 0 -28.4801 Td (2850 static int \(*syscalls[]\)\(void\) = {) 170.3721 Tj 0 -37.9735 Td @@ -11548,20 +11604,20 @@ q 0 -284.8008 Td (2877 ) 21.8426 Tj 0 -294.2942 Td -(2878 num = cp->tf->eax;) 109.2129 Tj +(2878 num = proc->tf->eax;) 117.9499 Tj 0 -303.7875 Td (2879 if\(num >= 0 && num < NELEM\(syscalls\) && syscalls[num]\ \)) 266.4794 Tj 0 -313.2809 Td -(2880 cp->tf->eax = syscalls[num]\(\);) 170.3721 Tj +(2880 proc->tf->eax = syscalls[num]\(\);) 179.1091 Tj 0 -322.7743 Td (2881 else {) 56.7907 Tj 0 -332.2676 Td (2882 cprintf\("%d %s: unknown sys call %d\\n",) 209.6887 Tj 0 -341.761 Td -(2883 cp->pid, cp->name, num\);) 179.1091 Tj +(2883 proc->pid, proc->name, num\);) 196.5831 Tj 0 -351.2543 Td -(2884 cp->tf->eax = -1;) 113.5814 Tj +(2884 proc->tf->eax = -1;) 122.3184 Tj 0 -360.7477 Td (2885 }) 34.9481 Tj 0 -370.2411 Td @@ -11641,7 +11697,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysproc.c Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysproc.c Page 1) 174.7406 Tj 0 -28.4801 Td (2900 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -11721,7 +11777,7 @@ q 0 -389.2278 Td (2938 {) 26.2111 Tj 0 -398.7211 Td -(2939 return cp->pid;) 96.1073 Tj +(2939 return proc->pid;) 104.8443 Tj 0 -408.2145 Td (2940 }) 26.2111 Tj 0 -417.7079 Td @@ -11760,7 +11816,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysproc.c Page 2) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysproc.c Page 2) 174.7406 Tj 0 -28.4801 Td (2950 int) 34.9481 Tj 0 -37.9735 Td @@ -11778,7 +11834,7 @@ q 0 -94.9336 Td (2957 return -1;) 83.0018 Tj 0 -104.427 Td -(2958 addr = cp->sz;) 91.7388 Tj +(2958 addr = proc->sz;) 100.4758 Tj 0 -113.9203 Td (2959 if\(growproc\(n\) < 0\)) 113.5814 Tj 0 -123.4137 Td @@ -11810,7 +11866,7 @@ q 0 -246.8274 Td (2973 while\(ticks - ticks0 < n\){) 144.161 Tj 0 -256.3207 Td -(2974 if\(cp->killed\){) 104.8443 Tj +(2974 if\(proc->killed\){) 113.5814 Tj 0 -265.8141 Td (2975 release\(&tickslock\);) 135.4239 Tj 0 -275.3075 Td @@ -11910,7 +11966,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/buf.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/buf.h Page 1) 157.2665 Tj 0 -28.4801 Td (3000 struct buf {) 74.2647 Tj 0 -37.9735 Td @@ -12029,7 +12085,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fcntl.h Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/fcntl.h Page 1) 166.0035 Tj 0 -28.4801 Td (3050 #define O_RDONLY 0x000) 122.3184 Tj 0 -37.9735 Td @@ -12179,7 +12235,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/stat.h Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/stat.h Page 1) 161.635 Tj 0 -28.4801 Td (3100 #define T_DIR 1 // Directory) 157.2665 Tj 0 -37.9735 Td @@ -12298,7 +12354,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.h Page 1) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.h Page 1) 152.898 Tj 0 -28.4801 Td (3150 // On-disk file system format.) 152.898 Tj 0 -37.9735 Td @@ -12453,7 +12509,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.h Page 2) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.h Page 2) 152.898 Tj 0 -28.4801 Td (3200 // Directory is a file containing a sequence of dirent str\ uctures.) 310.1645 Tj @@ -12573,7 +12629,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/file.h Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/file.h Page 1) 161.635 Tj 0 -28.4801 Td (3250 struct file {) 78.6333 Tj 0 -37.9735 Td @@ -12723,7 +12779,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ide.c Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/ide.c Page 1) 157.2665 Tj 0 -28.4801 Td (3300 // Simple PIO-based \(non-DMA\) IDE driver code.) 222.7942 Tj 0 -37.9735 Td @@ -12844,7 +12900,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ide.c Page 2) 157.2665 Tj +(Aug 30 21:46 2009 xv6/ide.c Page 2) 157.2665 Tj 0 -28.4801 Td (3350 void) 39.3166 Tj 0 -37.9735 Td @@ -12995,7 +13051,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ide.c Page 3) 157.2665 Tj +(Aug 30 21:46 2009 xv6/ide.c Page 3) 157.2665 Tj 0 -28.4801 Td (3400 // Interrupt handler.) 113.5814 Tj 0 -37.9735 Td @@ -13114,7 +13170,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ide.c Page 4) 157.2665 Tj +(Aug 30 21:46 2009 xv6/ide.c Page 4) 157.2665 Tj 0 -28.4801 Td (3450 // Sync buf with disk.) 117.9499 Tj 0 -37.9735 Td @@ -13174,7 +13230,8 @@ ALID.) 297.059 Tj 0 -284.8008 Td (3477 // Wait for request to finish.) 161.635 Tj 0 -294.2942 Td -(3478 // Assuming will not sleep too long: ignore cp->killed.) 270.8479 Tj +(3478 // Assuming will not sleep too long: ignore proc->killed\ +.) 279.5849 Tj 0 -303.7875 Td (3479 while\(\(b->flags & \(B_VALID|B_DIRTY\)\) != B_VALID\)) 240.2683 Tj 0 -313.2809 Td @@ -13266,7 +13323,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bio.c Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/bio.c Page 1) 157.2665 Tj 0 -28.4801 Td (3500 // Buffer cache.) 91.7388 Tj 0 -37.9735 Td @@ -13391,7 +13448,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bio.c Page 2) 157.2665 Tj +(Aug 30 21:46 2009 xv6/bio.c Page 2) 157.2665 Tj 0 -28.4801 Td (3550 // Create linked list of buffers) 170.3721 Tj 0 -37.9735 Td @@ -13543,7 +13600,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/bio.c Page 3) 157.2665 Tj +(Aug 30 21:46 2009 xv6/bio.c Page 3) 157.2665 Tj 0 -28.4801 Td (3600 // Return a B_BUSY buf with the contents of the indicated \ disk sector.) 327.6386 Tj @@ -13663,7 +13720,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 1) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 1) 152.898 Tj 0 -28.4801 Td (3650 // File system implementation. Four layers:) 214.0572 Tj 0 -37.9735 Td @@ -13818,7 +13875,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 2) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 2) 152.898 Tj 0 -28.4801 Td (3700 // Blocks.) 65.5277 Tj 0 -37.9735 Td @@ -13939,7 +13996,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 3) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 3) 152.898 Tj 0 -28.4801 Td (3750 // Inodes.) 65.5277 Tj 0 -37.9735 Td @@ -13973,7 +14030,7 @@ y after) 305.796 Tj cached) 305.796 Tj 0 -151.8938 Td (3763 // inode; references are typically kept in struct file and\ - in cp->cwd.) 327.6386 Tj + in proc->cwd.) 336.3756 Tj 0 -161.3871 Td (3764 // When ip->ref falls to zero, the inode is no longer cach\ ed.) 288.322 Tj @@ -14101,7 +14158,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 4) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 4) 152.898 Tj 0 -28.4801 Td (3800 // Allocate a new inode with the given type on device dev.) 275.2164 Tj 0 -37.9735 Td @@ -14221,7 +14278,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 5) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 5) 152.898 Tj 0 -28.4801 Td (3850 // Find the inode with number inum on device dev) 231.5313 Tj 0 -37.9735 Td @@ -14374,7 +14431,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 6) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 6) 152.898 Tj 0 -28.4801 Td (3900 // Lock the given inode.) 126.6869 Tj 0 -37.9735 Td @@ -14493,7 +14550,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 7) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 7) 152.898 Tj 0 -28.4801 Td (3950 // Caller holds reference to unlocked ip. Drop reference.) 275.2164 Tj 0 -37.9735 Td @@ -14644,7 +14701,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 8) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 8) 152.898 Tj 0 -28.4801 Td (4000 // Inode contents) 96.1073 Tj 0 -37.9735 Td @@ -14767,7 +14824,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 9) 152.898 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 9) 152.898 Tj 0 -28.4801 Td (4050 // Truncate inode \(discard contents\).) 183.4776 Tj 0 -37.9735 Td @@ -14917,7 +14974,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 10) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 10) 157.2665 Tj 0 -28.4801 Td (4100 // Read data from inode.) 126.6869 Tj 0 -37.9735 Td @@ -15037,7 +15094,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 11) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 11) 157.2665 Tj 0 -28.4801 Td (4150 // Write data to inode.) 122.3184 Tj 0 -37.9735 Td @@ -15188,7 +15245,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 12) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 12) 157.2665 Tj 0 -28.4801 Td (4200 // Directories) 83.0018 Tj 0 -37.9735 Td @@ -15307,7 +15364,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 13) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 13) 157.2665 Tj 0 -28.4801 Td (4250 // Write a new directory entry \(name, inum\) into the dir\ ectory dp.) 310.1645 Tj @@ -15460,7 +15517,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 14) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 14) 157.2665 Tj 0 -28.4801 Td (4300 // Paths) 56.7907 Tj 0 -37.9735 Td @@ -15583,7 +15640,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/fs.c Page 15) 157.2665 Tj +(Aug 30 21:46 2009 xv6/fs.c Page 15) 157.2665 Tj 0 -28.4801 Td (4350 // Look up and return the inode for a path name.) 231.5313 Tj 0 -37.9735 Td @@ -15609,7 +15666,7 @@ y the final) 323.2701 Tj 0 -123.4137 Td (4360 else) 48.0537 Tj 0 -132.9071 Td -(4361 ip = idup\(cp->cwd\);) 122.3184 Tj +(4361 ip = idup\(proc->cwd\);) 131.0554 Tj 0 -142.4004 Td (4362 ) 21.8426 Tj 0 -151.8938 Td @@ -15735,7 +15792,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/file.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/file.c Page 1) 161.635 Tj 0 -28.4801 Td (4400 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -15743,95 +15800,95 @@ q 0 -47.4668 Td (4402 #include "param.h") 100.4758 Tj 0 -56.9602 Td -(4403 #include "file.h") 96.1073 Tj +(4403 #include "fs.h") 87.3703 Tj 0 -66.4535 Td -(4404 #include "spinlock.h") 113.5814 Tj +(4404 #include "file.h") 96.1073 Tj 0 -75.9469 Td -(4405 ) 21.8426 Tj +(4405 #include "spinlock.h") 113.5814 Tj 0 -85.4403 Td -(4406 struct devsw devsw[NDEV];) 131.0554 Tj +(4406 ) 21.8426 Tj 0 -94.9336 Td -(4407 struct {) 56.7907 Tj +(4407 struct devsw devsw[NDEV];) 131.0554 Tj 0 -104.427 Td -(4408 struct spinlock lock;) 122.3184 Tj +(4408 struct {) 56.7907 Tj 0 -113.9203 Td -(4409 struct file file[NFILE];) 135.4239 Tj +(4409 struct spinlock lock;) 122.3184 Tj 0 -123.4137 Td -(4410 } ftable;) 61.1592 Tj +(4410 struct file file[NFILE];) 135.4239 Tj 0 -132.9071 Td -(4411 ) 21.8426 Tj +(4411 } ftable;) 61.1592 Tj 0 -142.4004 Td -(4412 void) 39.3166 Tj +(4412 ) 21.8426 Tj 0 -151.8938 Td -(4413 fileinit\(void\)) 83.0018 Tj +(4413 void) 39.3166 Tj 0 -161.3871 Td -(4414 {) 26.2111 Tj +(4414 fileinit\(void\)) 83.0018 Tj 0 -170.8805 Td -(4415 initlock\(&ftable.lock, "ftable"\);) 174.7406 Tj +(4415 {) 26.2111 Tj 0 -180.3739 Td -(4416 }) 26.2111 Tj +(4416 initlock\(&ftable.lock, "ftable"\);) 174.7406 Tj 0 -189.8672 Td -(4417 ) 21.8426 Tj +(4417 }) 26.2111 Tj 0 -199.3606 Td -(4418 // Allocate a file structure.) 148.5295 Tj +(4418 ) 21.8426 Tj 0 -208.8539 Td -(4419 struct file*) 74.2647 Tj +(4419 // Allocate a file structure.) 148.5295 Tj 0 -218.3473 Td -(4420 filealloc\(void\)) 87.3703 Tj +(4420 struct file*) 74.2647 Tj 0 -227.8407 Td -(4421 {) 26.2111 Tj +(4421 filealloc\(void\)) 87.3703 Tj 0 -237.334 Td -(4422 struct file *f;) 96.1073 Tj +(4422 {) 26.2111 Tj 0 -246.8274 Td -(4423 ) 21.8426 Tj +(4423 struct file *f;) 96.1073 Tj 0 -256.3207 Td -(4424 acquire\(&ftable.lock\);) 126.6869 Tj +(4424 ) 21.8426 Tj 0 -265.8141 Td -(4425 for\(f = ftable.file; f < ftable.file + NFILE; f++\){) 253.3738 Tj +(4425 acquire\(&ftable.lock\);) 126.6869 Tj 0 -275.3075 Td -(4426 if\(f->ref == 0\){) 109.2129 Tj +(4426 for\(f = ftable.file; f < ftable.file + NFILE; f++\){) 253.3738 Tj 0 -284.8008 Td -(4427 f->ref = 1;) 96.1073 Tj +(4427 if\(f->ref == 0\){) 109.2129 Tj 0 -294.2942 Td -(4428 release\(&ftable.lock\);) 144.161 Tj +(4428 f->ref = 1;) 96.1073 Tj 0 -303.7875 Td -(4429 return f;) 87.3703 Tj +(4429 release\(&ftable.lock\);) 144.161 Tj 0 -313.2809 Td -(4430 }) 43.6851 Tj +(4430 return f;) 87.3703 Tj 0 -322.7743 Td -(4431 }) 34.9481 Tj +(4431 }) 43.6851 Tj 0 -332.2676 Td -(4432 release\(&ftable.lock\);) 126.6869 Tj +(4432 }) 34.9481 Tj 0 -341.761 Td -(4433 return 0;) 69.8962 Tj +(4433 release\(&ftable.lock\);) 126.6869 Tj 0 -351.2543 Td -(4434 }) 26.2111 Tj +(4434 return 0;) 69.8962 Tj 0 -360.7477 Td -(4435 ) 21.8426 Tj +(4435 }) 26.2111 Tj 0 -370.2411 Td -(4436 // Increment ref count for file f.) 170.3721 Tj +(4436 ) 21.8426 Tj 0 -379.7344 Td -(4437 struct file*) 74.2647 Tj +(4437 // Increment ref count for file f.) 170.3721 Tj 0 -389.2278 Td -(4438 filedup\(struct file *f\)) 122.3184 Tj +(4438 struct file*) 74.2647 Tj 0 -398.7211 Td -(4439 {) 26.2111 Tj +(4439 filedup\(struct file *f\)) 122.3184 Tj 0 -408.2145 Td -(4440 acquire\(&ftable.lock\);) 126.6869 Tj +(4440 {) 26.2111 Tj 0 -417.7079 Td -(4441 if\(f->ref < 1\)) 91.7388 Tj +(4441 acquire\(&ftable.lock\);) 126.6869 Tj 0 -427.2012 Td -(4442 panic\("filedup"\);) 113.5814 Tj +(4442 if\(f->ref < 1\)) 91.7388 Tj 0 -436.6946 Td -(4443 f->ref++;) 69.8962 Tj +(4443 panic\("filedup"\);) 113.5814 Tj 0 -446.1879 Td -(4444 release\(&ftable.lock\);) 126.6869 Tj +(4444 f->ref++;) 69.8962 Tj 0 -455.6813 Td -(4445 return f;) 69.8962 Tj +(4445 release\(&ftable.lock\);) 126.6869 Tj 0 -465.1747 Td -(4446 }) 26.2111 Tj +(4446 return f;) 69.8962 Tj 0 -474.668 Td -(4447 ) 21.8426 Tj +(4447 }) 26.2111 Tj 0 -484.1614 Td (4448 ) 21.8426 Tj 0 -493.6547 Td @@ -15854,7 +15911,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/file.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/file.c Page 2) 161.635 Tj 0 -28.4801 Td (4450 // Close file f. \(Decrement ref count, close when reache\ s 0.\)) 292.6905 Tj @@ -16005,7 +16062,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/file.c Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/file.c Page 3) 161.635 Tj 0 -28.4801 Td (4500 // Read from file f. Addr is kernel address.) 218.4257 Tj 0 -37.9735 Td @@ -16124,7 +16181,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 1) 174.7406 Tj 0 -28.4801 Td (4550 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -16168,7 +16225,8 @@ ruct file.) 318.9016 Tj 0 -208.8539 Td (4569 return -1;) 83.0018 Tj 0 -218.3473 Td -(4570 if\(fd < 0 || fd >= NOFILE || \(f=cp->ofile[fd]\) == 0\)) 257.7424 Tj +(4570 if\(fd < 0 || fd >= NOFILE || \(f=proc->ofile[fd]\) == 0\ +\)) 266.4794 Tj 0 -227.8407 Td (4571 return -1;) 83.0018 Tj 0 -237.334 Td @@ -16202,9 +16260,9 @@ ruct file.) 318.9016 Tj 0 -370.2411 Td (4586 for\(fd = 0; fd < NOFILE; fd++\){) 166.0035 Tj 0 -379.7344 Td -(4587 if\(cp->ofile[fd] == 0\){) 139.7925 Tj +(4587 if\(proc->ofile[fd] == 0\){) 148.5295 Tj 0 -389.2278 Td -(4588 cp->ofile[fd] = f;) 126.6869 Tj +(4588 proc->ofile[fd] = f;) 135.4239 Tj 0 -398.7211 Td (4589 return fd;) 91.7388 Tj 0 -408.2145 Td @@ -16276,7 +16334,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 2) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 2) 174.7406 Tj 0 -28.4801 Td (4600 int) 34.9481 Tj 0 -37.9735 Td @@ -16372,7 +16430,7 @@ tr\(1, &p, n\) < 0\)) 327.6386 Tj 0 -455.6813 Td (4645 return -1;) 83.0018 Tj 0 -465.1747 Td -(4646 cp->ofile[fd] = 0;) 109.2129 Tj +(4646 proc->ofile[fd] = 0;) 117.9499 Tj 0 -474.668 Td (4647 fileclose\(f\);) 87.3703 Tj 0 -484.1614 Td @@ -16397,7 +16455,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 3) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 3) 174.7406 Tj 0 -28.4801 Td (4650 int) 34.9481 Tj 0 -37.9735 Td @@ -16549,7 +16607,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 4) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 4) 174.7406 Tj 0 -28.4801 Td (4700 // Is the directory dp empty except for "." and ".." ?) 257.7424 Tj 0 -37.9735 Td @@ -16670,7 +16728,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 5) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 5) 174.7406 Tj 0 -28.4801 Td (4750 int) 34.9481 Tj 0 -37.9735 Td @@ -16822,7 +16880,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 6) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 6) 174.7406 Tj 0 -28.4801 Td (4800 static struct inode*) 109.2129 Tj 0 -37.9735 Td @@ -16942,7 +17000,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 7) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 7) 174.7406 Tj 0 -28.4801 Td (4850 int) 34.9481 Tj 0 -37.9735 Td @@ -17094,7 +17152,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 8) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 8) 174.7406 Tj 0 -28.4801 Td (4900 int) 34.9481 Tj 0 -37.9735 Td @@ -17184,9 +17242,9 @@ q 0 -427.2012 Td (4942 iunlock\(ip\);) 83.0018 Tj 0 -436.6946 Td -(4943 iput\(cp->cwd\);) 91.7388 Tj +(4943 iput\(proc->cwd\);) 100.4758 Tj 0 -446.1879 Td -(4944 cp->cwd = ip;) 87.3703 Tj +(4944 proc->cwd = ip;) 96.1073 Tj 0 -455.6813 Td (4945 return 0;) 69.8962 Tj 0 -465.1747 Td @@ -17215,7 +17273,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sysfile.c Page 9) 174.7406 Tj +(Aug 30 21:46 2009 xv6/sysfile.c Page 9) 174.7406 Tj 0 -28.4801 Td (4950 int) 34.9481 Tj 0 -37.9735 Td @@ -17244,7 +17302,7 @@ q 0 -142.4004 Td (4962 return -1;) 91.7388 Tj 0 -151.8938 Td -(4963 if\(fetchint\(cp, uargv+4*i, \(int*\)&uarg\) < 0\)) 231.5313 Tj +(4963 if\(fetchint\(proc, uargv+4*i, \(int*\)&uarg\) < 0\)) 240.2683 Tj 0 -161.3871 Td (4964 return -1;) 91.7388 Tj 0 -170.8805 Td @@ -17256,7 +17314,7 @@ q 0 -199.3606 Td (4968 }) 43.6851 Tj 0 -208.8539 Td -(4969 if\(fetchstr\(cp, uarg, &argv[i]\) < 0\)) 196.5831 Tj +(4969 if\(fetchstr\(proc, uarg, &argv[i]\) < 0\)) 205.3202 Tj 0 -218.3473 Td (4970 return -1;) 91.7388 Tj 0 -227.8407 Td @@ -17297,7 +17355,7 @@ q 0 -389.2278 Td (4988 if\(fd0 >= 0\)) 91.7388 Tj 0 -398.7211 Td -(4989 cp->ofile[fd0] = 0;) 131.0554 Tj +(4989 proc->ofile[fd0] = 0;) 139.7925 Tj 0 -408.2145 Td (4990 fileclose\(rf\);) 100.4758 Tj 0 -417.7079 Td @@ -17367,7 +17425,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/exec.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/exec.c Page 1) 161.635 Tj 0 -28.4801 Td (5000 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -17395,7 +17453,7 @@ q 0 -142.4004 Td (5012 int i, argc, arglen, len, off;) 161.635 Tj 0 -151.8938 Td -(5013 uint sz, sp, argp, x;) 122.3184 Tj +(5013 uint sz, sp, argp;) 109.2129 Tj 0 -161.3871 Td (5014 struct elfhdr elf;) 109.2129 Tj 0 -170.8805 Td @@ -17489,7 +17547,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/exec.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/exec.c Page 2) 161.635 Tj 0 -28.4801 Td (5050 sz += 4; // argv) 104.8443 Tj 0 -37.9735 Td @@ -17643,7 +17701,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/exec.c Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/exec.c Page 3) 161.635 Tj 0 -28.4801 Td (5100 // Save program name for debugging.) 183.4776 Tj 0 -37.9735 Td @@ -17653,21 +17711,21 @@ q 0 -56.9602 Td (5103 last = s+1;) 96.1073 Tj 0 -66.4535 Td -(5104 safestrcpy\(cp->name, last, sizeof\(cp->name\)\);) 227.1628 Tj +(5104 safestrcpy\(proc->name, last, sizeof\(proc->name\)\);) 244.6368 Tj 0 -75.9469 Td (5105 ) 21.8426 Tj 0 -85.4403 Td (5106 // Commit to the new image.) 148.5295 Tj 0 -94.9336 Td -(5107 kfree\(cp->mem, cp->sz\);) 131.0554 Tj +(5107 kfree\(proc->mem, proc->sz\);) 148.5295 Tj 0 -104.427 Td -(5108 cp->mem = mem;) 91.7388 Tj +(5108 proc->mem = mem;) 100.4758 Tj 0 -113.9203 Td -(5109 cp->sz = sz;) 83.0018 Tj +(5109 proc->sz = sz;) 91.7388 Tj 0 -123.4137 Td -(5110 cp->tf->eip = elf.entry; // main) 174.7406 Tj +(5110 proc->tf->eip = elf.entry; // main) 183.4776 Tj 0 -132.9071 Td -(5111 cp->tf->esp = sp;) 104.8443 Tj +(5111 proc->tf->esp = sp;) 113.5814 Tj 0 -142.4004 Td (5112 usegment\(\);) 78.6333 Tj 0 -151.8938 Td @@ -17762,7 +17820,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/pipe.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/pipe.c Page 1) 161.635 Tj 0 -28.4801 Td (5150 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -17774,86 +17832,86 @@ q 0 -66.4535 Td (5154 #include "proc.h") 96.1073 Tj 0 -75.9469 Td -(5155 #include "file.h") 96.1073 Tj +(5155 #include "fs.h") 87.3703 Tj 0 -85.4403 Td -(5156 #include "spinlock.h") 113.5814 Tj +(5156 #include "file.h") 96.1073 Tj 0 -94.9336 Td -(5157 ) 21.8426 Tj +(5157 #include "spinlock.h") 113.5814 Tj 0 -104.427 Td -(5158 #define PIPESIZE 512) 109.2129 Tj +(5158 ) 21.8426 Tj 0 -113.9203 Td -(5159 ) 21.8426 Tj +(5159 #define PIPESIZE 512) 109.2129 Tj 0 -123.4137 Td -(5160 struct pipe {) 78.6333 Tj +(5160 ) 21.8426 Tj 0 -132.9071 Td -(5161 struct spinlock lock;) 122.3184 Tj +(5161 struct pipe {) 78.6333 Tj 0 -142.4004 Td -(5162 char data[PIPESIZE];) 117.9499 Tj +(5162 struct spinlock lock;) 122.3184 Tj 0 -151.8938 Td -(5163 uint nread; // number of bytes read) 200.9517 Tj +(5163 char data[PIPESIZE];) 117.9499 Tj 0 -161.3871 Td -(5164 uint nwrite; // number of bytes written) 214.0572 Tj +(5164 uint nread; // number of bytes read) 200.9517 Tj 0 -170.8805 Td -(5165 int readopen; // read fd is still open) 205.3202 Tj +(5165 uint nwrite; // number of bytes written) 214.0572 Tj 0 -180.3739 Td -(5166 int writeopen; // write fd is still open) 209.6887 Tj +(5166 int readopen; // read fd is still open) 205.3202 Tj 0 -189.8672 Td -(5167 };) 30.5796 Tj +(5167 int writeopen; // write fd is still open) 209.6887 Tj 0 -199.3606 Td -(5168 ) 21.8426 Tj +(5168 };) 30.5796 Tj 0 -208.8539 Td -(5169 int) 34.9481 Tj +(5169 ) 21.8426 Tj 0 -218.3473 Td -(5170 pipealloc\(struct file **f0, struct file **f1\)) 218.4257 Tj +(5170 int) 34.9481 Tj 0 -227.8407 Td -(5171 {) 26.2111 Tj +(5171 pipealloc\(struct file **f0, struct file **f1\)) 218.4257 Tj 0 -237.334 Td -(5172 struct pipe *p;) 96.1073 Tj +(5172 {) 26.2111 Tj 0 -246.8274 Td -(5173 ) 21.8426 Tj +(5173 struct pipe *p;) 96.1073 Tj 0 -256.3207 Td -(5174 p = 0;) 56.7907 Tj +(5174 ) 21.8426 Tj 0 -265.8141 Td -(5175 *f0 = *f1 = 0;) 91.7388 Tj +(5175 p = 0;) 56.7907 Tj 0 -275.3075 Td -(5176 if\(\(*f0 = filealloc\(\)\) == 0 || \(*f1 = filealloc\(\)\ -\) == 0\)) 275.2164 Tj +(5176 *f0 = *f1 = 0;) 91.7388 Tj 0 -284.8008 Td -(5177 goto bad;) 78.6333 Tj +(5177 if\(\(*f0 = filealloc\(\)\) == 0 || \(*f1 = filealloc\(\)\ +\) == 0\)) 275.2164 Tj 0 -294.2942 Td -(5178 if\(\(p = \(struct pipe*\)kalloc\(PAGE\)\) == 0\)) 209.6887 Tj +(5178 goto bad;) 78.6333 Tj 0 -303.7875 Td -(5179 goto bad;) 78.6333 Tj +(5179 if\(\(p = \(struct pipe*\)kalloc\(PAGE\)\) == 0\)) 209.6887 Tj 0 -313.2809 Td -(5180 p->readopen = 1;) 100.4758 Tj +(5180 goto bad;) 78.6333 Tj 0 -322.7743 Td -(5181 p->writeopen = 1;) 104.8443 Tj +(5181 p->readopen = 1;) 100.4758 Tj 0 -332.2676 Td -(5182 p->nwrite = 0;) 91.7388 Tj +(5182 p->writeopen = 1;) 104.8443 Tj 0 -341.761 Td -(5183 p->nread = 0;) 87.3703 Tj +(5183 p->nwrite = 0;) 91.7388 Tj 0 -351.2543 Td -(5184 initlock\(&p->lock, "pipe"\);) 148.5295 Tj +(5184 p->nread = 0;) 87.3703 Tj 0 -360.7477 Td -(5185 \(*f0\)->type = FD_PIPE;) 126.6869 Tj +(5185 initlock\(&p->lock, "pipe"\);) 148.5295 Tj 0 -370.2411 Td -(5186 \(*f0\)->readable = 1;) 117.9499 Tj +(5186 \(*f0\)->type = FD_PIPE;) 126.6869 Tj 0 -379.7344 Td -(5187 \(*f0\)->writable = 0;) 117.9499 Tj +(5187 \(*f0\)->readable = 1;) 117.9499 Tj 0 -389.2278 Td -(5188 \(*f0\)->pipe = p;) 100.4758 Tj +(5188 \(*f0\)->writable = 0;) 117.9499 Tj 0 -398.7211 Td -(5189 \(*f1\)->type = FD_PIPE;) 126.6869 Tj +(5189 \(*f0\)->pipe = p;) 100.4758 Tj 0 -408.2145 Td -(5190 \(*f1\)->readable = 0;) 117.9499 Tj +(5190 \(*f1\)->type = FD_PIPE;) 126.6869 Tj 0 -417.7079 Td -(5191 \(*f1\)->writable = 1;) 117.9499 Tj +(5191 \(*f1\)->readable = 0;) 117.9499 Tj 0 -427.2012 Td -(5192 \(*f1\)->pipe = p;) 100.4758 Tj +(5192 \(*f1\)->writable = 1;) 117.9499 Tj 0 -436.6946 Td -(5193 return 0;) 69.8962 Tj +(5193 \(*f1\)->pipe = p;) 100.4758 Tj 0 -446.1879 Td -(5194 ) 21.8426 Tj +(5194 return 0;) 69.8962 Tj 0 -455.6813 Td (5195 ) 21.8426 Tj 0 -465.1747 Td @@ -17913,7 +17971,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/pipe.c Page 2) 161.635 Tj +(Aug 30 21:46 2009 xv6/pipe.c Page 2) 161.635 Tj 0 -28.4801 Td (5200 bad:) 43.6851 Tj 0 -37.9735 Td @@ -17989,7 +18047,7 @@ q 0 -370.2411 Td (5236 while\(p->nwrite == p->nread + PIPESIZE\) { ) 227.1628 Tj 0 -379.7344 Td -(5237 if\(p->readopen == 0 || cp->killed\){) 200.9517 Tj +(5237 if\(p->readopen == 0 || proc->killed\){) 209.6887 Tj 0 -389.2278 Td (5238 release\(&p->lock\);) 135.4239 Tj 0 -398.7211 Td @@ -18032,7 +18090,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/pipe.c Page 3) 161.635 Tj +(Aug 30 21:46 2009 xv6/pipe.c Page 3) 161.635 Tj 0 -28.4801 Td (5250 int) 34.9481 Tj 0 -37.9735 Td @@ -18048,7 +18106,7 @@ q 0 -85.4403 Td (5256 while\(p->nread == p->nwrite && p->writeopen\){ ) 235.8998 Tj 0 -94.9336 Td -(5257 if\(cp->killed\){) 104.8443 Tj +(5257 if\(proc->killed\){) 113.5814 Tj 0 -104.427 Td (5258 release\(&p->lock\);) 126.6869 Tj 0 -113.9203 Td @@ -18182,7 +18240,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/string.c Page 1) 170.3721 Tj +(Aug 30 21:46 2009 xv6/string.c Page 1) 170.3721 Tj 0 -28.4801 Td (5300 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -18301,7 +18359,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/string.c Page 2) 170.3721 Tj +(Aug 30 21:46 2009 xv6/string.c Page 2) 170.3721 Tj 0 -28.4801 Td (5350 int) 34.9481 Tj 0 -37.9735 Td @@ -18451,7 +18509,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mp.h Page 1) 152.898 Tj +(Aug 30 21:46 2009 xv6/mp.h Page 1) 152.898 Tj 0 -28.4801 Td (5400 // See MultiProcessor Specification Version 1.[14]) 240.2683 Tj 0 -37.9735 Td @@ -18575,7 +18633,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mp.h Page 2) 152.898 Tj +(Aug 30 21:46 2009 xv6/mp.h Page 2) 152.898 Tj 0 -28.4801 Td (5450 // Table entry types) 109.2129 Tj 0 -37.9735 Td @@ -18725,7 +18783,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mp.c Page 1) 152.898 Tj +(Aug 30 21:46 2009 xv6/mp.c Page 1) 152.898 Tj 0 -28.4801 Td (5500 // Multiprocessor bootstrap.) 144.161 Tj 0 -37.9735 Td @@ -18846,7 +18904,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mp.c Page 2) 152.898 Tj +(Aug 30 21:46 2009 xv6/mp.c Page 2) 152.898 Tj 0 -28.4801 Td (5550 // Search for the MP Floating Pointer Structure, which acc\ ording to the) 332.0071 Tj @@ -18999,7 +19057,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/mp.c Page 3) 152.898 Tj +(Aug 30 21:46 2009 xv6/mp.c Page 3) 152.898 Tj 0 -28.4801 Td (5600 void) 39.3166 Tj 0 -37.9735 Td @@ -19019,90 +19077,91 @@ q 0 -104.427 Td (5608 ) 21.8426 Tj 0 -113.9203 Td -(5609 bcpu = &cpus[ncpu];) 113.5814 Tj +(5609 bcpu = &cpus[0];) 100.4758 Tj 0 -123.4137 Td (5610 if\(\(conf = mpconfig\(&mp\)\) == 0\)) 166.0035 Tj 0 -132.9071 Td (5611 return;) 69.8962 Tj 0 -142.4004 Td -(5612 ) 21.8426 Tj +(5612 ismp = 1;) 69.8962 Tj 0 -151.8938 Td -(5613 ismp = 1;) 69.8962 Tj +(5613 lapic = \(uint*\)conf->lapicaddr;) 166.0035 Tj 0 -161.3871 Td -(5614 lapic = \(uint*\)conf->lapicaddr;) 166.0035 Tj -0 -170.8805 Td -(5615 ) 21.8426 Tj -0 -180.3739 Td -(5616 for\(p=\(uchar*\)\(conf+1\), e=\(uchar*\)conf+conf->leng\ +(5614 for\(p=\(uchar*\)\(conf+1\), e=\(uchar*\)conf+conf->leng\ th; papicid\) {) 161.635 Tj 0 -208.8539 Td -(5619 proc = \(struct mpproc*\)p;) 157.2665 Tj +(5619 cprintf\("mpinit: ncpu=%d apicpid=%d", ncpu, proc-\ +>apicid\);) 310.1645 Tj 0 -218.3473 Td -(5620 cpus[ncpu].apicid = proc->apicid;) 192.2146 Tj +(5620 panic\("mpinit"\);) 126.6869 Tj 0 -227.8407 Td -(5621 if\(proc->flags & MPBOOT\)) 152.898 Tj +(5621 }) 52.4222 Tj 0 -237.334 Td -(5622 bcpu = &cpus[ncpu];) 139.7925 Tj +(5622 if\(proc->flags & MPBOOT\)) 152.898 Tj 0 -246.8274 Td -(5623 ncpu++;) 78.6333 Tj +(5623 bcpu = &cpus[ncpu];) 139.7925 Tj 0 -256.3207 Td -(5624 p += sizeof\(struct mpproc\);) 166.0035 Tj +(5624 cpus[ncpu].id = ncpu;) 139.7925 Tj 0 -265.8141 Td -(5625 continue;) 87.3703 Tj +(5625 ncpu++;) 78.6333 Tj 0 -275.3075 Td -(5626 case MPIOAPIC:) 100.4758 Tj +(5626 p += sizeof\(struct mpproc\);) 166.0035 Tj 0 -284.8008 Td -(5627 ioapic = \(struct mpioapic*\)p;) 174.7406 Tj +(5627 continue;) 87.3703 Tj 0 -294.2942 Td -(5628 ioapicid = ioapic->apicno;) 161.635 Tj +(5628 case MPIOAPIC:) 100.4758 Tj 0 -303.7875 Td -(5629 p += sizeof\(struct mpioapic\);) 174.7406 Tj +(5629 ioapic = \(struct mpioapic*\)p;) 174.7406 Tj 0 -313.2809 Td -(5630 continue;) 87.3703 Tj +(5630 ioapicid = ioapic->apicno;) 161.635 Tj 0 -322.7743 Td -(5631 case MPBUS:) 87.3703 Tj +(5631 p += sizeof\(struct mpioapic\);) 174.7406 Tj 0 -332.2676 Td -(5632 case MPIOINTR:) 100.4758 Tj +(5632 continue;) 87.3703 Tj 0 -341.761 Td -(5633 case MPLINTR:) 96.1073 Tj +(5633 case MPBUS:) 87.3703 Tj 0 -351.2543 Td -(5634 p += 8;) 78.6333 Tj +(5634 case MPIOINTR:) 100.4758 Tj 0 -360.7477 Td -(5635 continue;) 87.3703 Tj +(5635 case MPLINTR:) 96.1073 Tj 0 -370.2411 Td -(5636 default:) 74.2647 Tj +(5636 p += 8;) 78.6333 Tj 0 -379.7344 Td -(5637 cprintf\("mpinit: unknown config type %x\\n", *p\);) 257.7424 Tj +(5637 continue;) 87.3703 Tj 0 -389.2278 Td -(5638 panic\("mpinit"\);) 117.9499 Tj +(5638 default:) 74.2647 Tj 0 -398.7211 Td -(5639 }) 43.6851 Tj +(5639 cprintf\("mpinit: unknown config type %x\\n", *p\);) 257.7424 Tj 0 -408.2145 Td -(5640 }) 34.9481 Tj +(5640 panic\("mpinit"\);) 117.9499 Tj 0 -417.7079 Td -(5641 ) 21.8426 Tj +(5641 }) 43.6851 Tj 0 -427.2012 Td -(5642 if\(mp->imcrp\){) 91.7388 Tj +(5642 }) 34.9481 Tj 0 -436.6946 Td -(5643 // Bochs doesn't support IMCR, so this doesn't run on \ -Bochs.) 301.4275 Tj +(5643 if\(mp->imcrp\){) 91.7388 Tj 0 -446.1879 Td -(5644 // But it would on real hardware.) 183.4776 Tj +(5644 // Bochs doesn't support IMCR, so this doesn't run on \ +Bochs.) 301.4275 Tj 0 -455.6813 Td -(5645 outb\(0x22, 0x70\); // Select IMCR) 187.8461 Tj +(5645 // But it would on real hardware.) 183.4776 Tj 0 -465.1747 Td -(5646 outb\(0x23, inb\(0x23\) | 1\); // Mask external inter\ -rupts.) 283.9534 Tj +(5646 outb\(0x22, 0x70\); // Select IMCR) 187.8461 Tj 0 -474.668 Td -(5647 }) 34.9481 Tj +(5647 outb\(0x23, inb\(0x23\) | 1\); // Mask external inter\ +rupts.) 283.9534 Tj 0 -484.1614 Td -(5648 }) 26.2111 Tj +(5648 }) 34.9481 Tj 0 -493.6547 Td -(5649 ) 21.8426 Tj +(5649 }) 26.2111 Tj 0 -522.1348 Td (Sheet 56) 34.9481 Tj Q @@ -19121,7 +19180,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/lapic.c Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/lapic.c Page 1) 166.0035 Tj 0 -28.4801 Td (5650 // The local APIC manages internal \(non-I/O\) interrupts.) 266.4794 Tj 0 -37.9735 Td @@ -19282,7 +19341,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/lapic.c Page 2) 166.0035 Tj +(Aug 30 21:46 2009 xv6/lapic.c Page 2) 166.0035 Tj 0 -28.4801 Td (5700 void) 39.3166 Tj 0 -37.9735 Td @@ -19405,11 +19464,11 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/lapic.c Page 3) 166.0035 Tj +(Aug 30 21:46 2009 xv6/lapic.c Page 3) 166.0035 Tj 0 -28.4801 Td (5750 int) 34.9481 Tj 0 -37.9735 Td -(5751 cpu\(void\)) 61.1592 Tj +(5751 cpunum\(void\)) 74.2647 Tj 0 -47.4668 Td (5752 {) 26.2111 Tj 0 -56.9602 Td @@ -19558,7 +19617,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/lapic.c Page 4) 166.0035 Tj +(Aug 30 21:46 2009 xv6/lapic.c Page 4) 166.0035 Tj 0 -28.4801 Td (5800 #define IO_RTC 0x70) 109.2129 Tj 0 -37.9735 Td @@ -19686,7 +19745,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ioapic.c Page 1) 170.3721 Tj +(Aug 30 21:46 2009 xv6/ioapic.c Page 1) 170.3721 Tj 0 -28.4801 Td (5850 // The I/O APIC manages hardware interrupts for an SMP sys\ tem.) 292.6905 Tj @@ -19845,7 +19904,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/ioapic.c Page 2) 170.3721 Tj +(Aug 30 21:46 2009 xv6/ioapic.c Page 2) 170.3721 Tj 0 -28.4801 Td (5900 void) 39.3166 Tj 0 -37.9735 Td @@ -19967,7 +20026,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/picirq.c Page 1) 170.3721 Tj +(Aug 30 21:46 2009 xv6/picirq.c Page 1) 170.3721 Tj 0 -28.4801 Td (5950 // Intel 8259A programmable interrupt controllers.) 240.2683 Tj 0 -37.9735 Td @@ -20120,7 +20179,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/picirq.c Page 2) 170.3721 Tj +(Aug 30 21:46 2009 xv6/picirq.c Page 2) 170.3721 Tj 0 -28.4801 Td (6000 // ICW3: \(master PIC\) bit mask of IR lines connected \ to slaves) 305.796 Tj @@ -20245,7 +20304,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/picirq.c Page 3) 170.3721 Tj +(Aug 30 21:46 2009 xv6/picirq.c Page 3) 170.3721 Tj 0 -28.4801 Td (6050 // Blank page.) 83.0018 Tj 0 -37.9735 Td @@ -20395,7 +20454,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kbd.h Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/kbd.h Page 1) 157.2665 Tj 0 -28.4801 Td (6100 // PC keyboard interface constants) 170.3721 Tj 0 -37.9735 Td @@ -20515,7 +20574,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kbd.h Page 2) 157.2665 Tj +(Aug 30 21:46 2009 xv6/kbd.h Page 2) 157.2665 Tj 0 -28.4801 Td (6150 static uchar normalmap[256] =) 148.5295 Tj 0 -37.9735 Td @@ -20665,7 +20724,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kbd.h Page 3) 157.2665 Tj +(Aug 30 21:46 2009 xv6/kbd.h Page 3) 157.2665 Tj 0 -28.4801 Td (6200 static uchar ctlmap[256] =) 135.4239 Tj 0 -37.9735 Td @@ -20791,7 +20850,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/kbd.c Page 1) 157.2665 Tj +(Aug 30 21:46 2009 xv6/kbd.c Page 1) 157.2665 Tj 0 -28.4801 Td (6250 #include "types.h") 100.4758 Tj 0 -37.9735 Td @@ -20941,7 +21000,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 1) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 1) 174.7406 Tj 0 -28.4801 Td (6300 // Console input and output.) 144.161 Tj 0 -37.9735 Td @@ -20961,85 +21020,85 @@ q 0 -104.427 Td (6308 #include "spinlock.h") 113.5814 Tj 0 -113.9203 Td -(6309 #include "file.h") 96.1073 Tj +(6309 #include "fs.h") 87.3703 Tj 0 -123.4137 Td -(6310 #include "mmu.h") 91.7388 Tj +(6310 #include "file.h") 96.1073 Tj 0 -132.9071 Td -(6311 #include "proc.h") 96.1073 Tj +(6311 #include "mmu.h") 91.7388 Tj 0 -142.4004 Td -(6312 #include "x86.h") 91.7388 Tj +(6312 #include "proc.h") 96.1073 Tj 0 -151.8938 Td -(6313 ) 21.8426 Tj +(6313 #include "x86.h") 91.7388 Tj 0 -161.3871 Td -(6314 static void consputc\(int\);) 135.4239 Tj +(6314 ) 21.8426 Tj 0 -170.8805 Td -(6315 ) 21.8426 Tj +(6315 static void consputc\(int\);) 135.4239 Tj 0 -180.3739 Td -(6316 static int panicked = 0;) 126.6869 Tj +(6316 ) 21.8426 Tj 0 -189.8672 Td -(6317 ) 21.8426 Tj +(6317 static int panicked = 0;) 126.6869 Tj 0 -199.3606 Td -(6318 static struct {) 87.3703 Tj +(6318 ) 21.8426 Tj 0 -208.8539 Td -(6319 ) 21.8426 Tj --1504.73 TJm -(struct spinlock lock;) 91.7388 Tj +(6319 static struct {) 87.3703 Tj 0 -218.3473 Td (6320 ) 21.8426 Tj -1504.73 TJm -(int locking;) 52.4222 Tj +(struct spinlock lock;) 91.7388 Tj 0 -227.8407 Td -(6321 } cons;) 52.4222 Tj +(6321 ) 21.8426 Tj +-1504.73 TJm +(int locking;) 52.4222 Tj 0 -237.334 Td -(6322 ) 21.8426 Tj +(6322 } cons;) 52.4222 Tj 0 -246.8274 Td -(6323 static void) 69.8962 Tj +(6323 ) 21.8426 Tj 0 -256.3207 Td -(6324 printint\(int xx, int base, int sgn\)) 174.7406 Tj +(6324 static void) 69.8962 Tj 0 -265.8141 Td -(6325 {) 26.2111 Tj +(6325 printint\(int xx, int base, int sgn\)) 174.7406 Tj 0 -275.3075 Td -(6326 static char digits[] = "0123456789abcdef";) 214.0572 Tj +(6326 {) 26.2111 Tj 0 -284.8008 Td -(6327 char buf[16];) 87.3703 Tj +(6327 static char digits[] = "0123456789abcdef";) 214.0572 Tj 0 -294.2942 Td -(6328 int i = 0, neg = 0;) 113.5814 Tj +(6328 char buf[16];) 87.3703 Tj 0 -303.7875 Td -(6329 uint x;) 61.1592 Tj +(6329 int i = 0, neg = 0;) 113.5814 Tj 0 -313.2809 Td -(6330 ) 21.8426 Tj +(6330 uint x;) 61.1592 Tj 0 -322.7743 Td -(6331 if\(sgn && xx < 0\){) 109.2129 Tj +(6331 ) 21.8426 Tj 0 -332.2676 Td -(6332 neg = 1;) 74.2647 Tj +(6332 if\(sgn && xx < 0\){) 109.2129 Tj 0 -341.761 Td -(6333 x = -xx;) 74.2647 Tj +(6333 neg = 1;) 74.2647 Tj 0 -351.2543 Td -(6334 } else) 56.7907 Tj +(6334 x = -xx;) 74.2647 Tj 0 -360.7477 Td -(6335 x = xx;) 69.8962 Tj +(6335 } else) 56.7907 Tj 0 -370.2411 Td -(6336 ) 21.8426 Tj +(6336 x = xx;) 69.8962 Tj 0 -379.7344 Td -(6337 do{) 43.6851 Tj +(6337 ) 21.8426 Tj 0 -389.2278 Td -(6338 buf[i++] = digits[x % base];) 161.635 Tj +(6338 do{) 43.6851 Tj 0 -398.7211 Td -(6339 }while\(\(x /= base\) != 0\);) 139.7925 Tj +(6339 buf[i++] = digits[x % base];) 161.635 Tj 0 -408.2145 Td -(6340 if\(neg\)) 61.1592 Tj +(6340 }while\(\(x /= base\) != 0\);) 139.7925 Tj 0 -417.7079 Td -(6341 buf[i++] = '-';) 104.8443 Tj +(6341 if\(neg\)) 61.1592 Tj 0 -427.2012 Td -(6342 ) 21.8426 Tj +(6342 buf[i++] = '-';) 104.8443 Tj 0 -436.6946 Td -(6343 while\(--i >= 0\)) 96.1073 Tj +(6343 ) 21.8426 Tj 0 -446.1879 Td -(6344 consputc\(buf[i]\);) 113.5814 Tj +(6344 while\(--i >= 0\)) 96.1073 Tj 0 -455.6813 Td -(6345 }) 26.2111 Tj +(6345 consputc\(buf[i]\);) 113.5814 Tj 0 -465.1747 Td -(6346 ) 21.8426 Tj +(6346 }) 26.2111 Tj 0 -474.668 Td (6347 ) 21.8426 Tj 0 -484.1614 Td @@ -21064,7 +21123,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 2) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 2) 174.7406 Tj 0 -28.4801 Td (6350 // Print to the console. only understands %d, %x, %p, %s.) 270.8479 Tj 0 -37.9735 Td @@ -21090,7 +21149,7 @@ q 0 -132.9071 Td (6361 ) 21.8426 Tj 0 -142.4004 Td -(6362 argp = \(uint*\)\(void*\)&fmt + 1;) 161.635 Tj +(6362 argp = \(uint*\)\(void*\)\(&fmt + 1\);) 170.3721 Tj 0 -151.8938 Td (6363 state = 0;) 74.2647 Tj 0 -161.3871 Td @@ -21214,7 +21273,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 3) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 3) 174.7406 Tj 0 -28.4801 Td (6400 void) 39.3166 Tj 0 -37.9735 Td @@ -21232,7 +21291,7 @@ q 0 -94.9336 Td (6407 cons.locking = 0;) 104.8443 Tj 0 -104.427 Td -(6408 cprintf\("cpu%d: panic: ", cpu\(\)\);) 174.7406 Tj +(6408 cprintf\("cpu%d: panic: ", cpu->id\);) 183.4776 Tj 0 -113.9203 Td (6409 cprintf\(s\);) 78.6333 Tj 0 -123.4137 Td @@ -21333,7 +21392,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 4) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 4) 174.7406 Tj 0 -28.4801 Td (6450 #define BACKSPACE 0x100) 122.3184 Tj 0 -37.9735 Td @@ -21484,7 +21543,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 5) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 5) 174.7406 Tj 0 -28.4801 Td (6500 #define INPUT_BUF 128) 113.5814 Tj 0 -37.9735 Td @@ -21605,7 +21664,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 6) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 6) 174.7406 Tj 0 -28.4801 Td (6550 int) 34.9481 Tj 0 -37.9735 Td @@ -21629,7 +21688,7 @@ q 0 -123.4137 Td (6560 while\(input.r == input.w\){) 152.898 Tj 0 -132.9071 Td -(6561 if\(cp->killed\){) 113.5814 Tj +(6561 if\(proc->killed\){) 122.3184 Tj 0 -142.4004 Td (6562 release\(&input.lock\);) 148.5295 Tj 0 -151.8938 Td @@ -21755,7 +21814,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/console.c Page 7) 174.7406 Tj +(Aug 30 21:46 2009 xv6/console.c Page 7) 174.7406 Tj 0 -28.4801 Td (6600 int) 34.9481 Tj 0 -37.9735 Td @@ -21874,7 +21933,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/timer.c Page 1) 166.0035 Tj +(Aug 30 21:46 2009 xv6/timer.c Page 1) 166.0035 Tj 0 -28.4801 Td (6650 // Intel 8253/8254/82C54 Programmable Interval Timer \(PIT\ \).) 279.5849 Tj @@ -22028,7 +22087,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/initcode.S Page 1) 179.1091 Tj +(Aug 30 21:46 2009 xv6/initcode.S Page 1) 179.1091 Tj 0 -28.4801 Td (6700 # Initial process execs /init.) 152.898 Tj 0 -37.9735 Td @@ -22147,7 +22206,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/usys.S Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/usys.S Page 1) 161.635 Tj 0 -28.4801 Td (6750 #include "syscall.h") 109.2129 Tj 0 -37.9735 Td @@ -22297,7 +22356,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/init.c Page 1) 161.635 Tj +(Aug 30 21:46 2009 xv6/init.c Page 1) 161.635 Tj 0 -28.4801 Td (6800 // init: The initial user-level program) 192.2146 Tj 0 -37.9735 Td @@ -22416,7 +22475,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 1) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 1) 152.898 Tj 0 -28.4801 Td (6850 // Shell.) 61.1592 Tj 0 -37.9735 Td @@ -22566,7 +22625,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 2) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 2) 152.898 Tj 0 -28.4801 Td (6900 int fork1\(void\); // Fork but panics on failure.) 231.5313 Tj 0 -37.9735 Td @@ -22685,7 +22744,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 3) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 3) 152.898 Tj 0 -28.4801 Td (6950 case PIPE:) 74.2647 Tj 0 -37.9735 Td @@ -22835,7 +22894,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 4) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 4) 152.898 Tj 0 -28.4801 Td (7000 int) 34.9481 Tj 0 -37.9735 Td @@ -22955,7 +23014,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 5) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 5) 152.898 Tj 0 -28.4801 Td (7050 // Constructors) 87.3703 Tj 0 -37.9735 Td @@ -23106,7 +23165,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 6) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 6) 152.898 Tj 0 -28.4801 Td (7100 struct cmd*) 69.8962 Tj 0 -37.9735 Td @@ -23225,7 +23284,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 7) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 7) 152.898 Tj 0 -28.4801 Td (7150 // Parsing) 65.5277 Tj 0 -37.9735 Td @@ -23376,7 +23435,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 8) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 8) 152.898 Tj 0 -28.4801 Td (7200 int) 34.9481 Tj 0 -37.9735 Td @@ -23495,7 +23554,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 9) 152.898 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 9) 152.898 Tj 0 -28.4801 Td (7250 struct cmd*) 69.8962 Tj 0 -37.9735 Td @@ -23645,7 +23704,7 @@ q [0 -0.9679 1 0 564.72 738.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 10) 157.2665 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 10) 157.2665 Tj 0 -28.4801 Td (7300 struct cmd*) 69.8962 Tj 0 -37.9735 Td @@ -23764,7 +23823,7 @@ q [0 -0.9679 1 0 564.72 392.865] Tm 0 0 Td /F8_0 8.7022 Tf -(Aug 8 01:04 2009 xv6/sh.c Page 11) 157.2665 Tj +(Aug 30 21:46 2009 xv6/sh.c Page 11) 157.2665 Tj 0 -28.4801 Td (7350 // NUL-terminate all the counted strings.) 200.9517 Tj 0 -37.9735 Td @@ -23877,5 +23936,5 @@ pdfEndPage %%Trailer end %%DocumentSuppliedResources: -%%+ font YLWBJI+LucidaSans-Typewriter83 +%%+ font APYGPQ+LucidaSans-Typewriter83 %%EOF